2016-10-31 3 views
0

스칼라를 얻기 위해 주어진 인덱스에서 텐서 요소를 가져올 수 있습니까? 예를 들어 이미지가 주어진 경우 shape = tf.shape(image)으로 모양을 검색 할 수 있지만 높이, 너비 및 깊이를 검색하려면 어떻게해야합니까?텐서 흐름에서 1D 텐서 인덱싱

height = tf.reshape(tf.slice(shape, [0], [1]), []) 
width = tf.reshape(tf.slice(shape, [1], [1]), []) 
depth = tf.reshape(tf.slice(shape, [2], [1]), []) 

다른 방법이 있나요 : 내가 찾은

수있는 유일한 방법은 다음과 같다?

답변

1

슬라이스 구문 (예를 [] 연산자를 사용) NumPy와 슬라이스 기반으로, 그리고 점점 약간 더 간결한 방법을 제공한다 shape 텐서의 높이, 폭, 깊이 : 텐서는 정적 (D)를 갖는 경우가

shape = tf.shape(image) 
height = shape[0] # returns a scalar 
width = shape[1] # returns a scalar 
depth = shape[2] # returns a scalar 

Nessuno's answer도 잘 작동 기형. 그러나 가변 크기 이미지 (예 : tf.image.decode_jpeg()의 결과)는 get_shape()을 사용할 때 일반적으로 높이 및 너비 크기에 대해 None을 부여합니다. 이는 이미지마다 다를 수 있기 때문입니다.

0

tf.Variable.get_shape(variable)을 사용하십시오.

image = tf.Variable([ [ [1,2,3],[3,4,4],[1,1,1] ], [[1,2,3],[3,4,4],[1,1,1] ]]) 
shape = image.get_shape() 
print([shape[i].value for i in range(len(shape))]) 

출력 :

[2, 3, 3