私のKerasモデルには、重みとバイアス値にアクセスするために必要な高密度レイヤーがあります。get_weights()メソッドを使用してそれらにアクセスできます。重みとバイアスの予想サイズの行列(重みの場合は57X50)が返されます。
model.layers[0].get_weights()[0]
ただし、次のコードスニペットは、値が異なる同じサイズの行列を提供します。
import tensorflow as tf
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
print(sess.run(model.layers[0].weights[0]))
2番目のメソッドでは、すべてのモデルのすべてのゼロと重みがget_weights()メソッドの出力とは異なるため、バイアス値が返されます。
どちらの方法が正しいか、そして2番目の方法が正確に何をするかについて何か考えがありますか?
を使用してinit_op
、トレーニング可能なすべての変数を初期化します。これは、バイアスの場合はゼロ、モデルの他の重みの場合はランダム値を意味します。試してください:
import keras.backend as K
with K.get_session() as sess:
print(sess.run(model.layers[0].weights[0]))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加