| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Pytorch与深度学习 —— 4. 初识 PyTorch 的网络模型结构 -> 正文阅读 |
|
[人工智能]Pytorch与深度学习 —— 4. 初识 PyTorch 的网络模型结构 |
在没有任何基础的前提下,直接学习如何搭建神经网络,意义其实不大。我建议你如果因为读研或者好奇而开始学神经元网络,建议你先看看我前面写的基础知识内容后,再回来学习内容。 深度学习知识总结—— 1.1. 什么是梯度下降 当然,理解以上内容需要一定的线性代数方面的知识。不过既然你都想掌握AI技术了,这点门槛应该不是什么大问题。 构建神经元网络模型的基本范型所谓范式,就是说用代码要怎么构建神经元网络模型的基本套路。对于Pytorch来说,基本分为以下四步:
所以,我们用代码的形式,表示为
注意这里的结构,这就是我提到过的这么一种逻辑过程: 我们虽然是按照这4个步骤来编写 torch 网络,但不意味着实际代码就是这样的,接下来以全连接神经元网络为例,了解一般范型是怎样的。 构建网络模型构建网络模型,说到底就是确定一个神经元网络是以什么结构来处理任务。以 torch 为代表的AI框架,封装了大量底层的操作,和基础模型,所以这让我们能用非常简单的方法构建出所需的训练网络。 和前面提到的稍微有点不太一样的地方,是 torch 在这方面提供了已经是实现好的框架,我们使用者只需要按要求填东西就好了。 那么构建网络模型,如果不想自己一步步实现,那么就一定要自己继承 torch.nn.Module 这个基类。除了声明网络模型中用到的层和定义层结构外,用户自己还需要实现一个 forward 向前计算的函数。 比如说这样:
除了例子中用到的 torch.nn.Linear 线性层模型外, torch.nn 也提供了其他常用的模型,例如卷积层、循环层等。 模型创建完毕后,就需要对模型进行实例化:
选择优化和损失函数损失函数,以均方差函数 (MSE) 为例。 L o s s = 1 N ∑ ( y ^ ? y ) 2 Loss = \frac{1}{N} \sum (\hat{y} - y)^2 Loss=N1?∑(y^??y)2 它所做的主要工作,就是把观测值和预测值之间做一个比较,并且计算出误差。在机器学习领域,类似功能的又被称为评价函数。 在 torch.nn 包里,提供了很多有用的,不同类型的损失函数。定义损失函数的方法,以MSE为例:
而优化函数,本质上是对梯度下降求导的优化、学习率等的定义(以MSE为例)。 ω ? = ω ? Δ 1 N ∑ i = 1 n 2 ( ω ? y i ) \omega * = \omega - \Delta \frac{1}{N} \sum_{i=1}^{n} 2(\omega -y_i) ω?=ω?ΔN1?i=1∑n?2(ω?yi?) 除了torch提供的几种优化函数外,你也可以通过 torch.optim.Optimizer 自定义自己的优化算法,如果仅调用 torch 提供的优化函数,那么调用方式一般为:
构建迭代过程迭代的过程,说到底就是缩小误差的过程,而这个过程也称训练过程。这里,我们连同上面提到的优化函数和损失函数一起封装到一个函数里,命名为train,于是有了
如果需要在训练过程中打印或者绘制训练结果,可以在foo后面加入执行语句。另外,就是torch在每一轮计算的时候,都需要做一次梯度清零,建议是放在 forward+loss+backward 前执行,避免第一次启动的内存没有规制为0导致的错误。 结果验证当训练结束后,model 会得到一个与训练误差极少的模型权重,那么是否符合我们实际任务需要,就需要对模型结果进行验证。通常情况下,对于某个数据集,我们一般采用随机选取数据集中80%的数据作为训练集,20%的数据作为验证用的结果。 验证的方法可以有人工和自动评估两种。自动评估的概念就是我对所有的数据样本都建立对应的标签,然后执行模型后看输出的参数和标签重合情况(这一般多用于分类、拟合问题)。另一种就是直接看输出的参数,或者把训练好的模型扔到线上和实际运行情况进行对比。 这里我先不展开介绍,我们先来看看对于结果验证,我们可以这样做一个函数
至此,使用 torch 构建一个最简单的网络模型的主要工作已经完成,剩下的就是如何准备数据之类的任务了,在下一章节里,我们来尝试构建一个最简单的全连接网络,看看效果如何吧。 关于文档关于 PyTorch 最权威的解释和说明,自然是参考官方的说明是最好的。 PyTorch 官方说明文档: https://pytorch.org/docs/stable/index.html 除此之外,还有中文圈的大佬对官方文档的翻译,如果觉得英文的比较难懂,可以看看 PyTorch 中文文档:https://pytorch-cn.readthedocs.io/zh/latest/ PyTorch 最主要的包,包含有已经实现的各类层类型外,还有比如损失函数、激活函数等,基本上都在 torch.nn 里, 关于这部分详细内容,可以查看文档:https://pytorch.org/docs/stable/nn.html |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 20:24:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |