我们可以在feed_dict中将tf.variable馈送到tf.placeholder吗?

时间:2018-08-14 09:45:44

标签: python tensorflow machine-learning

我想用tensorflow做一个简单的任务。但我遇到一个错误

import numpy as np
import pandas as pd

fv = tf.Variable(10.0,name="first_var")

sv = tf.Variable(20.0,np.random.randn(),name="second_var")

fvp = tf.placeholder("float32",name="first_fvp",shape=[])

svp = tf.placeholder("float32",name="second_svp",shape=[])

result = tf.Variable(0.0,name="output")

result =  np.multiply(fvp,svp)

sess = tf.Session()

sess.run(tf.global_variables_initializer())

print(sess.run(result,feed_dict={fvp:fv,svp:sv}))

错误=设置具有序列的数组元素。

在这种情况下,我得到一个错误

如果我使用

print(sess.run(result,feed_dict={fvp:5.0,svp:10.0}))

我得到的输出是50.0

1 个答案:

答案 0 :(得分:0)

首先,我仍然不太了解您的问题是什么。看来您已经解决了该错误。请尽可能编辑。

关于该错误:

您无法将张量输入该feed_dict中。

仔细阅读tensorflow/python/client/session.py。当您向feed_dict={}馈送一些数据时,可接受的馈送值包括Python标量,字符串,列表,numpy ndarray或TensorHandles。在您的情况下,fvsv是张量。

因此您的第二个print(sess.run(result,feed_dict={fvp:5.0,svp:10.0}))将起作用。

您还可以尝试fv = np.array([10.0])sv = np.array([20.0])

此外,您不需要此result = tf.Variable(0.0,name="output"),如果要命名输出,可以使用result = tf.identity(np.multiply(fvp,svp), name="output")