评估Tensor标量提高ValueError Tensorflow

时间:2018-08-28 13:08:12

标签: python tensorflow runtime-error

我正在编写一个相当复杂的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)时显式地提供会话,但这似乎无济于事。

我确定这可能只是某个地方的一个小错误,但是这一小问题使我忙于无法接受的时间。任何帮助将不胜感激,谢谢。

0 个答案:

没有答案