Я пытаюсь подготовить модель, которая будет предсказывать первые два числа из заданного массива чисел.Таким образом, входной набор данных выглядит так -
[1 2 3 5]
[4 8 5 9]
[10 2 3 15]
Выход будет -
[1 2]
[4 8]
[10 2]
Итак, архитектуры RNN такие, как показано ниже (взято из здесь )
Тогда базовая архитектура, которую я пытаюсь достичь, должна быть чем-то близкой к этому -
Итак, это должна быть сеть «многие ко многим».(Напоминает четвертое изображение)
Вопрос - Итак, как я могу создать этот тип модели с Keras?
Мои выводы -
Я пробовал что-то вроде этого -
n_samples = 10000
input = np.random.randint(5,10, (n_samples,5))
output = input[...,0:2]
rinp = input.reshape(n_samples,1,5)
model = Sequential()
model.add(LSTM(10, input_shape=(1,5)))
model.add(Dense(2))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(rinp, output, epochs=1000, batch_size=500, verbose=1)
Но, как вы можете видеть, это даже не близко.Это как MLP.Он не использует никаких временных шагов.Потому что форма ввода - (n_samples,1,5)
.Итак, есть только один временной шаг.
Итак, моя реализация неверна.
Я видел несколько примеров «один-к-одному», «многие-к-одному» и «многие-к-одному»-Многие примеры из здесь .
В примере "многие ко многим" автор использовал следующий фрагмент кода.
length = 5
seq = array([i/float(length) for i in range(length)])
X = seq.reshape(1, length, 1)
y = seq.reshape(1, length, 1)
# define LSTM configuration
n_neurons = length
n_batch = 1
n_epoch = 1000
# create LSTM
model = Sequential()
model.add(LSTM(n_neurons, input_shape=(length, 1), return_sequences=True))
model.add(TimeDistributed(Dense(1)))
model.compile(loss='mean_squared_error', optimizer='adam')
print(model.summary())
# train LSTM
model.fit(X, y, epochs=n_epoch, batch_size=n_batch, verbose=2)
# evaluate
result = model.predict(X, batch_size=n_batch, verbose=0)
for value in result[0,:,0]:
print('%.1f' % value)
Как видно из *При значениях 1048 * и y
описанная модель похожа на приведенную ниже -
Это не та цель, которую я пытаюсь достичь.
Любой пример, касающийся архитектуры, которую я пытаюсь реализовать, был бы очень полезен.