【问题标题】:Printing tensorflow variable seq2seq打印张量流变量seq2seq
【发布时间】:2017-01-18 18:34:53
【问题描述】:

我正在尝试在 tensorflow seq2seq 代码中打印张量 attns。 Seq2Seq.py

我试过了:

tf.Print(attns, [attns])

但它什么也没打印。

我试过了

sess = tf.Session() 
sess.run(attns) or attns.eval()

在这种情况下它会抛出:InvalidArgumentError: You must feed a value for placeholder tensor

我也尝试过使用 sess.run()

sess = tf.get_default_session()
aa = sess.run(attns)

在这种情况下,sess 对象为 None。

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    tf.Print 不是“经典”操作指令,因为这些指令不是在基于图形的符号代码中执行的。相反,需要的是计算图中的特定节点,然后只要您的计算“通过”该节点,就会触发该节点。

    这正是 tf.Print 所做的。它通过创建一个标识操作来围绕任何其他节点创建一个“包装器”节点,该标识操作在触发时会打印张量列表的值。

    this print functioninput_(或attns,在您的情况下)的第一个参数是包装节点,data(或[attns] 在您的情况下)是要打印的张量列表。

    因此,您要做的是添加这一行:

    attns = tf.Print(attns, [attns])
    

    在这里,attns 被分配了一个对 attns 的打印包装标识操作 - 所以张量 attns 具有完全相同的行为,除了在计算时,它还会打印 [attns]

    【讨论】:

    • 当我尝试这个时,由于尺寸不匹配,它会在 seq2seq.py#L560 抛出值错误。我尝试删除 tf.Print 并且效果很好。我正在加载一个训练有素的模型,以防万一。虽然它仍然什么也没打印。
    • @p.j 很奇怪。您能否针对确切的错误更新您的评论? (不是完整的轨迹,而是张量不匹配的名称,以及给定和预期的尺寸)
    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2019-09-30
    • 2017-11-05
    • 2017-01-14
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多