1

在我的自定义损失函数中,我想实现这个特定的计算:

输入:

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中。希望回答,谢谢。

4

1 回答 1

0

我认为在 tensorflow 中没有直接的方法来处理这个问题。但是,您可以创建自己的操作或在 tensorflow 中以粗略的方式实现它

  1. condition- 创建一个数组,索引处为 1,通过条件,其余为 0。(可以很容易地并行化并在 tensorflow 中使用tf.while_loop

  2. prefixedSum- 使用前缀总和condition创建这个数组。(没有直接实现,但这有所帮助)

  3. reducedB- 使用从数组condition中选择索引来创建一个选定元素的prefixedSum数组。(可以使用实现tf.while_loop

  4. ans- 使用索引创建最终数组,prefixedSum并在reducedB. (再次可以使用实现tf.while_loop

于 2018-01-17T08:20:49.950 回答