Например, у меня есть двоичные данные, скажем, 0, 0, 0, 1, 1, 0, 1, 1. Это может продолжаться бесконечно.Для каждого входа есть соответствующий выход.Допустим, мы используем операцию XOR.Таким образом, вывод может выглядеть следующим образом: 0, 0, 0, 1, 0, 1, 1, 0.
Как мне сформировать входную форму Keras?Как мне установить временные шаги?Если я объявляю, что временные шаги 1 для каждого 1 временного шага рассматриваются как разные случаи, или он все еще может учитывать предыдущий ввод как последовательность или запомненную память?
Keras использует LSTM или GRU для своего скрытого слоя.
Я пробовал 2 метода для этой проблемы, но ни один из них не удался.Оба метода застряли на 37,5 в соотв.Фактически, он продолжает угадывать 1.
Метод 1:
data = [[[0], [0], [0], [1], [1], [0], [1], [1]]]
output = [[[0], [0], [0], [1], [0], [1], [1], [0]]]
model = Sequential()
model.add(GRU(10, input_shape=(8, 1), return_sequences=True))
model.add(GRU(10, return_sequences=True))
model.add(Dense(1, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['acc'])
model.fit(np.asarray(data), np.asarray(output), epochs=3000)
Метод 2:
data = [[[0]], [[0]], [[0]], [[1]], [[1]], [[0]], [[1]], [[1]]]
output = [[0], [0], [0], [1], [0], [1], [1], [0]]
model = Sequential()
model.add(GRU(10, input_shape=(1, 1), return_sequences=True))
model.add(GRU(10))
model.add(Dense(1, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['acc'])
model.fit(np.asarray(data), np.asarray(output), epochs=300)