AttributeError: 'tuple' object has no attribute 'log_softmax'

11,531

Solution 1

This is a well known problem.

Try one the following solutions:

  1. disable aux_logits when the model is created here by also passing aux_logits=False to the inception_v3 function.

  2. edit your train function to accept and unpack the returned tuple to be something like: output, aux = model(input_var)

Check the following link for more info.

Solution 2

This problem seams to me like instead you define F:

import torch.nn.functional as F

You in accident have set F to some tuple

F=(1,2)

And then when you call F.log_softmax you get exactly this error.

enter image description here

Share:
11,531
Israel-abebe
Author by

Israel-abebe

I am Software developer from Ethiopia. Graduated from Addis Ababa in Software engineering (BSc). I am interested in Working on Mobile APP, Game development and recently in Artificial Intelligence. I worked on more than 10 Software projects and I am very eager to learn and more.

Updated on June 24, 2022

Comments

  • Israel-abebe
    Israel-abebe almost 2 years

    while trying to finetune inception_V3 for my own dataset by changing the last fc layer like

    last_layer =nn.Linear(n_inputs, len(classes))
    inception_v3.fc = last_layer
    

    after that when I train it got this error on this position

        # on training loop
        output = inception_v3(data)
        # calculate the batch loss
        loss = criterion(output, target)
    

    Error is

     AttributeError: 'tuple' object has no attribute 'log_softmax'
    
  • Israel-abebe
    Israel-abebe over 5 years
    solved by doing inception_v3 = models.inception_v3(pretrained=True) inception_v3.aux_logits=False