import tensorflow as tf
#定义两个占位符x,y。x和y都是张量
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
#自定义一个函数
def train(x,y):
with tf.Session() as sess:
result = print(sess.run(x+y))
return result
#调用自定义的函数,把占位符作为实参传递给函数
c = train(x,y)
#在会话中给占位符传递参数。
with tf.Session() as sess:
sess.run(c,feed_dict={x:3.0,y:2.0})
**# sess.run(train(x,y),feed_dic={x:3.0,y:2.0}) 这样运行依然报相同的错误**
以上程序运行会报错: You must feed a value for placeholder tensor ‘Placeholder’ with dtype float
原因:
自定义函数,不属于tensorflow模块中函数,他不需要通过会话(Session)才能执行。只要调用它,传递实参,就会立即执行。所以上面调用函数c = train(x.y)时,占位符还没有通过会话去赋值,所以系统报错。
解决该问题:
import tensorflow as tf
#定义两个占位符x,y。x和y都是张量
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
#自定义一个函数
def train(x,y):
#在自定义函数内部调用会话,给占位符赋值
with tf.Session() as sess:
result = = tf.add(x,y)
print(sess.run(result,feed_dict={x:3.0,y:2.0}))
#调用自定义的函数,把占位符作为实参传递给函数,此时占位符还没有数值
c = train(x,y)