python - numpy 和 Keras 中 "reshape"函数的差异

标签 python numpy keras

我的情况是使用 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/

相关文章:

python - 为什么 Django 中的 IndexError at/list 索引超出范围

Python:如果Python列表的当前索引发生异常,如何检查列表中的下一个索引

python - 具有任意尺寸的 Cython ndarray

python - 如何以 Python 的方式平滑地集成 SQLAlchemy 和子类 Numpy.ndarray?

python - Numpy apply_along_axis 不返回 ndarray 子类

python - 使用 Tensorflow 格式化具有可变时间步长的 LSTM 层的输入

python - 使用 QSUB 和 bash 文件打印 Keras 的训练进度

python - 如何对包含字母数字值的列表进行排序?

python - 如何判断filter()是否返回一个新列表

python - 凯拉斯/TF : Time Distributed CNN+LSTM for visual recognition