moje pytanie składa się z dwóch połączonych ze sobą części:TensorFlow: Max tensora wzdłuż osi
W jaki sposób obliczyć max wzdłuż pewnej osi tensora? Na przykład, jeśli mam
x = tf.constant([[1,220,55],[4,3,-1]])
chcę coś takiego
x_max = tf.max(x, axis=1) print sess.run(x_max) output: [220,4]
wiem, że to
tf.argmax
itf.maximum
, ale nie daje maksymalną wartość wzdłuż osi pojedynczej tensora. Na razie mam obejście:x_max = tf.slice(x, begin=[0,0], size=[-1,1]) for a in range(1,2): x_max = tf.maximum(x_max , tf.slice(x, begin=[0,a], size=[-1,1]))
Ale wygląda mniej niż optymalnie. Czy jest lepszy sposób to zrobić?
Biorąc pod uwagę indeksy
argmax
tensora, w jaki sposób mogę indeksować do innego tensora za pomocą tych indeksów? Na przykładziex
powyżej, jak mam zrobić coś jak następuje:ind_max = tf.argmax(x, dimension=1) #output is [1,0] y = tf.constant([[1,2,3], [6,5,4]) y_ = y[:, ind_max] #y_ should be [2,6]
wiem krojenia, jak w ostatnim wierszu, nie istnieje w TensorFlow jeszcze (#206).
Moje pytanie brzmi: jakie jest najlepsze obejście tego konkretnego przypadku (może przy użyciu innych metod, takich jak zbieranie, wybieranie itp.)?
Dodatkowe informacje: Wiem, że
x
iy
będą tylko tensorami dwuwymiarowymi!
pod względem kompletności, w drugim przykładzie, należy dodać na 3 linii: 'Amax = tf.argmax (y, 1)' i usuwania pierwszej linii. –
'reduction_indices' jest przestarzałe. zamiast tego użyj 'axis' –