我在MATLAB中检查了AlexNet的设计,总结如下:
输入层用227x227x3
标准化表示zerocenter
。 zerocenter
规范化是什么意思?我怎么能做这个keras?
我正在通过preprocessing documentation at keras,并不确定以下任何属性是否满足zerocenter
标准化?文档中给出的属性是:
- featurewise_center
- samplewise_center
- featurewise_std_normalization
- samplewise_std_normalization
在zerocenter
imageInputLayer
中已经规定了MATLAB中documentation规范化的定义:
'zerocenter'
- 减去AverageImage
属性指定的平均图像。trainNetwork
函数自动计算训练时的平均图像。
因此,从输入图像中减去平均图像以使它们具有零均值(这有助于在模型训练期间平滑且更快的优化过程)。所以,Keras中的等价选项是featurewise_center
:
featurewise_center
:布尔值。在数据集上将输入均值设置为0,具体为。
请注意,您需要调用fit()
的ImageDataGenerator
方法来计算平均图像:
datagen = ImageDataGenerator(featurewise_center=True, ...)
datagen.fit(train_data)
# now you can call `flow`
零中心归一化通常意味着图像被归一化为平均值为0,标准差为1.如果您的图像是NumPy数组,则可以轻松实现:
img = (img - img.mean()) / img.std()
samplewise_center
和samplewise_std_normalization
做同样的事情,确保每个图像的平均值为0,标准差为1.如果你想使用数据集的mean / std,而不是samplewise mean / std,我想你应该手动完成。