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:
![x_values = [i for i in range]](https://i-blog.csdnimg.cn/blog_migrate/35871fb3fec4e9e18ff287e2663ac00a.png#pic_center)

建立一个模型:

制定超参数&损失函数

训练模型:
| 目标 | 注解 | 代码 |
|---|---|---|
| 数据格式转换 | 把输入的数据格式转化为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地跑),先不管,以后再学
现在我们对模型进行测试
测试就是把数据放进训练好的网络,得到的数据肯定还是要转化一下类型的~

模型的保存

本文介绍了PyTorch与TensorFlow在使用上的差异,指出PyTorch在调试方面更具优势。通过实例展示了PyTorch的基本操作,包括创建矩阵、查看尺寸、与NumPy交互以及利用autograd机制进行反向传播。还提供了简单的模型训练流程,并讲解了模型保存与加载的方法。文章最后强调了模型测试和梯度清零的重要性。
9万+

被折叠的 条评论
为什么被折叠?



