【问题标题】:Data normalization Convolutional Autoencoders数据归一化卷积自动编码器
【发布时间】:2020-02-11 00:23:15
【问题描述】:

在训练卷积自动编码器之前,我对如何标准化/标准化图像像素值有点困惑。目标是使用自动编码器进行降噪,这意味着我的训练图像由噪声图像和用作基本事实的原始非噪声图像组成。

据我所知,有一些选项可以对图像进行预处理: - 标准化 - 标准化(z-score)

当使用 MinMax 方法(在 0-1 之间缩放)进行标准化时,网络工作正常,但我的问题是: - 当使用训练集的最小最大值进行缩放时,我应该使用噪声图像还是地面实况图像的最小/最大值?

我在训练自动编码器时观察到的第二件事: - 使用 z-score 标准化,前两个时期的损失减少,之后它停在大约 0.030 并停留在那里(它卡住了)。这是为什么?归一化后损失会减少很多。

提前致谢,

干杯,

迈克

【问题讨论】:

  • MinMax 对噪声和异常值非常敏感,因此我不会在去噪应用程序中使用它。您可以改用分位数 5% 和 95%,或使用 z 分数。为了更真实的训练,应该对有噪声的图像进行归一化
  • 我们没有足够的信息来回答您的第二个问题。什么损失?网络中使用了任何权重正则化?请让它成为一个独立的问题
  • 感谢您的评论。是的,z 分数标准化似乎是有道理的。我使用没有任何权重正则化的 MSE 损失。除了最后一个使用 Sigmoid 之外,所有层都使用 relu 激活。干杯,迈克尔
  • Sigmoid 将强制其输出介于 0 和 1 之间,因此它不适合 z 分数转换图像上的自动编码器(因为目标强度可以采用任意正值或负值)。
  • 谢谢皮埃尔。你认为在这种情况下线性激活会更好吗?我也在考虑我在隐藏层中使用的 relu 激活。如果使用 z 分数标准化,那么 relu 是一个不错的选择,还是会阻止所有负值?再次感谢,迈克尔

标签: machine-learning deep-learning normalization autoencoder


【解决方案1】:

[注:本答案是上面cmets的汇编,记录在案]

MinMax 对异常值和某些类型的噪声非常敏感,因此不应在去噪应用中使用它。您可以改用 5% 和 95% 的分位数,或者使用 z-score(现成的实现更常见)。

为了更真实的训练,应该对有噪声的图像进行归一化。

因为最后一层使用 sigmoid 激活(来自您的 cmets 的信息),网络的输出将强制在 0 和 1 之间。因此它不适合 z 分数转换图像上的自动编码器(因为目标强度可以采取任意正值或负值)。在这种情况下,身份激活(在 Keras 中称为线性)是正确的选择。

但是请注意,这个关于激活的评论只涉及输出层,任何激活函数都可以在隐藏层中使用。原理:输出中的负值可以通过负权重乘以隐藏层的ReLU输出得到。

【讨论】:

    猜你喜欢
    • 2020-08-20
    • 2018-11-12
    • 1970-01-01
    • 2017-11-11
    • 2019-12-01
    • 1970-01-01
    • 2019-11-09
    • 2018-07-14
    • 2019-06-11
    相关资源
    最近更新 更多