Keras InvalidArgumentError Ошибка при указании данных проверки в 'model.fit' - PullRequest
0 голосов
/ 19 июня 2019

Я строю Keras LSTM для решения проблемы Набор данных по цене авокадо Kaggle . Я хочу использовать validation_data параметр Keras 'model.fit() function . Тем не менее, когда я добавляю этот параметр, возникает ошибка InvalidArgumentError, которую у меня возникают при трассировке.

Вот ошибка:

---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-32-565d13c1305e> in <module>
     16     return model
     17 
---> 18 trained_model = build_model()

<ipython-input-32-565d13c1305e> in build_model()
     11     # fit model
     12     es = tf.keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=1)
---> 13     model.fit(train_data, epochs=12000,verbose=0, validation_data = val_data)
     14     # validation_data = (val_data[0], val_data[1])
     15     print(model.summary())

~/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, max_queue_size, workers, use_multiprocessing, **kwargs)
    878           initial_epoch=initial_epoch,
    879           steps_per_epoch=steps_per_epoch,
--> 880           validation_steps=validation_steps)
    881 
    882   def evaluate(self,

~/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, mode, validation_in_fit, **kwargs)
    362           verbose=0,
    363           mode='test',
--> 364           validation_in_fit=True)
    365       if not isinstance(val_results, list):
    366         val_results = [val_results]

~/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, mode, validation_in_fit, **kwargs)
    327 
    328         # Get outputs.
--> 329         batch_outs = f(ins_batch)
    330         if not isinstance(batch_outs, list):
    331           batch_outs = [batch_outs]

~/.local/lib/python3.6/site-packages/tensorflow/python/keras/backend.py in __call__(self, inputs)
   3074 
   3075     fetched = self._callable_fn(*array_vals,
-> 3076                                 run_metadata=self.run_metadata)
   3077     self._call_fetch_callbacks(fetched[-len(self._fetches):])
   3078     return nest.pack_sequence_as(self._outputs_structure,

~/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py in __call__(self, *args, **kwargs)
   1437           ret = tf_session.TF_SessionRunCallable(
   1438               self._session._session, self._handle, args, status,
-> 1439               run_metadata_ptr)
   1440         if run_metadata:
   1441           proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

~/.local/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py in __exit__(self, type_arg, value_arg, traceback_arg)
    526             None, None,
    527             compat.as_text(c_api.TF_Message(self.status.status)),
--> 528             c_api.TF_GetCode(self.status.status))
    529     # Delete the underlying status object from memory otherwise it stays alive
    530     # as there is a reference to status from this from the traceback due to

InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [2,1] vs. shape[1] = [1,1]
     [[{{node loss_11/dense_13_loss/MeanSquaredError/weighted_loss/broadcast_weights/assert_broadcastable/is_valid_shape/has_valid_nonscalar_shape/has_invalid_dims/concat}}]]

Я звоню model.fit() по линии model.fit(train_data, epochs=12000,verbose=0, validation_data = val_data). Функция работает хорошо, когда validation_data не является параметром. И train_data, и val_data являются кортежем (X, Y) трехмерных массивов, содержащих точки данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...