2017-12-26 1 views
0

tf.map_fn()에서는 제대로 작동 할 수 있도록 매개 변수를 구조화하려고 시도하지만 대부분의 예제 설명서에서는 함수 인수와 동일한 모양의 배열이나 텐서에 대해서만 설명합니다.Tensorflow tf.map_fn parameters

링크 포함

Does tensorflow map_fn support taking more than one tensor?

내 구체적인 예는 다음이다 : I 파라미터 텐서 형상 바와 없음, 2]와 [X, y]는 기대 일부 tensorflow 기능을 갖는다.

If elems is a (possibly nested) list or tuple of tensors, then each of these 
tensors must have a matching first (unpack) dimension 
:

텐서 A는 [BATCH_SIZE의 X * y를 2 형상의 tensorflow 문서에서

텐서 B는 형상이다 BATCH_SIZE, X, Y]

lambdaData = (tensorA, tensorB) 
lambdaFunc = lambda x: tensorflowFunc(x[0], x[1]) 
returnValues = tf.map_fn(lambdaFunc, lambdaData) 

tensorsA와 B는 차원 0에서만 일치하므로 스택하거나 연결할 수 없습니다. 치수 불일치를 변화 두 텐서

  • 이 텐서
  • 텐서 쌍
  • 위 결과 모두에서 목록의 튜플의

    1. 목록 : 나는 또한으로 lambdaData을 만드는 시도 오류. 모든 데이터를 단일 텐서에 배치하는 문서에 따라 권장 사용을 따르 겠지만 tensorA와 tensorB 사이의 차원 불일치 때문에 나는 할 수 없습니다. 누군가가 튜플 또는 elems에 대한 인수 목록을 가지고 행운이 있습니까?

    답변

    0

    tf.map_fn의 오류 메시지는 끔찍한 오해의 소지가 있습니다. 문서에이 부분은 자세히 언급되어 있지 않지만 튜플/텐서 목록을 전달하면 함수의 정확한 반환 값이 인수로 필요합니다. 가장 쉬운 방법은 정크를 반환 한 다음 첫 번째 반환 값만 가져 오는 것입니다.

    print(a.shape) #[batch, 784, 2] 
    print(b.shape) #[batch, 28, 28] 
    lambdaData = (a, b) 
    testFunc = lambda x: return <somethingUseful>, 0 
    returnValues, _ = tf.map_fn(testFunc, lambdaData) 
    

    은 예상대로 작동합니다.