Hi,
Could you please help me to find why following error happens.
When I try to train model I get massage AttributeError: ‘tuple’ object has no attribute ‘log_softmax’
at this line:
loss = criterion(output, target)
And indeed, when I print output, I have tuple like this:
(tensor([[ 0.3656, -0.2767],
…
[ 0.3415, -0.4962]], grad_fn=)
My input is [16,100] when 16 is number of features, 100 is batch size
How can I get rid of tuple?
Below is how my model is defined.
Sorry for my night English.
Thank you very much in advance!
N_INPUTS = 16
N_NEURONS = 5
N_OUTPUTS = 2
n_layers=2
drop_prob=0.85

class ImageRNN(nn.Module):
    def __init__(self, batch_size, n_inputs, n_neurons,drop_prob, n_outputs,n_layers):
        super(ImageRNN, self).__init__() 
        self.n_neurons = n_neurons#hidden_size
        self.batch_size = batch_size
        self.n_inputs = n_inputs
        self.n_outputs = n_outputs
        self.n_layers=n_layers
        self.drop_prob = drop_prob
        self.lstm = nn.LSTM(self.n_inputs, self.n_neurons, self.n_layers, 
                        dropout=drop_prob, batch_first=False)
        self.dropout = nn.Dropout(drop_prob)
    
        self.FC = nn.Linear(self.n_neurons, self.n_outputs)
    

def init_hidden(self):
    weight = next(self.parameters()).data
    
    hidden = (weight.new(self.n_layers, self.batch_size, self.n_neurons).zero_(),
                  weight.new(self.n_layers, self.batch_size, self.n_neurons).zero_())
    
    return hidden


    
def forward(self, X):
    X = X.unsqueeze(dim=0)
    self.hidden = self.init_hidden()     
    r_output, hidden = self.lstm(X, self.hidden)
    out = self.dropout(r_output)
    out = self.FC(out)
    out=out.view(-1, self.n_outputs)
    return out, self.hidden

model = ImageRNN(batch_size, N_INPUTS, N_NEURONS, drop_prob, N_OUTPUTS,n_layers)
print(model)