April 2020
Intermediate to advanced
552 pages
6h 13m
Japanese
前ステップでは、RNNを使って時系列データ(サイン波)の学習を行いました。ここでは、前ステップのコードに対して2つの改良を加えます。
1つ目は、時系列データ用の「データローダ」を作ることです。前ステップでは、1つのデータに対して(バッチサイズを1として)モデルの順伝播を行いました。ここでは時系列データ用のデータローダを使って、複数データからなるミニバッチに対して順伝播を行います。
2つ目の改良は、RNNレイヤの代わりにLSTMレイヤを使うことです。LSTMレイヤを使うと、より精度の高い認識が期待できます。最後に、その2つの改良を行った上で、もう一度サイン波の学習を行ってみます。
前ステップでは、時系列データを先頭から順番に1つずつ(バッチサイズを1として)取り出しました。ここでは、複数のデータをミニバッチとしてまとめて学習を行わせます。そのために、専用のデータローダを作成します。
時系列データをミニバッチとしてまとめるには、データを与える開始位置を各バッチで“ズラす”ことが考えられます。たとえば、1000個の並びからなる時系列データがあり、サイズが2のミニバッチを作る場合を考えます。その場合、1つ目のサンプルデータは、時系列データの先頭(0番目)から順に取り出します。そして、2つ目のサンプルデータは、500番目のデータを開始位置として、そこから順に取り出します(開始位置を500だけズラします)。
以上の点を踏まえて、時系列データ用のデータローダを実装します。コードは次のようになります。
dezero/dataloaders.py
classSeqDataLoader(DataLoader):
Read now
Unlock full access