Intermediate Deep Learning with PyTorch
Michal Oleszak
Machine Learning Engineer
x
h
y
h
h
and y
are the sameThree inputs and outputs (two hidden states):
h
: short-term statec
: long-term stateThree "gates":
class Net(nn.Module): def __init__(self, input_size): super().__init__()
self.lstm = nn.LSTM( input_size=1, hidden_size=32, num_layers=2, batch_first=True, ) self.fc = nn.Linear(32, 1)
def forward(self, x): h0 = torch.zeros(2, x.size(0), 32) c0 = torch.zeros(2, x.size(0), 32)
out, _ = self.lstm(x, (h0, c0))
out = self.fc(out[:, -1, :]) return out
__init__()
:nn.RNN
with nn.LSTM
forward()
:c
c
and h
with zeroslstm
layerclass Net(nn.Module): def __init__(self, input_size): super().__init__()
self.gru = nn.GRU( input_size=1, hidden_size=32, num_layers=2, batch_first=True, ) self.fc = nn.Linear(32, 1)
def forward(self, x): h0 = torch.zeros(2, x.size(0), 32) out, _ = self.gru(x, h0) out = self.fc(out[:, -1, :]) return out
__init__()
:nn.RNN
with nn.GRU
forward()
:gru
layerIntermediate Deep Learning with PyTorch