state = cell.zero_state(batchsize, tf.float32).eval()
我正在尝试按照这个 https://github.com/kvfrans/twitch/blob/master/sample.py#L45 示例来解码和运行一个训练好的Tensorflow模型,但似乎使用的Tensorflow代码版本较旧。我已经设法将大多数调用修复到1.0.0版本,但我在上面的代码行处卡住了,它给我以下错误:
Traceback (most recent call last): File "server.py", line 1, in <module> from sample import * File "/home/user/twitch/sample.py", line 75, in <module> print predict("this game is") File "/home/user/twitch/sample.py", line 46, in predict state = initialstate.eval()AttributeError: 'tuple' object has no attribute 'eval'
关于如何修复 .eval()
和 state
有什么想法吗?它稍后在以下代码中被使用:
guessed_logits, state = sess.run([logits, final_state], feed_dict={input_data: primer, initialstate: state})
回答:
.eval()
方法 仅在 tf.Tensor
上实现,但正如其他人所观察到的,cell.zero_state()
方法返回一个 tuple
对象。
tf.Session.run()
方法能够理解如何解包元组,而 tf.Tensor.eval()
只是在 “默认”会话 中对单个张量调用 tf.Session.run()
的便捷包装器。利用这一观察,你可以将这一行代码:
state = cell.zero_state(batchsize, tf.float32).eval()
…替换为以下代码:
state = tf.get_default_session().run(cell.zero_state(batchsize, tf.float32))