使用RELU激活函数时如何初始化权重
How to initialize weights when using RELU activation function
我想做一个Conv网络,想用RELU激活函数。有人可以给我一些初始化权重的正确方法的线索吗(我正在使用 Theano)
谢谢
我不确定是否有硬性且快速的最佳方法来初始化 ReLU 层的权重和偏差。
一些 claim Xavier 初始化(略微修改的版本)与 ReLU 配合得很好。其他的小高斯随机权重加上bias=1(确保正输入的加权和将保持为正,从而不会在ReLUs零区域结束)。
在Theano中,这些可以这样实现(假设权重post-乘以输入):
w = theano.shared((numpy.random.randn((in_size, out_size)) * 0.1).astype(theano.config.floatX))
b = theano.shared(numpy.ones(out_size))
或
w = theano.shared((numpy.random.randn((in_size, out_size)) * tt.sqrt(2 / (in_size + out_size))).astype(theano.config.floatX))
b = theano.shared(numpy.zeros(out_size))
我想做一个Conv网络,想用RELU激活函数。有人可以给我一些初始化权重的正确方法的线索吗(我正在使用 Theano)
谢谢
我不确定是否有硬性且快速的最佳方法来初始化 ReLU 层的权重和偏差。
一些 claim Xavier 初始化(略微修改的版本)与 ReLU 配合得很好。其他的小高斯随机权重加上bias=1(确保正输入的加权和将保持为正,从而不会在ReLUs零区域结束)。
在Theano中,这些可以这样实现(假设权重post-乘以输入):
w = theano.shared((numpy.random.randn((in_size, out_size)) * 0.1).astype(theano.config.floatX))
b = theano.shared(numpy.ones(out_size))
或
w = theano.shared((numpy.random.randn((in_size, out_size)) * tt.sqrt(2 / (in_size + out_size))).astype(theano.config.floatX))
b = theano.shared(numpy.zeros(out_size))