为什么get_weights()返回与实际权重不同的权重值?我认为初始化后两个方法应该显示相同的权重。在
import tensorflow as tf
import os
sess = tf.Session()
x = tf.placeholder(tf.float32, shape=[None, 3])
linear_model = tf.layers.Dense(units=1,use_bias=False,activation=None)
y = linear_model(x)
init = tf.global_variables_initializer()
sess.run(init)
print(linear_model.get_weights())
print(sess.run(linear_model.weights))
print('------------------')
print(sess.run(y, {x: [[1, 1, 1]]}))
输出
^{pr2}$
在您的代码中,实际上有两个
tf.Session()
实例;修复方法是将您的sess
的用法包含在一个with
子句中,如下所示:为什么要开两次课?在
第一个是您自己的
sess
对象,它不是很神秘。在第二个是通过调用
get_weights()
隐式创建的,如果没有设置TensorFlow的默认会话,它将为您创建一个新的会话实例。因为您在with
子句之外使用sess
,所以您没有设置默认会话,get_weights()
会自动为您创建一个新会话。当您在with
子句中设置tf.Session()
时,它确实在tf
中设置了默认会话,get_weights()
将静默地(而且更有帮助地)重用您的会话对象。在如果您非常好奇,那么为您偷偷创建另一个会话的实际函数是(在tensorflow中的keras)^{} 。在
相关问题 更多 >
编程相关推荐