【发布时间】:2017-04-04 03:21:10
【问题描述】:
我正在尝试在 Keras 中构建一个合成模型,我需要为权重和偏差分配值。分配权重很容易,我使用此处提供的说明:https://keras.io/initializations/。 但是,我找不到任何关于如何分配偏差的说明。有什么想法吗?
【问题讨论】:
标签: python neural-network deep-learning keras
我正在尝试在 Keras 中构建一个合成模型,我需要为权重和偏差分配值。分配权重很容易,我使用此处提供的说明:https://keras.io/initializations/。 但是,我找不到任何关于如何分配偏差的说明。有什么想法吗?
【问题讨论】:
标签: python neural-network deep-learning keras
你也可以像这样使用bias_initializer:
model.add(Dense(64,
kernel_initializer='random_uniform',
bias_initializer='zeros')
【讨论】:
您可以在这里找到答案。 https://keras.io/layers/core/
权重:设置为初始权重的 Numpy 数组列表。名单 应该有 2 个元素,形状 (input_dim, output_dim) 和 (output_dim,) 分别用于权重和偏差。
添加新层时,您可以定义参数“权重”,这是一个包含初始 w 和 b 并指定形状的列表。
model.add(Dense(50, input_dim= X_train.shape[1], weights = [np.zeros([692, 50]), np.zeros(50)]))
【讨论】:
可以通过kernel_initializer 和bias_initializer 关键字参数分别在layers.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/
【讨论】:
用小的正值(例如 0.1)初始化偏差
由于我们使用的是 ReLU 神经元,因此最好使用稍微正的初始偏差来初始化它们以避免“死神经元”。
【讨论】: