我的情况是使用 FCN 进行逐像素预测,我有 7 个类,所以我输入图像 512*512,然后提供 512*512*7 供模型预测,我想根据以下方式 reshape 它(高度宽度 channel )以保存最终结果。
由于我最后使用 channel ,所以输入形状对我来说很有意义。但是我认为 Keras 分割出来的输出形状的形式是:
(channels*height *width).
我尝试使用“reshape”功能并且它有效...... 真的让我很困惑,在我的实验中,当我使用 reshape 功能时,图像会完全困惑,在这种情况下,结果证明效果非常好(在 Keras 中使用 reshape 功能)。
pr = m.predict( np.array([X]))[0]
#reshape to channel last and take the largest index in 7 predictions for each piexl
pr = pr.reshape(( output_height , output_width , n_classes ) ).argmax(axis=-1)
我期望的工作方式应该是 np moveaxis 或 numpy.rollaxis 之类的东西。 提前致谢!
最佳答案
默认情况下,Keras 已经是 channels_last
,因此您可能没有对 reshape 进行任何操作。
检查model.summary()
以查看形状。
如果您打算更改 channel 顺序,则 reshape 会弄乱图像,您是对的。因此,您将寻找 Permute((3,1,2))
图层将最后一个移动到第一个,或 Permute((2,3,1)
移动到第一个到最后。
关于python - numpy 和 Keras 中 "reshape"函数的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932121/