web-dev-qa-db-ja.com

Kerasモデルでバイアスを初期化する方法は?

Kerasで合成モデルを構築しようとしています。重みとバイアスに値を割り当てる必要があります。重みの割り当ては簡単です。ここに記載されている手順を使用しています: https://keras.io/initializations/ 。しかし、バイアスを割り当てる方法についての指示は見つかりませんでした。何か案は?

10
Mohammad Amin

ここで答えを見つけることができます。 https://keras.io/layers/core/

weights:初期の重みとして設定するNumpy配列のリスト。リストには、重みとバイアス用の形状(input_dim、output_dim)と(output_dim)の2つの要素が必要です。

新しいレイヤーを追加するとき、引数「重み」を定義できます。これは、初期wおよびbを含むリストです。 形状が指定されています。

model.add(Dense(50, input_dim= X_train.shape[1], weights = [np.zeros([692, 50]), np.zeros(50)]))

11
Hengda Qi

次のようにbias_initializerを使用することもできます:

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

これは https://keras.io/initializers/ からのものです

17
StatsSorceress

0.1などの小さい正の値でバイアスを初期化します

ReLUニューロンを使用しているため、「デッドニューロン」を回避するために、わずかに正の初期バイアスで初期化することもお勧めします。

3
daoliker

各レイヤーの重みとバイアスの初期化は、それぞれlayers.Dense()内のkernel_initializerおよびbias_initializerキーワード引数を介して設定できます。ユーザーによって定義されていない場合、kernel_initializer='glorot_uniform'およびbias_initializer='zeros'のデフォルト設定が適用されます。

たとえば、レイヤーの重みの初期化をglorotではなくランダムなユニフォームに初期化し、バイアスの初期化を0ではなく0.1にしたい場合は、次のように特定のレイヤーを定義できます。

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 / を参照してください

2
Trevor Witter