PyTorch 代码示例:计算训练数据的准确率
PyTorch 训练数据准确率计算示例
以下是使用 PyTorch 代码计算训练数据的准确率并保存网络参数的示例:
# 统计准确率
correct_total = 0
total = 0
for i, input_tensor in enumerate(train_tensors):
optimizer.zero_grad()
output = network(input_tensor)
loss = custom_loss(output, tensor_list[i])
# 计算自身标签和其他标签的相似度
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)
if target_similarity > torch.max(torch.stack([F.cosine_similarity(output, other.unsqueeze(0), dim=1) for other in other_list]), dim=0).values:
correct_total += 1
total += 1
# 计算最终的正确率
accuracy = correct_total / total
running_loss += loss.item()
# 保存网络参数
if epoch == num_epochs - 1:
torch.save(network.state_dict(), 'final_model.pt')
# 打印训练信息
print('train Accuracy: %.2f%%' % (100 * accuracy))
代码解释
- 迭代训练数据: 代码使用循环遍历训练数据集
train_tensors中的每个样本input_tensor。 - 模型预测: 使用模型
network对input_tensor进行预测,得到预测结果output。 - 计算损失: 使用自定义损失函数
custom_loss计算预测结果output和目标标签tensor_list[i]之间的损失。 - 计算相似度: 使用
F.cosine_similarity()函数计算output和目标标签tensor_list[i]之间的余弦相似度,并将结果存储在target_similarity中。 - 构建其他标签列表: 创建一个列表
other_list,包含所有不等于当前样本标签的标签张量。 - 比较相似度: 计算
output与other_list中每个标签张量之间的余弦相似度,并使用torch.max()找到最大的相似度。然后将该最大相似度与target_similarity进行比较。如果target_similarity大于最大相似度,则说明模型预测正确,将correct_total加 1。 - 计算准确率: 循环结束后,使用
correct_total和total计算最终的准确率accuracy。 - 更新累计损失: 将当前损失值
loss.item()添加到累计损失running_loss中。 - 保存模型参数: 如果当前训练轮数等于总训练轮数减 1,则使用
torch.save()函数将模型参数保存到文件'final_model.pt'中。 - 打印训练信息: 打印当前训练的准确率。
这段代码使用余弦相似度比较模型预测结果和目标标签的相似度,并使用最大相似度来判断预测是否正确。通过计算准确率,可以评估模型在训练集上的性能。
原文地址: https://www.cveoy.top/t/topic/3FL 著作权归作者所有。请勿转载和采集!