2017-10-29 5 views
1

TensorFlowでは、テンソルのサイズが大きい場合、2次元行列の対角など、デバッグ目的でテンソルの一部を印刷するだけで便利です。私は、テンソル全体を次のように印刷する方法しか知りません。tf.Printを使用してテンソルの一部をプリントする方法は?

sess = tf.InteractiveSession() 
a = tf.constant(1.0, shape=[1000, 1000]) 
a = tf.Print(a, [a], "print entire a\n", summarize=1000000) 
b = a + 1. 
ret = sess.run(b) 

上記のコードは、 'a'テンソル全体を出力します。しかし、私は 'a'の一部をどのように印刷するかはわかりません。例えば、私は[0,0] sess.run(A)を行わず、次のコードは動作しません印刷したい場合:

sess = tf.InteractiveSession() 
a = tf.constant(1.0, shape=[1000, 1000]) 
a[0,0] = tf.Print(a[0,0], [a[0,0]], "print part of a\n", summarize=1000000) 
b = a + 1. 
ret = sess.run(b)  

答えて

1

ドキュメントから:

Print(
    input_, 
    data, 
    message=None, 
    first_n=None, 
    summarize=None, 
    name=None 
) 

テンソルのリストを出力します。これは評価時にdataという印刷の副作用 との同一性操作です。

aは同じままにしてください、とdataパラメータにあなたが印刷する必要があるテンソルを配置する必要があります。

import tensorflow as tf 

sess = tf.InteractiveSession() 
a = tf.constant(1.0, shape=[1000, 1000]) 
a = tf.Print(a, [a[0, 0]], "Print part of a\n", summarize=100000) 
b = a + 1. 
ret = sess.run(b) 
+0

ニース!フォローアップの質問:フォーマットされたテンソルを印刷する方法はありますか?たとえば、= tf.Print(a、[a [0:3、0:3]])を実行すると、TFは[[1 1 1] [1 1 1] [1 1 1]]をコンソールに出力します1行に[1 1 1]、次に[1 1 1]などの代わりに – user131379

+0

'tf.Print'ではなく、何を達成したいのですか? –

+0

時には、このようなものを用意することが最善です。ret、avalue = sess.run([b、a]) –

関連する問題