#python #tensorflow #deep-learning #image-segmentation
Вопрос:
Я работаю над проблемой сегментации изображений(тензорный поток). Обучающие изображения в наборе данных равны 50, а тестовые-51, при обучении моей модели я получаю следующую ошибку
ValueError: Shapes (None, 256, 256, 2) and (None, 256, 256, 1) are incompatible
Код обучения таков:
model = build_model(input_shape)
model.compile(
loss="binary_crossentropy",
optimizer=tf.keras.optimizers.Adam(lr),
metrics=[
tf.keras.metrics.MeanIoU(num_classes=2),
tf.keras.metrics.Recall(),
tf.keras.metrics.Precision()
]
)
Модель:
def build_model(shape):
inputs = Input(shape)
x, skip_1 = encoder1(inputs)
x = ASPP(x, 64)
x = decoder1(x, skip_1)
outputs1 = output_block(x)
x = inputs * outputs1
x, skip_2 = encoder2(x)
x = ASPP(x, 64)
x = decoder2(x, skip_1, skip_2)
outputs2 = output_block(x)
outputs = Concatenate()([outputs1, outputs2])
model = Model(inputs, outputs)
return model
if __name__ == "__main__":
model = build_model((256, 256, 3))
model.summary()
Ошибка трассировки:
Ошибка значения: в коде пользователя:
/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:800 train_step
self.compiled_metrics.update_state(y, y_pred, sample_weight)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/compile_utils.py:460 update_state
metric_obj.update_state(y_t, y_p, sample_weight=mask)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/utils/metrics_utils.py:86 decorated
update_op = update_state_fn(*args, **kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/metrics.py:177 update_state_fn
return ag_update_state(*args, **kwargs)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/metrics.py:1462 update_state **
sample_weight=sample_weight)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/utils/metrics_utils.py:366 update_confusion_matrix_variables
y_pred.shape.assert_is_compatible_with(y_true.shape)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/tensor_shape.py:1161 assert_is_compatible_with
raise ValueError("Shapes %s and %s are incompatible" % (self, other))
ValueError: Shapes (None, 256, 256, 2) and (None, 256, 256, 1) are incompatible
Я не знаю, к чему относится эта ошибка и в какой момент.
Комментарии:
1. Можете ли вы также предоставить структуру модели?
2. Да, функция build_model.
3. Кроме того, можете ли вы указать, где произошла ошибка? Иногда tf показывает, какой слой получил несовместимые формы. Поскольку это высоко настроенный поток моделей, его трудно отладить невооруженным глазом.
4. Я также сталкиваюсь с этой проблемой,она не показывает слой. Это просто говорит об ошибке, которую я привел в цитате в приведенном выше вопросе
5. Какова ваша форма ввода?