Neural network 用nn.CrossEntropyLoss()训练的网络的测试和置信度得分

Neural network 用nn.CrossEntropyLoss()训练的网络的测试和置信度得分,neural-network,pytorch,lstm,loss-function,softmax,Neural Network,Pytorch,Lstm,Loss Function,Softmax,我培训了一个具有以下结构的网络: Intent_LSTM( (attention): Attention() (embedding): Embedding(34601, 400) (lstm): LSTM(400, 512, num_layers=2, batch_first=True, dropout=0.5) (dropout): Dropout(p=0.5, inplace=False) (fc): Linear(in_features=512, out_features=3, bias=

我培训了一个具有以下结构的网络:

Intent_LSTM(
(attention): Attention()
(embedding): Embedding(34601, 400)
(lstm): LSTM(400, 512, num_layers=2, batch_first=True, dropout=0.5)
(dropout): Dropout(p=0.5, inplace=False)
(fc): Linear(in_features=512, out_features=3, bias=True)
)
现在我想测试这个训练过的网络,并得到分类的置信度分数。 以下是我当前的测试功能实现:

output = model_current(inputs)
pred = torch.round(output.squeeze())
pred = pred.argmax(dim=1, keepdim=True)
现在我的问题如下

这里pred只是我的网络中一个完全连接的层的输出,没有丢失函数所要求的softmax。thispred=pred.argmaxdim=1,keepdim=True是获得预测的正确方法吗?或者我应该将网络输出传递到softmax层,然后执行argmax吗

我如何获得信心分数?我是否应该将网络输出传递到softmax层,并选择argmax作为类的置信度

在执行softmax之前还是之后选择argmax其实并不重要。因为使softmax最大化的任何东西也将使logits pre-softmax值最大化。所以你应该得到类似的值。 Softmax将为您提供每个类的分数或概率。因此,执行softmax后的值可用作置信度分数。