python - 了解 PyTorch 预测

标签 python pytorch

对于我训练过的模型,此代码:

model(x[0].reshape(1,784).cuda())

返回:

tensor([[-1.9903, -4.0458, -4.1143, -4.0074, -3.5510,  7.1074]], device='cuda:0')

我的网络模型定义为:

# Hyper-parameters 
input_size = 784
hidden_size = 50
num_classes = 6
num_epochs = 5000
batch_size = 1
learning_rate = 0.0001

    criterion = nn.CrossEntropyLoss()
    optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)  

        class NeuralNet(nn.Module):
            def __init__(self, input_size, hidden_size, num_classes):
                super(NeuralNet, self).__init__()
                self.fc1 = nn.Linear(input_size, hidden_size) 
                self.relu = nn.ReLU()
                self.fc2 = nn.Linear(hidden_size, num_classes)  

            def forward(self, x):
                out = self.fc1(x)
                out = self.relu(out)
                out = self.fc2(out)
                return out

我试图理解返回值:

tensor([[-1.9903, -4.0458, -4.1143, -4.0074, -3.5510,  7.1074]], device='cuda:0')

值 7.1074 是张量数组中最有可能的最大值?由于 7.1074 位于位置 5,因此输入 x[0] 预测的相关输出值为 5 是否有意义?如果是这样,这背后的直觉是什么?

最佳答案

免责声明:我不太了解 pytorch,但我是根据我所知道的其他库和一般标准实践进行猜测的。

我相信这是最后一层的输出,即 fc2 线性变换。因此,预测类别将是类别 5,具有最高值。

您可以将其视为一种“原始”概率分布式范围,然后通常通过 softmax 将其压缩到范围 (0,1] 中。

关于python - 了解 PyTorch 预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51620964/

相关文章:

python - 如何访问项目根文件夹

python - 从 Python 访问 igraph R 对象

python - conv2d 之后的 PyTorch CNN 线性层形状

python - 使用minidom python解析xml元素属性

python - 如何在 Python 中打印没有子字符串的文本

python - 如何测试 send_file flask

pytorch - 当我们有 pack_sequence() 时,为什么我们需要 pack_padded_sequence()?

machine-learning - 将 Keras 代码转换为 PyTorch 代码(整形)时出现问题

python - PyTorch Gradient Accumulation for small datasets 的最后一步

python - 尝试在 Pytorch 中加载自定义数据集