First time on the forum, glad to be here! I intend on making torch my go-to for deep learning.
So I am trying to run a tensor with dim:
[# texts, # sequential words, len of 1-hot for each word]
[2500,13,100]
target is a single string per text: [2500,1]
so I’m trying to map a sequence of 13 one-hot vectors of len 100 to 1 string for 2500 instances.
heres my code:
D_in, D_out = ([torch_x.shape[1], torch_x.shape[2]]), torch_y.shape[1]
print(D_in, D_out)
[13, 100] 1

H1, H2, H3 = 500, 800, 300


class RNN(nn.Module):
    def __init__(self, D_in, H1, H2, H3, D_out):
        super(RNN, self).__init__()
        
        self.lstm = nn.LSTM(D_in, H1)
        self.linear1 = nn.Linear(H1, H2)
        self.linear2 = nn.Linear(H2, D_out)
        
        
   

def forward(self, x):
        y_pred, states = self.lstm(x)
        y_pred         = self.linear1(y_pred).clamp(min=0)
        y_pred         = self.linear2(y_pred)
        return y_pred
model = RNN(D_in, H1, H2, H3, D_out)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4 * 2)
criterion = nn.MSELoss(reduction='sum')


losses = []
for t in range(50):
    y_pred = model(torch_c)

    
    loss = criterion(y_pred, torch_y)
    print(t, loss.item())
    losses.append(loss.item())
    
    if torch.isnan(loss):
        break
    
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

and the error for this is:
—> 14         y_pred, states = self.lstm(x)
RuntimeError: input.size(-1) must be equal to input_size. Expected 13, got 100
if I change  D_in  to a 1-D of 100 , it’s:
----> 5     loss = criterion(y_pred, torch_y)
RuntimeError: The size of tensor a (13) must match the size of tensor b (2500) at non-singleton dimension 1
any thoughts on how I can do this?
thanks so much!