2016-08-09 2 views
0

나는 텐서 tf.shape(X) == [M, N, N]과 인덱스 집합 tf.shape(IDX) == [N, N]을 가지고 있습니다. 첫 번째 차원에서 인덱스 IDX을 사용하여 X의 슬라이스와 동일한 텐서 tf.shape(Y) = [N, N]을 어떻게 만들 수 있습니까? 나는. Y[i, j] = X[IDX[i, j], i, j] 모두 i,j = 1..N에 해당합니다. 나는 tf.gather_nd와 재생하려고하지만 결과 :(인덱스로 텐서로 잘라 내기

답변

2

업데이트 2016년 10월 12일에있다 :.

tensorflow 버전 0.11으로

최대 일 수 NumPy와 같은 방식으로 텐서에 인덱스

a = tf.Variable([9,10,11]) 
b = tf.constant([[1,2,3,4],[5,6,7,8]]) 
a = b[0,1:] 

그라디언트 또한 색인에서 지원됩니다.


당신은 이미?

어떤 시도 않았다

내가보고 한 tf.gather_nd에 버그가있는 것 같습니다. 다음은 응답입니다.

gather_nd (부분보다 색인 수가 적음)의 부분 색인이 최근에 추가되었습니다. 당신은 TensorFlow 버전을 사용하고 있습니다. 각 인덱스 텐서는 정확히 텐서 치수의 수를 가져야합니다. 코드는 HEAD에서 작동해야합니다.

그래서 0.10 이상 버전 gather_nd는 원하는대로 작동해야합니다.

그러나이 아래 당신이 순간에 전체 인덱스 설명이 필요 같은 보인다

import tensorflow as tf 
x = tf.constant([[1,1,1,1],[1,2,3,4]],shape=(2,4)) 
indices = [[0,0],[0,1]] 
y = tf.gather_nd(x,indices) 

작동뿐만 아니라 0 당신은 tf.pack 시도도 조각입니다.

또한 여기 tensorflow 인덱싱 텐서의 진행 상황 추적 할 수 있습니다 https://github.com/tensorflow/tensorflow/issues/206