Я пытаюсь реализовать unet при использовании tenorflow keras api для сегментации изображения для обнаружения дорожек. Ниже приведен соответствующий код (модель функции):
def model_fn(weight_path=None, input_shape=(180,320,1)):
.....
.....
model= tf.keras.Model(inputs= inputs, outputs= c8)
model.compile(optimizer= tf.keras.optimizers.Adam(lr= 1e-4),
loss= 'binary_crossentropy',
metrics= ['accuracy'])
Здесь форма входного тензора равна (None, 180, 320, 1)
, что соответствует выходному тензору. (xtr
и ytr
оба имеют форму (3000, 180, 320, 1)
)
Теперь, когда я пытаюсь обучить его, используя:
model.fit(x=xtr, y=ytr, batch_size= 10, epochs=1, callbacks=[cp_callback])
Я получаю эту ошибку:
ValueError: Целевой массив с формой (3000, 180, 320, 1)
был передан для вывода формы (Нет, 180, 320, 3) при использовании в качестве потерь binary_crossentropy
. Эта потеря предполагает, что цели будут иметь ту же форму, что и выходные данные.
Я не могу понять, что с этим не так. Любая помощь высоко ценится.