目录
可以看到,在之前的编码中,每次运行都是重新走完一遍训练流程然后再进行测试输出结果
见下图:
每次都要执行10个循环的训练其实这就可以看成10个epoch
这显然是非常麻烦的
所以我们就要将模型打包进行操作来规避每次的重新训练
常用的是只保存 网络参数
每次都实例化网络然后传入参数即可
首先看一下文档
这个方法可以将网络参数序列化到本地
实际上就是直接保存实例化网络就行(然后可以传入相应参数来选择保存模型或是只保存参数)
注意:只要在循环或者epoch后保存模型就行(本质上就是保存的参数,每次循环或者epoch后都会更新参数)
- #保存网络
- torch.save(cnn.state_dict(),'cnn.pth')
然后运行
此时是多出了一个pth的权重文件
有了pth之后就要使用加载
所谓加载就是可以不需要训练过程
只需要实例化一个网络然后传入保存的pth参数即可
cnn.load_state_dict(torch.load('cnn.pth'))
这里可以看到,用实例化的网络调用load_state_dict方法
然后用torch.load反序列化读取传入之前训练好的参数
(注释掉所有训练过程(和参数更新有关的所有过程))完整如下:
然后运行
和之前结果是一样的
实际上就是传入参数
然后给传入参数后的网络一个输入
然后网络输出
得到结果
首先是数据集搭建要满足项目要求
这个项目中实际上就是对拍摄到的每个车牌字符和对应的人为设置的label
传入网络训练
得到输出的结果(图片字符是什么)比如说图片苏经过网络输出苏
然后再对一整张完整图片进行识别,识别出每个字符