お疲れ様です。きざきまるおです。
今回はRNNについて書いていこうと思います。
内容が長くなるので何回かに分けて書こうと思いますのでどうぞよろしくお願いします。
それではどうぞ。
RNNとは
そもそもRNNとは何かというところから書いていきます。
RNNとは時系列順に並んだデータをモデルへ渡し、次の時間に発生するデータを予測するために使われることが多いニューラルネットワークモデルです。
仕組みについてざっくり説明すると、学習の途中で発生する中間層を次回学習時に使いまわすというイメージになります。
確認手順
ライブラリインポート
まずは、今回の確認で使用するライブラリをインポートしましょう。
import torch
import torch.nn as nn
from torch.utils.data import TensorDataset, DataLoader
from torch import optim
データの準備
今回は0~100の間で投下数列を1000個用意します。
random_x = torch.linspace(0, 100, 1000)
random_y = torch.sin(random_x)
次にデータを特徴量とラベルに分けるためにデータを少し加工します。
n_time = 10
n_sample = len(check_x)-n_time
input_data = torch.zeros((n_sample, n_time, 1))
correct_data = torch.zeros((n_sample, 1))
for i in range(n_sample):
input_data[i] = check_y[i:i+n_time].view(-1, 1)
correct_data[i] = check_y[i+n_time:i+n_time+1]
10個のデータから次のデータを予測するという処理をしたいので、上記のような感じになります。
0埋めした箱に特徴量とラベルを挿入していくイメージになります。
データセットとデータローダー
データセットはPytorchで準備されているclassを利用します。
データローダーはバッチサイズが8で作成しています。
dataset = TensorDataset(input_data, correct_data)
train_loader = DataLoader(dataset, batch_size=8, shuffle=True)
ここまでで準備が完了しました。
次からはいよいよモデルを構築して学習するところまでを書いていこうと思います。
それではまた。