PyTorch学习
基本要求&与其他框架比较:
软件:具有dubg功能的IDE(如PyCharm、Eclipse)、Jupyter、anaconda、Pytorch
与PyTorch相比,Tensorflow的定义和规则比较多,并且在调试过程中不太方便。
框架学习方法
不拘泥于具体操作,在实际运用的过程中查找并使用
基本使用方法
创建一个矩阵
x = torch.empty(5,3); x =torch.rand(5.3);
可见,
pytorch框架 输出后的数据格式是tensor(张量)
TensorFlow框架 输出后的数据格式是ndarray展示矩阵大小 torch.size()
改变矩阵维度 view(维度)
Numpy(ndarry)和PyTorch(tensor)交互
autograd机制
为什么要用框架呢?因为自己编程太麻烦了,尤其是做反向传播的时候
在反向传播的时候,我们需要 对矩阵进行求导 这是费事费力的,如果框架帮我们做完了,我们就可以专心于模型的搭建了
requires_grad=True
注意:如果梯度不清零,梯度会进行累加的!!!
所以,我们在进行梯度计算的时候,基本流程是:
**清零->梯度计算->反向传播->清零**
例子
创建两个数组x和y:
建立一个模型:
制定超参数&损失函数
训练模型:
目标 | 注解 | 代码 |
数据格式转换 | 把输入的数据格式转化为tensor格式 | torch.from_numpy(x_train) |
梯度清零 | 避免梯度累加出现错误 | .zero_grad() |
前向传播 | 得到预测的数据 | |
计算损失 | 即预测损失与标签之间的差距 | |
反向传播 | 求梯度 | loss.backward() |
进行参数更新 | 自动根据学习率和梯度对参数进行更新 | .step() |
过程显示 | loss.item | |
预测 | ||
模型保存 | 模型保存完是一个字典类型(模型不仅仅是模型, | torch.save(model.state_dict(),‘model.pkl’) |
模型读取 | 还有可能有模型损失、结果等等都可以放进去) | model.load_state_dict(torch.load(“model.pkl”)) |
目前最简洁的版本就做完了,有很多问题没有弄(比如我们这个代码里是一个batch就都跑完了,理论上应该是一个Batch一个Batch地跑),先不管,以后再学现在我们对模型进行测试
测试就是把数据放进训练好的网络,得到的数据肯定还是要转化一下类型的~
模型的保存