Я пишу довольно сложную модель / программу 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.
Я нашел этот связанный вопрос, и хотя ответ на этот вопрос действительно дает действительный код, я не могу адаптировать его для «соответствия» 'мой код Я думаю, что ошибка связана с тем, что я звоню sess.run()
дважды, но в моем реальном коде мне нужно это сделать.
Я попытался переставить такие вещи, как помещение инициализации заполнителя в блок with
, но затем программа жалуется на InvalidArgumentError: You must feed a value for placeholder tensor
, на который я нашел этот соответствующий вопрос, но опять же я не смог понять что не так с этим.
Я также пытался явно указать сеанс при вызове eval()
, как я это делаю eval(session=sess)
, но это, похоже, не помогает.
Я уверен, что это где-то просто небольшая ошибка, но эта маленькая вещь заняла у меня больше времени, чем я хочу признать. Спасибо за любую помощь, спасибо.