Pytorch, LSTM(1個), sine波の推定(予想?)
以下の記事のコードがシンプルだと思いました。 datahacker.rs
LSTMは、1個。
class myLSTM(nn.Module): def __init__(self, input_size=1, hidden_size=50, out_size=1): super().__init__() self.hidden_size = hidden_size self.lstm = nn.LSTM(input_size, hidden_size ) self.linear = nn.Linear(hidden_size, out_size) self.hidden = (torch.zeros(1,1,hidden_size ) , torch.zeros(1,1,hidden_size) )
補足説明
40プロット先まで予想していますが、、、
当然、1個づつの予想。予想結果をinputに回しているだけ。 末尾の行。
for i in range(future): seq = torch.FloatTensor(preds[-window_size:]) with torch.no_grad(): model.hidden = (torch.zeros(1,1,model.hidden_size), torch.zeros(1,1,model.hidden_size)) preds.append(model(seq).item())
40プロット先まで予想していますが、、、
future = 40
上記と、
window_size = 40
は、別々の値を設定できる。グラフとかで、40決め打ちのところとかは、適当に修正要。
future = 240にした例
epoch=30
epoch=200
単純に(安定して)、epochを増やすと精度が上がっている
そういうもんなんだろう。