在我的自定义丢失函数中,我想实现这个特定的计算:
输入:
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中没有预料到。希望回答,谢谢。
答案 0 :(得分:0)
我认为在张量流中没有直接的方法可以解决这个问题。但是,您可以创建自己的操作或在tensorflow中以粗略的方式实现它
condition
- 创建一个数组,其索引为1,传递条件,其余为0。 (可以轻松并行化并使用张量流tf.while_loop
)
prefixedSum
- 在condition
上使用prefix sum创建此数组。 (没有直接实施,但this可以提供帮助)
reducedB
- 使用condition
创建一个选定元素的数组,从prefixedSum
数组中选择索引。 (可以使用tf.while_loop
)
ans
- 使用prefixedSum
中的索引创建最终数组,并在reducedB
中查找该索引。 (可以使用tf.while_loop
)