Computes cumprod of x in logspace using cumsum to avoid underflow.

safe_cumprod(x, ...)

Arguments

x

Tensor to take the cumulative product of.

...

Passed on to cumsum; these are identical to those in cumprod

Value

Cumulative product of x.

Details

The cumprod function and its gradient can result in numerical instabilities when its argument has very small and/or zero values. As long as the argument is all positive, we can instead compute the cumulative product as exp(cumsum(log(x))). This function can be called identically to tf$cumprod.