【问题标题】:What does zerocenter normalization mean? How could I do this with keras?零中心归一化是什么意思?我怎么能用 keras 做到这一点?
【发布时间】:2019-09-12 14:34:46
【问题描述】:

我在MATLAB中检查AlexNet的设计,总结如下:

输入层使用zerocenter 归一化表示227x227x3zerocenter 标准化是什么意思?我怎么能做这个 keras?

我正在检查preprocessing documentation at keras,但不确定以下属性是否满足zerocenter 规范化?文档中还给出的属性是:

 - featurewise_center
 - samplewise_center
 - featurewise_std_normalization
 - samplewise_std_normalization

【问题讨论】:

    标签: python image-processing keras computer-vision conv-neural-network


    【解决方案1】:

    零中心标准化通常意味着图像被标准化为平均值为 0,标准差为 1。如果您的图像是 NumPy 数组,您可以轻松实现:

    img = (img - img.mean()) / img.std()
    

    samplewise_centersamplewise_std_normalization 做同样的事情,确保每张图像的均值为 0,标准差为 1。如果要使用数据集的均值/标准,而不是采样均值/标准,我想你应该手动完成。

    【讨论】:

      【解决方案2】:

      imageInputLayerdocumentation中已指定MATLAB中zerocenter归一化的定义:

      • 'zerocenter' — 减去由 AverageImage 属性指定的平均图像。 trainNetwork 函数在训练时自动计算平均图像。

      因此,从输入图像中减去均值图像以使它们的均值为零(这有助于在模型训练期间实现平稳和更快的优化过程)。因此,Keras 中的等效选项是 featurewise_center:

      • featurewise_center:布尔值。将数据集的输入均值设置为 0,按特征设置。

      请注意,您需要调用ImageDataGeneratorfit() 方法来计算平均图像:

      datagen = ImageDataGenerator(featurewise_center=True, ...)
      
      datagen.fit(train_data) 
      
      # now you can call `flow`
      

      【讨论】:

      • 我不能只在model上使用fit_generator函数吗?
      • @SuhailGupta 首先需要计算平均图像,以便在将生成器传递给fit_generator 时从输入图像中减去它。因此,您首先需要调用 generatorfit 方法,然后您可以通过调用 modelfit_generator 方法开始训练,该方法将生成器作为输入。
      • 好的。您能解释一下featurewise_centerfeaturewise_std_normalization 之间的区别吗?还有,和samplewise_center有什么区别?
      • @SuhailGupta featurewise_std_normalization:这会将输入图像除以数据集中所有图像的标准差(即标准差);因此它们的标准值都为 1(按特征)。 samplewise_center:这将 从其自身中减去每个输入图像的平均值;因此,每个个体图像中像素值的平均值为零。所有这些都是各种归一化方式,它们有时会相互结合(例如,特征中心 + 标准)。
      • zercenter归一化除了更快的收敛还有其他好处吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2011-07-12
      相关资源
      最近更新 更多