Comme vous pouvez le voir dans le code ci-dessous, la couche finale est Liner et n'inclut pas la couche softmax. https://github.com/pytorch/vision/blob/master/torchvision/models/vgg.py
J'ai pensé: "Eh bien, est-ce que ça va?"
Tout était écrit ci-dessous. https://discuss.pytorch.org/t/torchvision-models-dont-have-softmax-layer/18071
Au moment de l'apprentissage, nn.CrossEntoropyLoss ()
est utilisé, mais ce n'est pas nécessaire car il se compose de nn.LogSoftmax
et nn.NLLLoss.
.
Lors de la déduction, si vous voulez la probabilité de chaque classe, vous avez besoin de nn.functional.softmax ()
, mais si vous voulez prédire, vous pouvez omettre l'idx de la plus grande valeur dans torch.max etc.
Au moment de la classification des classes, je pensais que la couche finale était softmax en raison de la mort cérébrale, mais si j'y réfléchis attentivement, elle n'est nécessaire que pour le calcul de la perte, alors j'ai pensé «je vois».