怎么知道模型有没有训练好?有没有达到想要的需求?
解决方法:在每轮训练之后加一个测试,在测试数据集上看效果(看损失之类的)。
注意:在测试时候不调优,仅为看效果。
下面的都在某一轮训练里
例如,他们都在for i in range(epoch):里面,具体看上一节代码
#测试步骤开始
total_test_loss = 0
with torch.no_grad():#取消梯度,不调优
for data in tes_dataloader:
img, targets = data
outputs = tudui(imgs)
loss = loss_fn(outputs, targets)
#截止到现在,loss只是一部分数据也就是data在网络模型上的损失
total_test_loss = total_test_loss+loss
#accuracy看后面准确率那里的讲解
accuracy = (outputs.argmax(1)==targets).sum()
#targets在上面img, targets = data
total_accuracy = total_accuracy + accuracy
print("整体数据集上的Loss:{}".format(total_test_loss))
print("整体数据集上的正确率:{}".format(total_accuracy/total_test_size))
torch.save(tudui,"tudui_{}.pth".format(i))
还可以用tensorboard可视化损失
预测的准确率(针对分类问题)
截图最后一行没写完[false, true].sum()=1
这个值/个数
Argmax使用
Argmax(1)表示横着看,Argmax(0)表示竖着看。同样一组数,输出结果不同。
文章来源:https://www.toymoban.com/news/detail-797468.html
文章来源地址https://www.toymoban.com/news/detail-797468.html
到了这里,关于土堆学习笔记——P28完整的模型训练套路(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!