Проблемы с использованием предварительно обученного ResNet50 в PyTorch для решения CIFAR10 Dataset - PullRequest
1 голос
/ 18 июня 2020

Я получил следующую ошибку при использовании предварительно обученного ResNet50 в PyTorch:

RuntimeError 
Traceback (most recent call last)
<ipython-input-14-8f0d0641ef12> in <module>()
      28         # Update parameters
      29         optimizer.zero_grad()
 ---> 30         loss.backward()
      31         optimizer.step()
      32 

 1 frames
 /usr/local/lib/python3.6/dist-packages/torch/autograd/__init__.py in 
 backward(tensors, grad_tensors, retain_graph, create_graph, 
 grad_variables)
      98     Variable._execution_engine.run_backward(
      99         tensors, grad_tensors, retain_graph, create_graph,
 --> 100         allow_unreachable=True)  # allow_unreachable flag
     101 
     102 

 RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

По этой ссылке находится ноутбук: https://colab.research.google.com/drive/1k40NNulSIS6ANagopSPBH4Xty_Cw39qC?usp=sharing

1 Ответ

1 голос
/ 18 июня 2020

Проблема в том, что вы устанавливаете новый атрибут model.classifier, в то время как вы действительно хотите заменить текущий «классификатор», т. Е. Изменить model.fc.

Это выходит за рамки на ваш вопрос, но позже вы обнаружите другую проблему. В вашем новом классификаторе есть модуль LogSoftmax(), а вы используете nn.CrossEntropyLoss(). Как видите здесь , вам не следует этого делать.

...