我的情况是使用FCN进行像素预测,我有7个类别,因此我提供了512 * 512的图像,然后提供512 * 512 * 7进行模型预测,我想根据(高度宽度通道)保存最终结果。
由于我最后使用通道,所以输入形状对我来说很有意义。但是Keras拆分出的输出形状的形式我相信是:
(channels*height *width).
我的尝试是使用功能“重塑”,它的工作原理... 真的让我感到困惑,在我的实验中,当我使用重塑功能时,图像完全被弄乱了,在这种情况下,它的确表现得很好(在Keras中使用重塑功能)。
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。 预先感谢!
答案 0 :(得分:1)
默认情况下,Keras已经为channels_last
,因此您可能没有进行任何调整。
选中model.summary()
以查看形状。
您是正确的,如果您打算更改频道顺序,则重塑会弄乱图像。因此,您将寻找Permute((3,1,2))
层以最后移动到第一个或Permute((2,3,1)
层首先移动到最后。