pytorch框架学习(1)网络的简单构建

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)交互
tensor-->ndarry
ndarry-->tensor

autograd机制

为什么要用框架呢?因为自己编程太麻烦了,尤其是做反向传播的时候
在反向传播的时候,我们需要 对矩阵进行求导 这是费事费力的,如果框架帮我们做完了,我们就可以专心于模型的搭建了

requires_grad=True
手动定义哪个参数要求导
在这里插入图片描述
注意:如果梯度不清零,梯度会进行累加的!!!
所以,我们在进行梯度计算的时候,基本流程是:

            **清零->梯度计算->反向传播->清零**

例子

创建两个数组x和y:
x_values = [i for i in range]
在这里插入图片描述

建立一个模型:

在这里插入图片描述
制定超参数&损失函数
在这里插入图片描述
训练模型:

目标 注解 代码
数据格式转换 把输入的数据格式转化为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地跑),先不管,以后再学

现在我们对模型进行测试
测试就是把数据放进训练好的网络,得到的数据肯定还是要转化一下类型的~
在这里插入图片描述
模型的保存
save就是保存,load就是读取,state_dict就是权重参数

猜你喜欢

转载自blog.csdn.net/vibration_xu/article/details/125958183
今日推荐