Я пытаюсь построить простой RNN Элмана, как описано здесь .
Я построил свою модель с использованием Keras следующим образом:
model = keras.Sequential()
model.add(keras.layers.SimpleRNN(7,activation =None,use_bias=True,input_shape=
[x_train.shape[0],x_train.shape[1]]))
model.add(keras.layers.Dense(7,activation = tf.nn.sigmoid))
model.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
simple_rnn_2 (SimpleRNN) (None, 7) 105
_________________________________________________________________
dense_2 (Dense) (None, 7) 56
=================================================================
Total params: 161
Trainable params: 161
Non-trainable params: 0
_________________________________________________________________
Мои тренировочные данные в настоящее время в форме (15000, 7, 7). То есть 15000 экземпляров длиной 7 одно горячее кодирование, кодирующее одну из семи букв. Например, [0,0,0,1,0,0,0],[0,0,0,0,1,0,0]
и т. Д.
Метки данных имеют одинаковый формат, поскольку каждая буква предсказывает следующую букву в последовательности, т. Е. [0,1,0,0,0,0,0]
имеет метку [0,0,1,0,0,0,0]
.
Итак, данные обучения (x_train)
и метки обучения (y_train)
имеют форму (15000,7,7)
.
Мои данные проверки x_val и y_val имеют форму (10000,7,7)
. Т.е. та же форма, только с меньшим количеством экземпляров.
Итак, когда я запускаю свою модель:
history = model.fit(x_train,
y_train,
epochs = 40,
batch_size=512,
validation_data = (x_val,y_val))
Я получаю ошибку:
ValueError: Error when checking input: expected simple_rnn_7_input to have shape (15000, 7) but got array with shape (7, 7)
Ясно, что мои входные данные неверно отформатированы для ввода в Keras RNN, но я не могу понять, как правильно их ввести.
Может кто-нибудь посоветовать мне решение?