I am new to Pytorch, Kindly help to understand error.
class LSTMClassifier(nn.Module):
def __init__(self, input_dim, seq_size, hidden_dim, label_size, batch_size, bidirectional, num_layers):
super(LSTMClassifier, self).__init__()
self.input_dim = input_dim
self.seq_size = seq_size
self.hidden_dim = hidden_dim
self.batch_size = batch_size
self.num_layers = num_layers
self.bidirectional = bidirectional
self.lstm = nn.LSTM(input_dim, hidden_dim, num_layers=num_layers, bidirectional=bidirectional, batch_first=True)
self.hidden = self.init_hidden()
self.fc = nn.Linear(hidden_dim*seq_size, 128)
if bidirectional:
self.fc = nn.Linear(2*hidden_dim*seq_size, 128)
self.hidden2label = nn.Linear(128, label_size)
def init_hidden(self):
first_size = 1
if self.bidirectional:
first_size = 2
h0 = Variable(torch.zeros(first_size*self.num_layers, self.batch_size, self.hidden_dim)).float()
c0 = Variable(torch.zeros(first_size*self.num_layers, self.batch_size, self.hidden_dim)).float()
return (h0, c0)
def forward(self, x):
lstm_out, self.hidden = self.lstm(x, self.hidden)
lstm_out = torch.squeeze(lstm_out) #original
y = self.fc(lstm_out)
y = F.relu(y)
y = self.hidden2label(y)
return y
…
/usr/local/lib/python3.6/dist-packages/torch/nn/functional.py in linear(input, weight, bias)
1674 ret = torch.addmm(bias, input, weight.t())
1675 else:
-> 1676 output = input.matmul(weight.t())
1677 if bias is not None:
1678 output += bias
RuntimeError: size mismatch, m1: [320 x 2], m2: [20 x 128] at /pytorch/aten/src/TH/generic/THTensorMath.cpp:41