この記事は, Pythonを利用して研究を行なっていく中で私がつまずいてしまったポイントをまとめていくものです。同じような状況で苦しんでいる方々の参考になれば嬉しいです。Pythonつまずきポイント集の目次は以下のページをご覧ください。
【超初心者お悩み解決】Pythonつまずきポイント記事まとめページ
この記事は,Pythonを利用して研究を行なっていく中で私がつまずいてしまったポイントをまとめていくものです。同じような状況で苦しんで...
スポンサーリンク
環境
●Ubuntu 16.04
●Python 3.7.3
●conda 4.7.12
●pytorch 1.2.0
現象
原因は分からないけど何故かLSTMがうまく学習してくれない。
原因
「nn.LSTM」の戻り値の2つ目が(h_0, c_0)であるのに,(c_0, h_0)として受け取ってしまっていました。再帰的なLSTMを設計していたため,hだと思って扱っていたものが実はcで,cだと思って扱っていたものが実はhであったという状況でした。学習が進まないのも納得です。
解決方法
# Before
y, (c_n, h_n) = self.lstm_beat(x_beat, t, h_0, c_0)
# After
y, (h_n, c_n) = self.lstm_beat(x_beat, t, h_0, c_0)