如何初始化Keras模型中的偏差?

时间:2016-11-20 19:04:29

标签: python neural-network deep-learning keras

我正在尝试在Keras中构建一个合成模型,我需要为权重和偏差分配值。分配权重很简单,我使用的是此处提供的说明:https://keras.io/initializations/。 但是,我找不到有关如何分配偏差的任何说明。有什么想法吗?

4 个答案:

答案 0 :(得分:13)

你也可以像这样使用bias_initializer:

model.add(Dense(64,
                kernel_initializer='random_uniform',
                bias_initializer='zeros')

这是https://keras.io/initializers/

答案 1 :(得分:9)

你可以在这里找到答案。 https://keras.io/layers/core/

  

权重:要设置为初始权重的Numpy数组列表。列表   应该有2个形状元素(input_dim,output_dim)和   (output_dim,)分别为权重和偏差。

添加新图层时,您可以定义参数“weights”,一个包含初始 w 的列表和 b ,其形状已明确。

elasticsearch

答案 2 :(得分:2)

初始化具有小正值的偏差,例如0.1

  

由于我们正在使用ReLU神经元,因此最好使用稍微正的初始偏差来初始化它们以避免死亡神经元#34;

答案 3 :(得分:0)

可以分别通过kernel_initializer中的bias_initializerlayers.Dense()关键字参数来设置每层的重量和偏差初始化。如果用户未定义,则将应用kernel_initializer='glorot_uniform'bias_initializer='zeros'的默认设置。

例如,如果您想将图层的权重初始化初始化为随机均匀而不是glorot,并且将初始化初始化为0.1而不是0,则可以如下定义给定的图层:

from keras import layers, initializers

layer = layers.Dense(64,
                     activation='relu',
                     kernel_initializer='random_uniform',
                     bias_initializer=initializers.Constant(0.1))(previous_layer)

有关密集层关键字参数的详细信息,请参见layers/core/;有关预设和可自定义的初始化程序选项,请参见initializers/