我有一个像这样的网络用于图像分类,现在我有2个班级:
class ActionNet(Module):
def __init__(self, num_class=4):
super(ActionNet, self).__init__()
self.cnn_layer = Sequential(
#conv1
Conv2d(in_channels=1, out_channels=32, kernel_size=1, bias=False),
BatchNorm2d(32),
PReLU(num_parameters=32),
MaxPool2d(kernel_size=3),
#conv2
Conv2d(in_channels=32, out_channels=64, kernel_size=1, bias=False),
BatchNorm2d(64),
PReLU(num_parameters=64),
MaxPool2d(kernel_size=3),
#flatten
Flatten(),
Linear(576, 128),
BatchNorm1d(128),
ReLU(inplace=True),
Dropout(0.5),
Linear(128, num_class)
)
def forward(self, x):
x = self.cnn_layer(x)
return x
然后,在我训练了网络之后,我会使用以下代码预测图像:
def predict_image(image):
input = torch.from_numpy(image)
input = input.unsqueeze(1)
input = input.to(device)
output = model(input)
index = output.data.cpu().numpy().argmax()
return index
我如何获得所有类别的预测图像概率?因此结果将是概率为0 = 0.1、1 = 0.7的索引数组
答案 0 :(得分:0)
要在此处从模型输出中获取概率,可以使用softmax
函数。
尝试一下
import torch.nn.functional as F
...
prob = F.softmax(output, dim=1)
...