2017-01-18 6 views
0

tensorflow seq2seqコードでテンソルattnsを出力しようとしています。 Seq2Seq.pyテンソルフロー変数seq2seqの印刷

私が試した:

tf.Print(attns, [attns]) 

を、それは何も出力しません。

私はこのような場合は、それがスロー

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

を試してみました:

)あなたは、私も(sess.runを使用してみましたが、プレースホルダテンソル

の値を供給しなければならない

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

を:InvalidArgumentErrorをこの場合、sessオブジェクトはNoneです。

答えて

1

tf.Printは、シンボリックなグラフベースのコードでは実行されないため、「古典的な」操作命令ではありません。その代わりに必要なのは、計算グラフ内の特定のノードで、計算がそのノードを「通過」するたびにトリガーされます。

これはまさにtf.Printの機能です。トリガされると、テンソルのリストの値を出力するアイデンティティ操作を作成することによって、他のノードの周りに「ラッパー」ノードを作成します。

(あなたのケースまたはattnsthis print functioninput_の最初の引数は、ラップされたノード、及びdata(または場合[attns])で印刷されるテンソルのリストです。あなたはそのため何をしたいのか

は、この行を追加することです。ここでは

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

を、attnsattnsに印刷ラッパーアイデンティティ操作を割り当てられている - ので、テンソルattnsはことを除いて、まったく同じ動作を持っているときにそれを計算されると、[attns]も印刷されます。

+0

これを試しているとき、ディメンションの不一致が原因でseq2seq.py#L560に値のエラーが発生しています。私はtf.Printを削除しようとしました。それが重要な場合に備えて、訓練されたモデルをロードしています。それでも何も印刷されません。 –

+0

@ p.j奇妙な。あなたは正確なエラーのあなたのコメントを更新できますか? (完全なトレースではなく、テンソルの不一致の名前、与えられた、予想される次元) – cleros