2017-02-23 8 views
5

私はKerasを使って簡単なフィードフォワードネットワークを実行しています。 隠れ層が1つしかないので、各入力と各出力の関連性についていくつかの推論をしたいと思います。私はその重みを抽出したいと思います。マトリックス中Kerasシーケンシャルモデルでバイアスウェイトを抽出する方法は?

for layer in model.layers: 
    weights = layer.get_weights() 


weights = np.array(weights[0])  #this is hidden to output 
first = model.layers[0].get_weights() #input to hidden 
first = np.array(first[0]) 

残念ながら、私は偏見に取得しないカラム、私はKerasが自動的に置く知っている:

def build_model(input_dim, output_dim): 
    n_output_layer_1 = 150 
    n_output = output_dim 
    model = Sequential() 
    model.add(Dense(n_output_layer_1, input_dim=input_dim, activation='relu')) 
    model.add(Dropout(0.25)) 
    model.add(Dense(n_output)) 

私が書いた重みを抽出するには:

この

は、モデルでありますそれ。

バイアスウェイトを取得する方法は知っていますか?

ありがとうございました!

答えて

10

denseレイヤのget_weights()は、2つの要素のリストを返します。最初の要素には重みが含まれ、2番目の要素にはバイアスが含まれます。したがって、簡単に行うことができます:

weights = model.layers[0].get_weights()[0] 
biases = model.layers[0].get_weights()[1] 

重みとバイアスは、すでにnumpyの配列です。

+0

マティアスさん、ありがとうございました! –

+0

ご迷惑をおかけして申し訳ありませんが、どのような種類の起動機能が私のモデルにありますか?デフォルトの選択がありますか、それとも隠れたニューロンの活性化の加重和ですか? –

関連する問題