gpt4 book ai didi

tensorflow - 通过finetuning训练全卷积网络时如何处理BatchNorm层?

转载 作者:行者123 更新时间:2023-12-04 01:12:42 25 4
gpt4 key购买 nike

为像素级语义分割训练全卷积神经网络 (FCN) 非常耗费内存。所以我们经常使用batchsize=1来训练FCN。但是,当我们使用 BatchNorm (BN) 层微调预训练网络时,batchsize=1 对 BN 层没有意义。那么,如何处理 BN 层呢?

一些选项:

  1. 删除 BN 层(将 BN 层与预训练模型的前面层合并)

  2. 卡住BN层的参数和统计数据

  3. ....

在 pytorch/tf/caffe 中实现哪个更好以及有任何演示?

最佳答案

如果 epsilon 不为零(方差为零,均值与输入相同),则只有一个元素将使批量归一化为零。
最好从网络中删除 BN 层并尝试激活函数 SELU(缩放指数线性单元)。这是来自论文 'Self normalizing neural networks' (SNN)。

引自论文:

While batch normalization requires explicit normalization, neuron activations of SNNs automatically converge towards zero mean and unit variance. The activation function of SNNs are “scaled exponential linear units” (SELUs), which induce self-normalizing properties.

SELU 定义为:

def selu(x, name="selu"):
alpha = 1.6732632423543772848170429916717
scale = 1.0507009873554804934193349852946
return scale * tf.where(x >= 0.0, x, alpha * tf.nn.elu(x))

关于tensorflow - 通过finetuning训练全卷积网络时如何处理BatchNorm层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com