在我的自定义损失函数中,我想实现这个特定的计算:
输入:
tensor A: placeholder([None, 1])
tensor B: placeholder([None, 1])
而A、B的形状相同。
输出:
tensor res: placeholder([None, 1]).
例如:
tensor A: [0, 0, 1, 2, 2, 2, 3,...]
tensor B: [4, 9, 2, 3, 5, 9, 4,...]
tensor res: [4, 4, 2, 3, 3, 3, 4,...]
起初,res[0] = B[0],如果 A[i] == A[i-1],则 res[i] = res[i-1];否则,res[i] = B[i]。所以我们得到 res=[4, 4, 2, 3, 3, 3, 4,...]。
我真的很纠结这个问题,而且我不应该在张量流中。希望回答,谢谢。
我不认为在tensorflow中有直接的方法可以解决这个问题。但是,您可以创建自己的操作或在tensorflow中以粗略的方式实现它
。condition
- 创建一个数组,其中 1 在索引处传递条件,其余部分为 0。 (可以很容易地并行化并在张量流中使用tf.while_loop
(prefixedSum
- 在condition
上使用前缀总和来创建此数组。(没有直接实现,但这会有所帮助(reducedB
- 使用condition
创建选定元素的数组,从数组中选择索引prefixedSum
。(可以使用tf.while_loop
实现(ans
- 使用prefixedSum
中的索引创建最终数组,并在reducedB
中查找该索引。(同样可以使用tf.while_loop
实现(