2016-10-22 3 views
2

나는 tensorflow에서 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()의 일부로 실행해야한다고 생각합니다. tensorflow에 익숙해지기 – Abhi