我正在尝试找出为什么在下面的两个方法中,当我尝试在Tensorflow中初始化变量时方法2引发错误
import tensorflow as tf
sess = tf.InteractiveSession()
方法1
该方法可以很好地返回正确的输出
with tf.variable_scope('layer_1'):
W1 = tf.get_variable(name="weights1", shape=[3, 10], initializer=tf.zeros_initializer())
sess.run(tf.global_variables_initializer())
print(sess.run(W1))
方法2
此方法引发错误。
with tf.variable_scope('layer_2'):
W2 = tf.get_variable(tf.zeros(shape=[3, 10], name="weights2"))
sess.run(tf.global_variables_initializer())
print(sess.run(W2))
我收到的方法2的错误消息是:
TypeError: Expected float32, got 'layer_2/' of type 'str' instead.
的第一个(位置)参数tf.get_variable
是name
变量的。所以你的第二个代码相当于
tf.get_variable(name=tf.zeros(shape=[3, 10], name="weights2"))
尝试使用atf.Tensor
作为变量名不起作用(我很惊讶,它没有更早给出错误)。
你也许想做
tf.Variable(tf.zeros(shape=[3, 10]), name="weights2")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句