论初始化的重要性

初始化是相当重要的,一定不能乱写,

  因为首先初始化由于学习率比较小的原因,导致这个层的weight改变的会很慢,

  其次,初始化如果不对,很可能不只是下降慢,可能是全盘皆输

17:40:18

 

从上述公式可以看出,由于学习率很小,所以w基本不变,再加上w内部如果都设为1,则w更新之后也基本一样,如果是这样的话,则之后的节点大小也一样,这就导致下一个节点的w增长量一样,,会出现很多问题

所以一般是这样:

self.conv44w = nn.Conv2d(2048, 35, kernel_size=1, stride=1, padding=0,bias=False)

init.kaiming_normal(self.conv44w.weight.data, a=0, mode='fan_in')

self.bn44w = nn.BatchNorm2d(35)

init.normal(self.bn44w.weight.data, 1.0, 0.02)

init.constant(self.bn44w.bias.data, 0.0)

2 state_dict.   strict=False

 

posted @ 2019-03-22 17:48  freebirds  阅读(654)  评论(0编辑  收藏  举报