计算CNTK中静态轴的累积和

时间:2017-10-04 19:11:11

标签: python deep-learning cntk

我想计算CNTK模型中张量的累积和。这对于序列来说相当简单,但目前还不清楚如何在静态轴上执行此操作。如果你先验地知道轴的维数,你可以想象用一组复杂的gather / reduce_sum / splice操作来做这件事,但这样效率会非常低效。

1 个答案:

答案 0 :(得分:3)

这样的操作肯定在我们的待办事项清单上。由于这可以被视为矩阵产品,因此通过以下实现不会太低效:

def cumsum(x, axis=-1):
   d = x.shape[axis]
   U = C.constant(np.triu(np.ones((d,d))).astype(x.dtype))
   if axis != -1:
      x = C.swapaxes(x, -1, axis)
   z = C.times(x, U)
   if axis != -1:
      z = C.swapaxes(z, -1, axis)
   return z