【问题标题】:Difference of function of "reshape" in numpy and Kerasnumpy和Keras中“重塑”功能的差异
【发布时间】:2018-12-26 12:27:32
【问题描述】:

我的情况是使用 FCN 进行逐像素预测,我有 7 个类,所以我提供图像 512*512,然后提供 512*512*7 供模型预测,我想根据以下方面重塑它(heightwidthchannels) 来保存最终结果。

由于我最后使用通道,所以输入形状对我来说很有意义。但是我相信 Keras 拆分出来的输出形状的形式是:

                 (channels*height *width).

我的尝试是使用“重塑”功能,它可以工作...... 真的让我很困惑,在我的实验中,当我使用 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 默认已经是最后一个频道了。检查model.summary()中的形状
  • @DanielMöller 好吧,我忽略了轴 = 0,是的,其中一层输出形状(无、512、512、7)。在我的代码中,重塑函数与频道的位置,谢谢。

标签: python numpy keras


【解决方案1】:

默认情况下,Keras 已经是 channels_last,所以你可能对这个 reshape 没有做任何事情。

检查model.summary() 以查看形状。

你说得对,如果你打算改变频道顺序,重塑会弄乱图像。因此,您将寻找Permute((3,1,2)) 层从最后移动到第一个或Permute((2,3,1) 从第一个移动到最后。

【讨论】:

    猜你喜欢
    • 2021-04-21
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2016-10-14
    • 2021-07-14
    • 2021-10-28
    • 2017-04-28
    相关资源
    最近更新 更多