将pytorch resnet头从sigmoid更改为Softmax



我是pytorch的新手。我写了下面的代码来使用Resnet和Sigmoid进行预测,用于二进制分类。我只需要把它改成softmax,因为我可能有两个以上的课程。

我知道pytorch与Keras不同,softmax在CrossEntropyLoss中。所以我不确定如何更改顶层以使模型使用softmax:

model =  torchvision.models.resnet50(pretrained=False)

model.fc = torch.nn.Sequential(
torch.nn.Linear(
in_features=2048,
out_features=1
) ,   torch.nn.Sigmoid()
)

model = model.cpu()

以及更高版本:

lossFunc=torch.nn.BCELoss(class_weights)

你可以试试这个:

model.fc[1] = torch.nn.Softmax(10)

其中10是类的数量,您可以根据自己的需求进行估价。

最新更新