我有一个三维的numpy图像数组(CIFAR-10数据集)。图像数组的形状如下:
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)