以前 Differentiable neural computers を実装した際、

\begin{equation} \label{a_t_equation} {\bf a}_t[\phi_t[j]] = (1 - {\bf u}_t[\phi_t[j]])\prod_{i=1}^{j-1}{\bf u}_t[\phi_t[i]]) \end{equation}

という式を Theano で実装するため theano.tensor.extra_ops.cumprod を使用した際に遭遇したバグ共有。

症状としては gradient を計算をすると 1 iteration 目から NaN が現れるというものだったが ここをみて解決。
どうやら入力に 0 が入ると gradien 計算において 0 割りがおこり、NaN が出現するらしい。

結果として行ったことは justheuristic さんが書いてくれているコードをそのまま使っただけだが、問題は解決した。

- guchio3


Comments

comments powered by Disqus