一、训练模型的流程
1.定义数据集对象
__init__(self,......)
:可以视为构造函数__len__(self)
:返回读取文件的长度__getitem__(self, index)
:读取文件指定index
多张的图片(输入图、答案);对图片进行预处理操作(裁剪、翻转、归一化等);cv2
读取图片后要转换颜色通道,图片从HxWxC
改为CxHxW
的形式;生成one-hot encoding
;返回对应输入图像矩阵、标注图像矩阵、one-hot encoding
。
2.搭建网络结构
3.训练模型
- 定义epoch、学习率等超参数
- 初始化数据集对象、加载数据集
- 初始化模型
- 定义损失函数、优化函数
- 编写训练周期
- 将input输入到模型得到output
- 将output和label算loss
二、pytorch 加载模型
方法一:将整个网络都都保存下来
# 保存和加载整个模型
torch.save(model_object, 'model.pkl')
model = torch.load('model.pkl')
方法二:仅保存和加载模型参数
# 仅保存和加载模型参数(推荐使用)
torch.save(model_object.state_dict(), 'params.pkl')
model_object.load_state_dict(torch.load('params.pkl'))
三、遇到的问题
1.不能成功读取图片
- 路径存在中文
- 路径不对,用相对路径时需要特别注意,可以自己直接把字符串路径写道方法里测试一下