TensorFlow에서 예기치 않은 (최소한 나를 위해) 동작이 나타났습니다. 나는 tf.argmax
(- argmin
)이 외부에서 내부로 Tensor의 계급에서 작동한다고 생각했지만 외관상으로는 그렇지 않습니까?!TensorFlow : argmax (-min)
예 : input
및 dimension
:
import numpy as np
import tensorflow as tf
sess = tf.InteractiveSession()
arr = np.array([[31, 23, 4, 24, 27, 34],
[18, 3, 25, 0, 6, 35],
[28, 14, 33, 22, 20, 8],
[13, 30, 21, 19, 7, 9],
[16, 1, 26, 32, 2, 29],
[17, 12, 5, 11, 10, 15]])
# arr has rank 2 and shape (6, 6)
tf.rank(arr).eval()
> 2
tf.shape(arr).eval()
> array([6, 6], dtype=int32)
tf.argmax
는 두 개의 인수를. 배열 arr
의 인덱스가 arr[rows, columns]
이기 때문에 tf.argmax(arr, 0)
은 행 당 최대 요소 인덱스를 반환하지만, tf.argmax(arr, 1)
은 컬럼 당 최대 요소를 반환 할 것으로 예상됩니다. 마찬가지로 tf.argmin
에 대해서도 마찬가지입니다.
그러나, 그 반대가 사실이다 :
tf.argmax(arr, 0).eval()
> array([0, 3, 2, 4, 0, 1])
# 0 -> 31 (arr[0, 0])
# 3 -> 30 (arr[3, 1])
# 2 -> 33 (arr[2, 2])
# ...
# thus, this is clearly searching for the maximum element
# for every column, and *not* for every row
tf.argmax(arr, 1).eval()
> array([5, 5, 2, 1, 3, 0])
# 5 -> 34 (arr[0, 5])
# 5 -> 35 (arr[1, 5])
# 2 -> 33 (arr[2, 2])
# ...
# this clearly returns the maximum element per row,
# albeit 'dimension' was set to 1
누군가가이 동작을 설명 할 수 있습니까?
모든 n 차원 텐서 t
은 t[i, j, k, ...]
에 의해 색인화됩니다. 따라서 t
의 순위는 n이고 모양은 (i, j, k, ...)
입니다. 치수 0은 i
에 해당하므로 치수 1은 j
입니다. tf.argmax
(& - argmin
)이이 구성표를 무시하는 이유는 무엇입니까?
numpy의 [argmax']와 동일한 규칙 (http://docs.scipy.org/doc/numpy/reference/generated/numpy.argmax.html) –
행을 줄이면 argmax를 가져 오는 이유가 무엇인지 설명 할 수 있습니까? 각 개별 열의? 또한 n 차원 텐서의 경우이 동작은 어떻게됩니까? 5D-Tensor에서 'i, j, k, l'또는 'm'을 줄이는 것과 관련하여 어느 차원이 필요한지 알아 내려고합니다. – daniel451
정의에 따라 _across_ 행을 최대로 검색하면 _within_ 열을 검색 중입니다. ''d'' 차원 배열의 경우,''argmax'' _across_'''' 축은''d-1'' 나머지 인덱스의 가능한 조합에 대해 최대 _amongst_''arr [ind1, ind2, ..., ind_i_minus_1, :, ind_i_plus_1, ..., ind_d]''를 검색합니다. – lballes