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

问题描述 投票:0回答:1

我已经训练了具有以下结构的网络:

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)

现在我的问题如下。

  1. 这是我的网络中完全连接的层的输出,没有softmax(根据损失函数的要求)。这(pred = pred.argmax(dim = 1,keepdim = True))是获得预测的正确方法吗?还是应该将网络的输出传递到softmax层,然后执行argmax?

  2. 我如何获得置信度分数?我应该将网络的输出传递到softmax层,然后选择argmax作为类的置信度吗?

我已经训练了具有以下结构的网络:Intent_LSTM((注意力):Attention()(嵌入):嵌入(34601,400)(lstm):LSTM(400,512,num_layers = 2,batch_first = True,退出= 0.5)(...

neural-network pytorch lstm loss-function softmax
1个回答
1
投票
  1. 无论您在进行softmax之前还是之后选择argmax都没有关系。因为使softmax最大化的任何事情也将使logits(pre-softmax)值最大化。因此,您应该获得相似的值。
© www.soinside.com 2019 - 2024. All rights reserved.