2016-06-20 3 views
1

고려해야 다음과 같은 코드 -tensorflow : reduce_max 기능은

바로 여기 keep_dims의 목적은 무엇
a=tf.convert_to_tensor(np.array([[1001,1002],[3,4]]), dtype=tf.float32) 
b=tf.reduce_max(a,reduction_indices=[1], keep_dims=True) 
with tf.Session(): 
    print b.eval() 

? 나는 꽤 테스트하고 위

b=tf.reduce_max(a,reduction_indices=[1], keep_dims=False) 
b=tf.expand_dims(b,1) 

나는 어쩌면 잘못된 상응하는 대

,하지만 내 생각은 keep_dims가 false의 경우, 우리는 2 차원 coloumn 벡터를 얻을 것을 보았다. 그리고 keep_dims = True이면 우리는 2x1 행렬을가집니다. 그러나 그들은 어떻게 다른가요?

답변

4

하나 이상의 인덱스 (즉, 텐서의 크기)를 줄이면 텐서의 순위를 효과적으로 줄입니다 (즉, 숫자의 수 또는 액세스하기 위해 필요한 인덱스의 수). 텐서의 한 요소). keep_dims=True을 설정하면 tensorflow가 감축하는 차원을 유지하도록 지시합니다. 그러면 크기가 1이되지만 여전히 입니다.입니다. 열 벡터와 nx1 행렬은 개념적으로 동일한 것이지만 tensorflow에서는 rank 1 (요소에 액세스하려면 단일 색인이 필요합니다) 및 요소 2에 액세스하려면 두 개의 인덱스가 필요합니다.