知行编程网知行编程网  2022-06-12 15:00 知行编程网 隐藏边栏 |   抢沙发  2 
文章评分 0 次,平均分 0.0
Pytorch编写代码基本步骤思想

作者:忆臻 (哈工大SCIR实验室在读博士生)
魏福煊 哈工大英才实验班本科生
谢天宝 哈工大英才实验班本科生

   一、前言

在我们要用pytorch构建自己的深度学习模型的时候,基本上都是下面这个流程步骤,写在这里让一些新手童鞋学习的时候有一个大局感觉,无论是从自己写,还是阅读他人代码,按照这个步骤思想(默念4大步骤,找数据定义、找model定义、(找损失函数、优化器定义),主循环代码逻辑),直接去找对应的代码块,会简单很多。

   二、基本步骤思想

所有的深度学习模型过程都可以形式化如下图:

Pytorch编写代码基本步骤思想

分为四大步骤:

1、输入处理模块 (X 输入数据,变成网络能够处理的Tensor类型)

2、模型构建模块 (主要负责从输入的数据,得到预测的y^, 这就是我们经常说的前向过程)

3、定义代价函数和优化器模块 (注意,前向过程只会得到模型预测的结果,并不会自动求导和更新,是由这个模块进行处理)

4、构建训练过程 (迭代训练过程,就是上图表情包的训练迭代过程

这几个模块分别与上图的数字标号1,2,3,4进行一一对应!

   三、实例讲解

知道了上面的宏观思想之后,后面给出每个模块稍微具体一点的解释和具体一个例子,再帮助大家熟悉对应的代码!

1.数据处理

对于数据处理,最为简单的⽅式就是将数据组织成为⼀个 。但许多训练需要⽤到mini-batch,直 接组织成Tensor不便于我们操作。pytorch为我们提供了Dataset和Dataloader两个类来方便的构建。

torch.utils.data.Dataset

继承Dataset 类需要override 以下⽅法:

Pytorch编写代码基本步骤思想

torch.utils.data.DataLoader

)

DataLoader Batch。如果选择shuffle = True,每⼀个epoch 后,mini-Batch batch_size 常⻅的使⽤⽅法如下:

Pytorch编写代码基本步骤思想

2. 模型构建

所有的模型都需要继承torch.nn.Module , 需要实现以下⽅法:

Pytorch编写代码基本步骤思想

其中forward() ⽅法是前向传播的过程。在实现模型时,我们不需要考虑反向传播。

3. 定义代价函数和优化器

Pytorch编写代码基本步骤思想

这部分根据⾃⼰的需求去参照doc

4、构建训练过程

pytorch的训练循环⼤致如下:

Pytorch编写代码基本步骤思想

下面再用一个简单例子,来巩固一下:

Pytorch编写代码基本步骤思想
Pytorch编写代码基本步骤思想
slides来自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699
Pytorch编写代码基本步骤思想
slides来自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699
Pytorch编写代码基本步骤思想
slides来自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699
Pytorch编写代码基本步骤思想
slides来自https://www.bilibili.com/video/BV1Y7411d7Ys?from=search&seid=3765076366663992699

   四、资源推荐

希望上面的讲解能帮助新手童鞋建立一个基本的代码逻辑轮廓,这里推荐几个我觉得很好的资源:

1、第一个是B站刘二大人的入门Pytorch视频,这是我见过入门最好的视频资源之一,强烈推荐,上面的例子slides也均来自于此,地址如下

https://www.bilibili.com/video/BV1Y7411d7Ys?p=6

2、其实入门之后,就不用看太多学习资料了,你是搞哪个方向的,推荐直接去看一下相关方向顶会论文实现,从配环境、debug看懂他的code,到调参到他论文的相近结果,功力会针对性提高很多。

希望文章对一些新手朋友有帮助~


<p style="white-space: normal;text-align: center;"><strong style=""><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong>完<strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong></span></strong></span></strong></p><pre><pre style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section><p style="margin-bottom: 15px;padding-right: 0em;padding-left: 0em;max-width: 100%;color: rgb(127, 127, 127);font-size: 12px;font-family: sans-serif;line-height: 25.5938px;letter-spacing: 3px;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;font-size: 16px;font-family: 微软雅黑;caret-color: red;box-sizing: border-box !important;overflow-wrap: break-word !important;">为您推荐</span></strong></span></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;">MIT校长评中美科技竞赛:胜利不是期盼对手的失利</p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;">GitHub重大更新:在线开发上线,是时候卸载IDE了</span></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;">美国官宣117000名 IT 人失业,真是史无前例!</span><br  /></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;">数据分析入门常用的23个牛逼Pandas代码</p><section style="margin: 5px 8px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;">特朗普拿H1B签证开刀,LeCun吴恩达等实名谴责!<br  /></section></section></section></section></section></section></section></section></section>
Pytorch编写代码基本步骤思想

本篇文章来源于: 深度学习这件小事

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享