PyTorch深度学习:使用余弦相似度进行准确率统计
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))
代码解释:
- 初始化: 在训练循环开始之前,我们定义了两个变量
correct_total和total,分别用于统计预测正确的样本数和总样本数。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 著作权归作者所有。请勿转载和采集!