PyTorch深度学习:使用余弦相似度进行准确率统计

本教程将演示如何在PyTorch深度学习中使用余弦相似度计算模型的准确率。

**代码示例:**pythonimport torchimport torch.nn.functional as F

... 定义网络结构、损失函数、优化器等 ...

在每个循环迭代外定义一个变量,用于统计正确的数量correct_total = 0total = 0

for i, input_tensor in enumerate(train_tensors): optimizer.zero_grad()

output = network(input_tensor)

loss = custom_loss(output, tensor_list[i])

loss.backward()    optimizer.step()

# 统计准确率    target_similarity = F.cosine_similarity(output, tensor_list[i].unsqueeze(0), dim=1)    label_list = [torch.tensor([1, 0, 0, 0]), torch.tensor([0, 1, 0, 0]), torch.tensor([0, 0, 1, 0]), torch.tensor([1, 1, 1, 1])]    other_list = []    for label_tensor in label_list:        if not torch.all(torch.eq(tensor_list[i], label_tensor)):            other_list.append(label_tensor)

correct = 0    if target_similarity > torch.max([F.cosine_similarity(output, other.unsqueeze(0), dim=1) for other in other_list]):        correct = 1

# 累计正确的数量和总数量    correct_total += correct    total += 1

计算最终的正确率accuracy = correct_total / totalprint('Final Accuracy: %.2f%%' % (100 * accuracy))

代码解释:

  1. 初始化: 在训练循环开始之前,我们定义了两个变量 correct_totaltotal ,分别用于统计预测正确的样本数和总样本数。2. 计算相似度: 在每个训练迭代中,我们首先计算目标张量 tensor_list[i] 与模型输出 output 之间的余弦相似度 target_similarity。3. 比较相似度: 接着,我们计算 output 与其他标签张量 other_list 中每个张量的余弦相似度,并找到最大值。如果 target_similarity 大于这个最大值,则认为模型预测正确,correct 变量加 1。4. 更新计数器: 每次迭代后,我们将 correct 加到 correct_total 中,并将 total 加 1。5. 计算最终准确率: 训练循环结束后,我们使用 correct_total 除以 total 来计算最终的准确率,并打印出来。

总结:

这段代码展示了如何在 PyTorch 中使用余弦相似度来计算模型的准确率。通过在训练循环中统计正确预测的样本数,我们可以评估模型的性能并跟踪其训练进度。


原文地址: https://www.cveoy.top/t/topic/MGI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录