以前 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 さんが書いてくれているコードをそのまま使っただけだが、問題は解決した。
Comments
comments powered by Disqus