AIうぉ--!(ai-wo-katsuyo-shitai !)

AIを上手く使ってみせたい!!自分なりに。

Pytorch, LSTM(1個), sine波の推定(予想?)は、この記事のコードがシンプルかも。。。。

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を増やすと精度が上がっている

そういうもんなんだろう。