나는 텐서 행을 반복하고, 각 행의 인덱스를 검색하고, 다른 텐서의 벡터를 모으기 위해이를 사용하고, 새로운 벡터로 결합하는 루프를 구현하려고합니다. 텐서. 문제는 각 행에 다른 수의 인덱스가 포함될 수 있다는 것입니다 (예 : [[-1, -1,1,4, -1], [3, -1, -1, -1, -1]] 첫 번째 행 인덱스 : [1, 4], 두 번째 행 인덱스 [3]). tf.while_loop 또는 tf.scan을 사용할 때 문제가 발생합니다. 첫 번째로 모든 수집 된 텐서를 함께 쌓는 방법을 이해하지 못합니다. 대신 두 번째 것은 모든 출력이 동일한 모양을 갖기를 원합니다 (모든 출력이 [없음, 10]의 일반적인 모양임을 알 수없는 것처럼 보입니다).TensorFlow : while 루프에서 텐서 스태킹
아무도 비슷한 것을 시도한 적이 있습니까?
나는 while_loop의 코드를 부착 해요 :
i = tf.constant(0)
def body(i, merging):
i += 1
print('i', i)
i_row = tf.gather(dense, [i])
i_indices = tf.where(i_row > 0)[:, 1]
i_vecs = tf.gather(embeddings_ph, i_indices)
return i, i_vecs
tf.while_loop(lambda i, merging : tf.less(i, 2), body,
loop_vars=[i,merging],
shape_invariants=[i.get_shape(),
tf.TensorShape((None, 3))],
name='vecs_gathering')
무엇은 여기에 누락 된 새로운 텐서 함께 (각 난에 대한 i_vec)를 모든 while_loop 출력 스택하는 것입니다.