了解PyTorch预测

时间:2018-07-31 19:44:39

标签: python pytorch

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

f = MFDataset(filenames)

latbounds = [ 32.5 , 48.5 ]

lonbounds = [ 235.5 , 245.5 ]

lats = f.variables['lat'][:]
lons = f.variables['lon'][:]

# latitude lower and upper index
latli = np.argmin( np.abs( lats - latbounds[0] ) )
latui = np.argmin( np.abs( lats - latbounds[1] ) ) 
# longitude lower and upper index
lonli = np.argmin( np.abs( lons - lonbounds[0] ) )
lonui = np.argmin( np.abs( lons - lonbounds[1] ) )  

temprSubset = f.variables['tc'][ : , latli:latui , lonli:lonui,]

返回:

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

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

1 个答案:

答案 0 :(得分:1)

免责声明:我并不真正了解pytorch,但是我猜测是基于我所知道的其他库和一般标准实践。

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

您可以认为它是一种“原始”概率分布式范围,通常会通过softmax压缩到(0,1]范围内。