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

Tensorflow Keras layer.weights和layer.get_weights()给出不同的值,tensorflow,keras,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(ini

我的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()方法的输出


你知道哪种方法是正确的,第二种方法的具体作用是什么吗?

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

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

很好,您的代码块给出了与get_weights()相同的结果。重新运行我的第二个代码片段会给我相同的可重复的权重结果,这就是为什么我认为它不可能是随机的。谢谢!