【发布时间】:2017-07-16 13:25:15
【问题描述】:
我有一个三维 numpy 图像数组 (CIFAR-10 dataset)。图像数组形状如下:
a = np.random.rand(32, 32, 3)
在进行任何深度学习之前,我想对数据进行标准化以获得更好的结果。使用一维数组,我知道我们可以像这样进行最小最大归一化:
v = np.random.rand(6)
(v - v.min())/(v.max() - v.min())
Out[68]:
array([ 0.89502294, 0. , 1. , 0.65069468, 0.63657915,
0.08932196])
但是,当涉及到 3D 阵列时,我完全迷失了。具体来说,我有以下问题:
- 我们沿哪个轴取最小值和最大值?
- 我们如何使用 3D 数组实现这一点?
感谢您的帮助!
编辑:
事实证明,我需要使用形状为(202, 32, 32, 3) 的 4D Numpy 数组,因此第一个维度将是图像的索引,最后 3 个维度是实际图像。如果有人可以为我提供规范化这样一个 4D 数组的代码,那就太好了。谢谢!
编辑 2: 感谢@Eric 下面的代码,我已经弄清楚了:
x_min = x.min(axis=(1, 2), keepdims=True)
x_max = x.max(axis=(1, 2), keepdims=True)
x = (x - x_min)/(x_max-x_min)
【问题讨论】:
-
您的堆栈是 4d (image# x X x Y x RGB) 还是 3d (image# x X x Y)?
标签: python arrays numpy deep-learning