我的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]))
在第二种方法中,由于所有模型的全零和权重与get_weights()方法的输出不同,因此返回偏差值。
您是否知道哪种方法正确以及第二种方法究竟能做什么?
答案 0 :(得分:1)
使用init_op
,初始化所有可训练变量,这意味着偏差为零,模型的其他权重为随机值。试试:
import keras.backend as K
with K.get_session() as sess:
print(sess.run(model.layers[0].weights[0]))