我正在编写一个相当复杂的Tensorflow模型/程序,它似乎可以达到我的预期目的。但是,现在我正在更改模型以接受动态成形的数据,这就是我遇到问题的地方。基本上,我的问题归结为以下代码(该代码未在TF 1.3上运行):
def foo():
# !!! Here is where we get the error !!!
myVar = myVar_t.eval()
# Now myVar should be an int
# In this example it should be 38
return myVar
# Placeholder Scalar Tensor
myVar_t = tf.placeholder(tf.int32)
# Something to call foo()
result = foo()
# Initialize global variables
init = tf.global_variables_initializer()
# Get the session
sess = tf.Session()
# Set it as default so eval() (in theory) will work
with sess.as_default():
# Run the global variables initializer
sess.run(init)
# Following should feed 38 into placeholder and then get result
out = sess.run([result], feed_dict={myVar_t: 38})
# Should print 38
print(out)
在这里,正如您可能已经猜到的那样,我得到了ValueError("Cannot evaluate tensor using 'eval()': No default session is registered.
我发现的this相关问题,尽管该问题的答案确实产生了有效的代码,但我无法使其适应于我的代码。我认为该错误与我两次调用sess.run()
有关,但是在我的真实代码中,我需要这样做。
我尝试重新安排诸如将占位符初始化放在with
块中的操作,但是随后程序向InvalidArgumentError: You must feed a value for placeholder tensor
投诉,我发现了this的相关问题,但是我再次无法找出问题所在。
我也曾尝试像在eval()
中那样,在调用eval(session=sess)
时显式地提供会话,但这似乎无济于事。
我确定这可能只是某个地方的一个小错误,但是这一小问题使我忙于无法接受的时间。任何帮助将不胜感激,谢谢。