密集。获取重量()与密度.重量

2024-03-29 00:28:40 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么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}$

Tags: 方法runimportnonegetmodelinittf
1条回答
网友
1楼 · 发布于 2024-03-29 00:28:40

在您的代码中,实际上有两个tf.Session()实例;修复方法是将您的sess的用法包含在一个with子句中,如下所示:

# Define your graph.

with tf.Session() as sess:
    # All calls to tf.run() or linear_model.get_weights() go in this clause.

为什么要开两次课?在

第一个是您自己的sess对象,它不是很神秘。在

第二个是通过调用get_weights()隐式创建的,如果没有设置TensorFlow的默认会话,它将为您创建一个新的会话实例。因为您在with子句之外使用sess,所以您没有设置默认会话,get_weights()会自动为您创建一个新会话。当您在with子句中设置tf.Session()时,它确实在tf中设置了默认会话,get_weights()将静默地(而且更有帮助地)重用您的会话对象。在

如果您非常好奇,那么为您偷偷创建另一个会话的实际函数是(在tensorflow中的keras)^{}。在

相关问题 更多 >