segmentation_models icon indicating copy to clipboard operation
segmentation_models copied to clipboard

Input error

Open Nitz93 opened this issue 4 years ago • 5 comments

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>]

Nitz93 avatar Jun 20 '21 15:06 Nitz93

same problem

krekiehn avatar Jul 01 '21 15:07 krekiehn

Yes I can confirm, same issue here also.

Testbild avatar Jul 01 '21 15:07 Testbild

changing the output of the data loader into a tuple instead of a list worked for me

Nitz93 avatar Jul 01 '21 15:07 Nitz93

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

Testbild avatar Jul 01 '21 18:07 Testbild

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()

Testbild avatar Jul 05 '21 09:07 Testbild