Keras layer.weights和layer.get_weights()给出不同的值

时间:2018-07-24 12:54:10

标签: tensorflow keras

我的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()方法的输出不同,因此返回偏差值。

您是否知道哪种方法正确以及第二种方法究竟能做什么?

1 个答案:

答案 0 :(得分:1)

使用init_op,初始化所有可训练变量,这意味着偏差为零,模型的其他权重为随机值。试试:

import keras.backend as K
with K.get_session() as sess:
    print(sess.run(model.layers[0].weights[0]))