如何解决如何在没有循环的情况下重新排序张量流中张量中的元素?
考虑张量流中的两个张量:Ta = [[1,2,3],[1,4]],Tb = [[True,False,True],[False,True,False]]。 Tb 表示 Ta 允许取值的位置。我需要将所有允许的 Ta 值带到左侧,例如 Ta_ordered = [[1,3,2],[2,1,4]]。
解决方法
试试这个方法。它基于按必要顺序对元素进行排序,然后使用 tf.gather()
:
import tensorflow as tf
Ta = [[1,2,3],[1,4]]
Tb = [[True,False,True],[False,True,False]]
Ta,Tb = (tf.convert_to_tensor(t) for t in (Ta,Tb))
X,Y = Ta.shape
inds = tf.range(X * Y)
inds = tf.reshape(inds,(X,Y))
adj = tf.cast(Tb,tf.int32) * (X + 1)
inds -= adj # guarantees minimums for marked elements
inds = tf.argsort(inds)
output = tf.gather(Ta,inds,batch_dims=1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。