GRU.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import torch
  2. import torch.nn as nn
  3. import torch.nn.functional as F
  4. from base import BaseModel
  5. class GRUModel(BaseModel):
  6. def __init__(self, input_channels, output_channels, input_len, pred_len, hidden_channels , layers = 1):
  7. super(GRUModel, self).__init__()
  8. self.input_channels = input_channels
  9. self.output_channels = output_channels
  10. self.input_len = input_len
  11. self.pred_len = pred_len
  12. self.hidden_channels = hidden_channels
  13. self.layers = layers
  14. self.GRU = nn.GRU(input_size = self.input_channels,
  15. hidden_size = self.hidden_channels,
  16. num_layers = self.layers,
  17. batch_first = True)
  18. self.out_linear = nn.Linear(in_features = self.hidden_channels,out_features = self.output_channels)
  19. def forward(self, x):
  20. x , hidden = self.GRU(x)
  21. x = self.out_linear(x)
  22. B , L , C = x.shape
  23. x = x.reshape(B,-1)
  24. return x
  25. def set_device(self,device):
  26. self.device = device
  27. # input = torch.randn((32,96,5))
  28. # model = GRUModel(input_channels = 5, output_channels = 1, input_len = 96, pred_len = 96, hidden_channels = 64 , layers = 1)
  29. # out = model(input)
  30. # print(out.shape)