arrays - 如何将来自 CNN 预测的多张图像合并为一张图像?
问题描述
我在 Keras 中使用 CNN 构建模型,现在我想使用所有图像进行最终预测。这是我的输入和标签的尺寸:
X_pred, y_pred=next(pred_generator)
X_pred.shape, y_pred.shape
结果:
((132, 64, 64, 3), (132, 64, 64, 1))
这是预测的代码:
pred_64= model.predict(X_pred)
pred_64.shape
结果:
(132, 64, 64, 1)
很明显,有 132 个预测图像,大小为 64X64。我想合并每 4 个图像以创建大小为 128X128 的单个图像。最后,通过合并从 model.predict 生成的每 4 个图像,我应该有 33 个图像。
这是一个关于图像以 128X128 尺寸保存时的顺序的示例。
添加交换轴代码后,图像将旋转如下:
pred_128 = pred_64.reshape(66, 128, 64, 1).swapaxes(1, 2).reshape(33, 128, 128, 1)
我添加np.transpose
如下。它有助于纠正旋转,但图像 2 替换了图像 3,反之亦然。你能帮我解决这个问题吗?
pred_128 = pred_64.reshape(66, 128, 64, 1).swapaxes(1, 2).reshape(33, 128, 128, 1)
pred_128= np.transpose(pred_128, [0, 2, 1, 3])
解决方案
您可能会认为重塑可以解决问题,但排序有点棘手。小心swapaxes
是可能的。以下行将解决问题:
pred_128 = pred_64.reshape(66, 128, 64, 1).swapaxes(1, 2).reshape(33, 128, 128, 1)
下面给出了一个示例来说明这一点。a
在这里,我首先创建一个包含四个不同对角矩阵的数组。然后我以您希望看到打印结果的方式将它们放在一起。
import numpy as np
a = np.zeros((4, 2, 2, 1))
for i in range(0, 4):
a[i, :, :, 0] = np.eye(2) * (i+1)
b = a.reshape(2, 4, 2, 1).swapaxes(1, 2).reshape(1, 4, 4, 1)
print(b[0, :, :, 0])
结果:
[[1. 0. 2. 0.]
[0. 1. 0. 2.]
[3. 0. 4. 0.]
[0. 3. 0. 4.]]
推荐阅读
- c - 重定向标准输出后 C putchar 不起作用
- r - 在R中转换列中的行
- c# - 无法对 SQL Server 数据库表进行逆向工程
- entity-framework-core - dotnet ef migrations add:仅在有更改时创建迁移文件
- hive - 解析数组
在 Hive 中使用 OPEN CSV SEREDE - postgresql - 在同一台服务器中设置多个 postgresql 10 实例
- java - 使用批处理运行多个 java 程序
- twitter-bootstrap - 如何使用 Browserify / Gulp 要求 Bootstrap 4 依赖项(jQuery 和 Popper.js)
- c++11 - C++ Randomly Generate Simple Code To Make A Syntactically Correct Programs?
- python - 尝试从 DataFrame 或 Matrix 创建热图