【发布时间】:2019-07-23 17:07:10
【问题描述】:
我有两个尺寸分别为A:[B,3000,3] 和C:[B,4000] 的张量。我想使用 tf.gather() 将张量 C 中的每一行用作索引,并将张量 A 中的每一行用作参数,以获得大小为 [B,4000,3] 的结果。
这是一个更容易理解的例子:假设我有张量
A = [[1,2,3],[4,5,6],[7,8,9]],
C = [0,2,1,2,1],
结果 = [[1,2,3],[7,8,9],[4,5,6],[7,8,9],[4,5,6]],
使用tf.gather(A,C)。应用于维度小于 3 的张量时一切正常。
但是当以描述为开头的情况下,通过应用tf.gather(A,C,axis=1),结果张量的形状是
[B,B,4000,3]
似乎tf.gather() 只是将张量 C 中的每个元素作为索引来收集张量 A 中的元素。我正在考虑的唯一解决方案是使用 for 循环,但这会极大地减少使用tf.gather(A[i,...],C[i,...])获得正确大小的张量的计算能力
[B,4000,3]
那么,是否有任何函数能够类似地完成这项任务?
【问题讨论】:
标签: python tensorflow tensor