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

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

下面的都在某一轮训练里
例如,他们都在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可视化损失

预测的准确率(针对分类问题)

土堆学习笔记——P28完整的模型训练套路(二)_第1张图片截图最后一行没写完[false, true].sum()=1
这个值/个数

Argmax使用
Argmax(1)表示横着看,Argmax(0)表示竖着看。同样一组数,输出结果不同。
土堆学习笔记——P28完整的模型训练套路(二)_第2张图片

土堆学习笔记——P28完整的模型训练套路(二)_第3张图片

你可能感兴趣的:(学习,笔记)