做模型时发现有一层模型的权值很小,1e-5 左右,几乎更新不了梯度。这种情况可以用 bn 强行拉回权值分布么?
我尝试使用 in 层,似乎没什么效果
这个很玄学的,试试才知道
in一般是bs=1时用的
恩,是bs=1的cyclegan
后来发现是 SpectralNorm 导致的
其实是我用错了,不是网络权值小,是特征图的值小
这样最后导致判别器的输出无法更新生成器
SpectralNorm 的作用只是稳定模型训练,应该对最后结果没什么影响吧
不行判别器就直接 bn 了,只要生成器用 adailn 就好了
虽然听不太懂,但好像很厉害的样子
后来我试验了,用了bn层,卷积核的权值放大了
但用在cyclegan的判别器里效果并不好
spectral normalization 没有放大权值但确实稳定了模型的训练
开始我用 spectral normalization 还用错了,给特征图用上了
应该给卷积核用
就像Paddle 的 BatchNorm batch_norm 一样
不能在 forward 里直接 batch_norm() 特征图,得 batch_norm 卷积核
这个是在论文复现的 issue 里了解到的细节
在原版的cyclegan 里用bn效果还不错,在 ugatit 魔改的 cyclegan 里还是得用论文里的普归一化
bn最后有两个参数控制放缩和平移的
我尝试使用 in 层,似乎没什么效果
这个很玄学的,试试才知道
in一般是bs=1时用的
恩,是bs=1的cyclegan
后来发现是 SpectralNorm 导致的
其实是我用错了,不是网络权值小,是特征图的值小
这样最后导致判别器的输出无法更新生成器
SpectralNorm 的作用只是稳定模型训练,应该对最后结果没什么影响吧
不行判别器就直接 bn 了,只要生成器用 adailn 就好了
虽然听不太懂,但好像很厉害的样子
后来我试验了,用了bn层,卷积核的权值放大了
但用在cyclegan的判别器里效果并不好
spectral normalization 没有放大权值但确实稳定了模型的训练
开始我用 spectral normalization 还用错了,给特征图用上了
应该给卷积核用
就像Paddle 的 BatchNorm batch_norm 一样
不能在 forward 里直接 batch_norm() 特征图,得 batch_norm 卷积核
这个是在论文复现的 issue 里了解到的细节
在原版的cyclegan 里用bn效果还不错,在 ugatit 魔改的 cyclegan 里还是得用论文里的普归一化
bn最后有两个参数控制放缩和平移的