【发布时间】:2023-03-31 12:16:01
【问题描述】:
我有一个形状为(34799, 32, 32, 3)的numpy数组,表示(num examples, width, height, channels)。
现在我使用以下代码对图像数据进行标准化:
def normalize(x):
return (x - 128) / 128
X_train_norm = normalize(X_train)
但是结果好像不对,X_train[0][0][0]的值是[28 25 24],但是X_train_norm[0][0][0]的输出是[1.21875 1.1953125 1.1875]。
我使用以下测试代码:
test = np.array([[[[28, 25, 24]]]])
print ((test - 128) / 128)
输出:
[[[[-0.78125 -0.8046875 -0.8125 ]]]]
为什么normalize 函数得到错误的结果?
【问题讨论】:
-
我认为这是由于字节的环绕。
-
什么是 X_train.dtype ?
-
@P.Camilleri uint8
-
这解释了您观察到的行为,请参阅提供的详细答案。
-
它解决了我的问题。非常感谢。
标签: python numpy image-processing array-broadcasting normalize