我想在 Image Classification with Transfer Learning in PyTorch 中显示每张图片输出下的准确性
I want to show accuracy under each picture output shown in Image Classification with Transfer Learning in PyTorch
我关注这个 link : https://stackabuse.com/image-classification-with-transfer-learning-and-pytorch/#settingupapretrainedmodel
但我是编码技能的新手。请告诉我如何在图像下显示精度值。
该示例中使用的模型 returns 形状的对数张量(批量大小,classes)。假设你所说的 "accuracy value" 是 class 的预测概率最大的概率,你需要做的是首先通过从模型中获取输出的 SoftMax 来计算你的概率,这给出了批次中每个图像的预测概率。他们的 visualize_model 函数看起来像下面这样,但我还没有测试过。
def visualize_model(model, num_images=6):
was_training = model.training
model.eval()
images_handeled = 0
fig = plt.figure()
with torch.no_grad():
for i, (inputs, labels) in enumerate(dataloaders['val']):
inputs = inputs.to(device)
labels = labels.to(device)
outputs = model(inputs)
probabilities = nn.functional.softmax(outputs, dim=-1) # compute probabilities
_, preds = torch.max(outputs, 1)
for j in range(inputs.size()[0]):
images_handeled += 1
ax = plt.subplot(num_images//2, 2, images_handeled)
ax.axis('off')
ax.set_title('predicted: {}, probability: {}'.format(class_names[preds[j]], probabilities[preds[j]])) # add predicted class probability
imshow(inputs.cpu().data[j])
if images_handeled == num_images:
model.train(mode=was_training)
return
model.train(mode=was_training)
或者您的意思是总体 class化准确率?
我关注这个 link : https://stackabuse.com/image-classification-with-transfer-learning-and-pytorch/#settingupapretrainedmodel
但我是编码技能的新手。请告诉我如何在图像下显示精度值。
该示例中使用的模型 returns 形状的对数张量(批量大小,classes)。假设你所说的 "accuracy value" 是 class 的预测概率最大的概率,你需要做的是首先通过从模型中获取输出的 SoftMax 来计算你的概率,这给出了批次中每个图像的预测概率。他们的 visualize_model 函数看起来像下面这样,但我还没有测试过。
def visualize_model(model, num_images=6):
was_training = model.training
model.eval()
images_handeled = 0
fig = plt.figure()
with torch.no_grad():
for i, (inputs, labels) in enumerate(dataloaders['val']):
inputs = inputs.to(device)
labels = labels.to(device)
outputs = model(inputs)
probabilities = nn.functional.softmax(outputs, dim=-1) # compute probabilities
_, preds = torch.max(outputs, 1)
for j in range(inputs.size()[0]):
images_handeled += 1
ax = plt.subplot(num_images//2, 2, images_handeled)
ax.axis('off')
ax.set_title('predicted: {}, probability: {}'.format(class_names[preds[j]], probabilities[preds[j]])) # add predicted class probability
imshow(inputs.cpu().data[j])
if images_handeled == num_images:
model.train(mode=was_training)
return
model.train(mode=was_training)
或者您的意思是总体 class化准确率?