私はいくつかの実験を行うためにKerasを使用していると私は単純なMLPモデルの重み更新を監視し:最初の緻密層については`layer.get_weights()`は何を返しますか?
# model contains one input layer in the format of dense,
# one hidden layer and one output layer.
model=mlp()
weight_origin=model.layers[0].get_weights()[0]
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(.....) # with adam optimizer
weight_updated=model.layers[0].get_weights()[0]
print weight_origin-weight_updated
、私はゼロの行列を得ました。私はトレーニングがこの体重を変えないと思った。ただし、他のレイヤーのウェイトは変更されます。だから私は混乱しています、なぜ最初の層は変わりませんか?
model.layers[0].get_weights()[1] # get_weight() returns a list of weights
今回、重みが変更しました: 私はソースコードをチェックしますが、まだ何の答えを得ない、私は監視を試してみました。だから私はどのような体重がトレーニング中に働く "本当の"体重であるのだろうか?なぜウェイトリストに2つの要素があるのですか? mlp()
の
定義:layer.get_weights()
の質問については
def mlp():
model=Sequential()
model.add(Dense(500, input_dim=784))
model.add(Dense(503,init='normal',activation='relu'))
model.add(Dense(503,init='normal',activation='relu'))
model.add(Dense(10, activation='softmax'))
return model
mlp()関数を提供できますか?これは本当に奇妙な行動です –
@MarcinMożejko私はそれを更新しました。私は 'layer.weights'リストの2番目の重みを混同しています。 –
あなたのモデルを編集しましたか? –