2016-10-22 12 views
2

テンソルフローのtf.rank関数を理解しようとしています。ドキュメントhereから、ランクはテンソル内の別個の要素の数を返すべきであると理解しました。Tensorflowのtf.rank関数

ここで、xと重みは2つの異なる2 * 2テンソルであり、それぞれに4つの異なる要素があります。しかしながら、ランク()関数の出力は、次のとおり

テンソル( "ランク:0"、形状=()、DTYPE = INT32)テンソル(=() "Rank_1 0"、形状、 DTYPE = INT32)

また、テンソルのxに対して、Iは、のfloat32テンソルが、ランク()静止INT32として出力にndarray変換するDTYPE =フロートとtf.constant()を使用します。

g = tf.Graph() 
with g.as_default(): 
    weights = tf.Variable(tf.truncated_normal([2,2])) 
    x = np.asarray([[1 , 2], [3 , 4]]) 
    x = tf.constant(x, dtype = tf.float32) 
    y = tf.matmul(weights, x) 
    print (tf.rank(x), tf.rank(weights)) 


with tf.Session(graph = g) as s: 
    tf.initialize_all_variables().run() 
    print (s.run(weights), s.run(x)) 
    print (s.run(y)) 

出力をどのように解釈すればよいですか。

答えて

3

まず、tf.rankは要素数ではなくテンソルの次元を返します。たとえば、tf.rankの出力は2x2行列と呼ばれ、2となります。

テンソルのランクを印刷するには、適切なノードを作成します。 rank = tf.rank(x)とし、ウェイトとxの場合と同様に、このノードをSession.run()で評価します。 print (tf.rank(x), tf.rank(weights))を実行すると、テンソルの説明が出力されます。tf.rank(x), tf.rank(weights)は、定義された値を持つ変数ではなくグラフのノードです。

+0

ありがとうDanevskyi。それは理にかなっている。私はsession.run()の一部として実行する必要があると思う。テンソルフローに慣れる – Abhi

関連する問題