在 PyTorch 中使用预训练的 ResNet50 解决 CIFAR10 数据集的问题
Problems using pretrained ResNet50 in PyTorch to solve CIFAR10 Dataset
我在 PyTorch 中使用预训练的 ResNet50 时遇到以下错误:
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
笔记本在此 link: https://colab.research.google.com/drive/1k40NNulSIS6ANagopSPBH4Xty_Cw39qC?usp=sharing
问题是您正在设置新属性 model.classifier
,而您实际上想要替换当前的 "classifier",即更改 model.fc
.
这超出了你的问题范围,但稍后你会发现另一个问题。您的新分类器有一个 LogSoftmax()
模块,而您正在使用 nn.CrossEntropyLoss()
。如您所见,您不应该这样做。
我在 PyTorch 中使用预训练的 ResNet50 时遇到以下错误:
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
笔记本在此 link: https://colab.research.google.com/drive/1k40NNulSIS6ANagopSPBH4Xty_Cw39qC?usp=sharing
问题是您正在设置新属性 model.classifier
,而您实际上想要替换当前的 "classifier",即更改 model.fc
.
这超出了你的问题范围,但稍后你会发现另一个问题。您的新分类器有一个 LogSoftmax()
模块,而您正在使用 nn.CrossEntropyLoss()
。如您所见