ValueError:两个形状中的维度 2 必须相等,但分别为 512 和 511。

我正在尝试构建用于图像分割的 Unet 卷积神经网络,但当我尝试使用输入数据编译模型时,收到形状不兼容的错误消息。


print(x_data.shape)

print(x_test.shape)

print(y_data.shape)

print(y_test.shape)


>>

(4, 767, 1022, 3)

(4, 767, 1022, 3)

(4, 767, 1022, 3)

(4, 767, 1022, 3)


>>>>

model = sm.Unet('resnet34', classes=1, activation='sigmoid')


model.compile(

    'Adam',

    loss=sm.losses.bce_jaccard_loss,

    metrics=[sm.metrics.iou_score],

)


>>>>

model.fit(

   x=x_data,

   y=y_data,

   batch_size=16,

   epochs=100,

   validation_data=(x_test, y_test),

)


>>

Epoch 1/100

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-27-6cf659e4ef4f> in <module>()

      4    batch_size=16,

      5    epochs=100,

----> 6    validation_data=(x_test, y_test),

      7 )


10 frames

/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)

    971           except Exception as e:  # pylint:disable=broad-except

    972             if hasattr(e, "ag_error_metadata"):

--> 973               raise e.ag_error_metadata.to_exception(e)

    974             else:

    975               raise



当我已经检查了所有输入形状是否匹配时,问题到底是什么?忽略了什么以及如何解决?


我已经尝试过了


import keras

keras.backend.set_image_data_format('channels_first')

如此处所示https://github.com/titu1994/Image-Super-Resolution/issues/27,但问题仍然存在。


使用谷歌 Colab。


白猪掌柜的
浏览 88回答 1
1回答

斯蒂芬大帝

有点晚了,但你的问题来自于输入宽度和高度不能被 32 整除;确保您使用的 UNet 值可以被 32 整除,您的问题就会得到解决。您无需更改 Colab 环境或将通道顺序设置为channel_first。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python