Hi,
I create a ‘many to one model’ with LSTM, and I want to transform it into a ‘one to many model’. But I am not sure how to edit the codes.
Below codes are the current ‘many to one model’ with LSTM.
class LSTM(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super(RNN, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)
self.fc = nn.Linear(hidden_size, num_classes)
def forward(self, x):
# Set initial hidden and cell states
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)
c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)
# Forward propagate LSTM
out, _ = self.lstm(x, (h0, c0)) # out: tensor of shape (batch_size, seq_length, hidden_size)
# Decode the hidden state of the last time step
out = self.fc(out[:, 1, :])
return out
# One to Many
y(t3) y(t2) y(t1) y(t)
   
cell > cell > cell > cell

x(t3)
# Many to One
y(t)

cell > cell > cell > cell
   
x(t3) x(t2) x(t1) x(t)