土堆学习笔记——P28完整的模型训练套路(二)

发布时间:2024年01月17日

怎么知道模型有没有训练好?有没有达到想要的需求?
解决方法:在每轮训练之后加一个测试,在测试数据集上看效果(看损失之类的)。
注意:在测试时候不调优,仅为看效果。

下面的都在某一轮训练里
例如,他们都在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://blog.csdn.net/Whalawhala/article/details/135513978
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。