如何安全地计算cumprod的梯度

时间:2016-12-01 17:34:38

标签: python numpy vectorization derivative

我正在尝试为深度学习框架编写MyObjectClass *p; //holds pointer to the instance in main thread qApp->postEvent(p, new QEvent(QEvent::User+1)); Op,正向计算很简单,但是梯度计算存在一些问题。

显然, <{strong> .updateTensorflow正在使用以下错误的实施:

cumprod

这种情况大部分都有效,但是如果def cumprod_grad(x, g): ''' Returns cumprod gradient wrt x Args: x: vector original input g: vector upstream gradient ''' fx = np.cumprod(x) return np.cumsum((fx*g)[::-1])[::-1] / x 的元素为零,则除法将生成x,这是不正确的。

示例:

nan

O(n ^ 2)修复很简单,但效率很低。

针对此问题的高效且可矢量化的解决方案是什么?优选地,O(n)解决方案适合于GPU实现。

0 个答案:

没有答案