segmentation_models
segmentation_models copied to clipboard
Input error
i am just running the binary segmentation example notebook in Google colab to understand the function in code but I am getting the input error as below while fitting the model, any help please?
train model
history = model.fit_generator( train_dataloader, steps_per_epoch=len(train_dataloader), epochs=EPOCHS, callbacks=callbacks, validation_data=valid_dataloader, validation_steps=len(valid_dataloader), )
ValueError: in user code:
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:855 train_function *
return step_function(self, iterator)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:845 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:1285 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:2833 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:3608 _call_for_each_replica
return fn(*args, **kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:838 run_step **
outputs = model.train_step(data)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:795 train_step
y_pred = self(x, training=True)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/base_layer.py:1013 __call__
input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/input_spec.py:203 assert_input_compatibility
' input tensors. Inputs received: ' + str(inputs))
ValueError: Layer model expects 1 input(s), but it received 2 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, None, None, None) dtype=float32>, <tf.Tensor 'IteratorGetNext:1' shape=(None, None, None, None) dtype=float32>]
same problem
Yes I can confirm, same issue here also.
changing the output of the data loader into a tuple instead of a list worked for me
history = model.fit_generator(
tuple(train_dataloader),
steps_per_epoch=len(train_dataloader),
epochs=EPOCHS,
callbacks=callbacks,
validation_data=tuple(valid_dataloader),
validation_steps=len(valid_dataloader),
)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:1940: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.
warnings.warn('`Model.fit_generator` is deprecated and '
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-82-82ad509733f3> in <module>()
5 callbacks=callbacks,
6 validation_data=tuple(valid_dataloader),
----> 7 validation_steps=len(valid_dataloader),
8 )
2 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/data_adapter.py in unpack_x_y_sample_weight(data)
1553 error_msg = ("Data is expected to be in format `x`, `(x,)`, `(x, y)`, "
1554 "or `(x, y, sample_weight)`, found: {}").format(data)
-> 1555 raise ValueError(error_msg)
1556
1557
ValueError: Data is expected to be in format `x`, `(x,)`, `(x, y)`, or `(x, y, sample_weight)`, found: ([array([[[[-0.57667613, -0.30252096, 0.13019615],
Do you maybe have a code snippet, as when I make it a tuple I get this error, but maybe that is not how you are supposed to make it a tuple.
I use TF 2.5.0 on Colab
https://github.com/qubvel/segmentation_models/issues/412
This issue explains it. Appareantly inside the dataloader it has to be made a tuple already and not in the model.fit()