Как исправить "Невозможно обновить переменную с shape [], используя Tensor with shape [1000], формы должны быть одинаковыми". ошибка в сети keras LSTM?
Я пытаюсь создать сеть LSTM с отслеживанием состояния. Я собираюсь использовать алгоритмический поиск гиперпараметров, но до этого он должен работать с параметрами по умолчанию, однако это не так. Я продолжаю получать "tenorsflow.python.framework.errors_impl.InvalidArgumentError: Невозможно обновить переменную с shape [], используя Tensor с shape [1000], формы должны быть равными". и у меня закончились идеи о том, как решить эту проблему.
Создание модели
Кажется, все в порядке.
self.model = Sequential()
self.model.add(Dense(init_dense_nodes,
batch_input_shape=(self.batch_size, None,14)))
# Adding first dense layers
for i in range(init_dense_layers):
self.model.add(Dense(lstm_nodes,
activation=init_dense_activation))
self.model.add(Dropout(dropout))
# Adding LSTM layers
for i in range(lstm_layers):
self.model.add(LSTM(lstm_nodes,
activation=lstm_activation,
return_sequences=True,
stateful=True
))
self.model.add(Dropout(dropout))
self.model.add(LSTM(init_dense_nodes, activation=lstm_activation, return_sequences=False))
# Adding last dense layers
for i in range(last_dense_layers):
self.model.add(Dense(last_dense_nodes,
activation=last_dense_activation))
self.model.add(Dropout(dropout))
self.model.add(Flatten())
self.model.add(Dense(4, activation='linear'))
optimizer = Adam(lr=learning_rate, decay=learning_decay)
self.model.compile(optimizer=optimizer, loss='mean_absolute_error', metrics=['mae'])
print(self.model.summary())
Обучение и тестирование, формы ввода и вывода
Форма входных данных для обучения: (86000, 1, 14) Форма выходных данных для обучения:(86000, 1, 4) Форма входных данных для тестирования: (70000, 1, 14) Форма для выходных данных тестирования: (70000, 1, 4)
Резюме сети:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (1000, None, 128) 1920
_________________________________________________________________
dense_1 (Dense) (1000, None, 128) 16512
_________________________________________________________________
dropout (Dropout) (1000, None, 128) 0
_________________________________________________________________
dense_2 (Dense) (1000, None, 128) 16512
_________________________________________________________________
dropout_1 (Dropout) (1000, None, 128) 0
_________________________________________________________________
dense_3 (Dense) (1000, None, 128) 16512
_________________________________________________________________
dropout_2 (Dropout) (1000, None, 128) 0
_________________________________________________________________
lstm (LSTM) (1000, None, 128) 131584
_________________________________________________________________
dropout_3 (Dropout) (1000, None, 128) 0
_________________________________________________________________
lstm_1 (LSTM) (1000, None, 128) 131584
_________________________________________________________________
dropout_4 (Dropout) (1000, None, 128) 0
_________________________________________________________________
lstm_2 (LSTM) (1000, 128) 131584
_________________________________________________________________
dense_4 (Dense) (1000, 128) 16512
_________________________________________________________________
dropout_5 (Dropout) (1000, 128) 0
_________________________________________________________________
dense_5 (Dense) (1000, 128) 16512
_________________________________________________________________
dropout_6 (Dropout) (1000, 128) 0
_________________________________________________________________
dense_6 (Dense) (1000, 128) 16512
_________________________________________________________________
dropout_7 (Dropout) (1000, 128) 0
_________________________________________________________________
flatten (Flatten) (1000, 128) 0
_________________________________________________________________
dense_7 (Dense) (1000, 4) 516
=================================================================
Total params: 496,260
Trainable params: 496,260
Non-trainable params: 0
_________________________________________________________________
None
Проблема заключается в выполнении этого:
self.model.fit(x=self.train_dataset_x,
y=self.train_dataset_y,
epochs=1,
shuffle=False,
batch_size=self.batch_size,
validation_data=(self.test_dataset_x, self.test_dataset_y))
# The error:
File "Find_HP.py", line 33, in <module>
the_model.fitness(the_model.default_parameters)
File "\Training\Tr_Model\MakeModel.py", line 282, in fitness
self.test_dataset_y))
File "\lib\site-packages\tensorflow\python\keras\engine\training.py", line 880, in fit
validation_steps=validation_steps)
File "\lib\site-packages\tensorflow\python\keras\engine\training_arrays.py", line 329, in model_iteration
batch_outs = f(ins_batch)
File "\lib\site-packages\tensorflow\python\keras\backend.py", line 3076, in __call__
run_metadata=self.run_metadata)
File "\lib\site-packages\tensorflow\python\client\session.py", line 1439, in __call__
run_metadata_ptr)
File "\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 528, in __exit__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot update variable with shape [] using a Tensor with shape [1000], shapes must be equal.
[[{{node metrics/mean_absolute_error/AssignAddVariableOp}}]]
[[{{node loss/mul}}]]
У кого-нибудь есть предложения?