目录

pytorch基础 神经网络构建

www.ai-xlab.com
AI MOOC
Torch介绍
Torch是一个开源的机器学习的框架,早在2002年就发
布了Torch的初版,Torch的编程语言为C和Lua。如今
的Torch7依旧是热门的深度学习框架之一。 www.ai-xlab.com
AI MOOC
PyTorch介绍
PyTorch是在2017年1月由Facebook推出的。它是经
典机器学习库Torch框架的一个端口,主要编程语言为
python。
PyTorch"曾经"的优点是动态图
PyTorch现在的优点是开源代码和开源社区 www.ai-xlab.com
AI MOOC
各种深度学习框架介绍
Torch: 2002年发布,早期的机器学习框架。
Theano: 2008年开发,第一个影响力较大的python深度学习框架。
CNTK: 2016年1月由微软公司开源,在语音领域效果比较突出。
TensorFlow: 2015年11月Google开源,目前最热门深度学习框架之一。
Keras: 以Theano/Tensorflow/CNTK作为底层,最容易使用的深度学习框架。
Caffe/Caffe2: 2013年开源的C++深度学习框架,曾经计算机视觉领域的王者。
MXNet: 2015年发布,AWS云计算的官方深度学习平台。
Paddle: 2016年8月开源的百度深度学习框架。
PyTorch: 2017年开源,Torch的python版本,目前最有潜力,最热门的深度学
习框架之一。 www.ai-xlab.com
AI MOOC
安装 url PyTorch PyTorch
www.ai-xlab.com
AI MOOC
MNIST数据集介绍
2 www.ai-xlab.com
AI MOOC
MNIST数据集
MNIST数据集官网: Yann LeCun's Website
下载下来的数据集被分成两部分:60000行的训练数据集(mnist.train)和
10000行的测试数据集(mnist.test) www.ai-xlab.com
AI MOOC
MNIST的数据
一张图片包含28*28个像素,我们把这一个数组展开成一个向量,长度是28*28=784。
如果把数据用矩阵表示,可以把MNIST训练数据变成一个形状为 [60000, 784] 的矩阵,
第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。图片里
的某个像素的强度值介于0-1之间。 www.ai-xlab.com
AI MOOC
MNIST的数据 www.ai-xlab.com
AI MOOC
独热编码(one-hot)
• MNIST数据集的标签是介于0-9的数字,我们要把标签转化为"one-hot
vectors"。一个one-hot向量除了某一位数字是1以外,其余维度数字都是0,
比如标签0将表示为([1,0,0,0,0,0,0,0,0,0]),标签3将表示为
([0,0,0,1,0,0,0,0,0,0]) 。
• 因此,可以把MNIST训练集的标签变为 [60000, 10] 的矩阵。 www.ai-xlab.com
AI MOOC
Softmax函数介绍
3 www.ai-xlab.com
AI MOOC
Softmax激活函数
在多分类问题中,我们通常会使用softmax函数作为网络输出层的激活函数,
softmax函数可以对输出值进行归一化操作,把所有输出值都转化为概率,所有概率
值加起来等于1,softmax的公式为:
𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑥ሻ 𝑖 =

ex p( 𝑥
𝑖
σ 𝑗

ex p( 𝑥
𝑗 www.ai-xlab.com
AI MOOC
Softmax计算例子
例如某个神经网络有3个输出值,为[1,5,3]。
计算e1=2.718,e5=148.413,e3=20.086,e1+e5+e3=171.217。
p1 = 𝑒
1
𝑒 1 +
𝑒
5 +𝑒 3 = 0.016 , p2 = 𝑒
5
𝑒 1 +
𝑒
5 +𝑒 3 = 0.867 , p3 = 𝑒
3
𝑒 1 +
𝑒
5 +𝑒 3 = 0.117 。
所以加上softmax函数后数值变成了[0.016,0.867,0.117]。
例如手写数字识别的网络最后的输出结果本来是:

-0.124, -4.083, -0.62, 0.899, -1.193, -0.701, -2.834, 6.925, -0.332, 2.064\], 加上softmax函数后会变成: \[0.001, 0.0, 0.001, 0.002, 0.0, 0.0, 0.0, 0.987, 0.001, 0.008\]。 **www.ai-xlab.com** **AI MOOC** **交叉熵** 4 **www.ai-xlab.com** **AI MOOC** **二次代价函数** 二次代价函数: 激活函数的梯度f'(z)越大,w的大小调整得越快,训练收敛得就越 快。激活函数的梯度f'(z)越小,w的大小调整得越慢,训练收敛得 就越慢。 **www.ai-xlab.com** **AI MOOC** **二次代价函数** 以一个二分类问题为例,进行两组实验。输入同一个样本数据x=1.0,该样本对应 的分类为y=0,使用sigmoid激活函数。 **www.ai-xlab.com** **AI MOOC** **二次代价函数** **www.ai-xlab.com** **AI MOOC** **交叉熵(Cross-Entropy)** 换一个思路,我们不改变激活函数,而是改变代价函数, 该用交叉熵代价函数: 对于sigmoid函数: **www.ai-xlab.com** **AI MOOC** **过拟合** 5 **www.ai-xlab.com** **AI MOOC** **回归拟合** 欠拟合(Underfitting) 正确拟合(Just right) 过拟合(Overfitting) **www.ai-xlab.com** **AI MOOC** **分类拟合** x 1 x 2 x 1 x 2 x 1 x 2 欠拟合(Underfitting) 正确拟合(Just right) 过拟合(Overfitting) **www.ai-xlab.com** **AI MOOC** **过拟合导致测试误差变大** **www.ai-xlab.com** **AI MOOC** **防止过拟合** 6 **www.ai-xlab.com** **AI MOOC** **增大数据集** 数据挖掘领域流行着这样一句话,"有时候拥有更多的数据胜过一个 好的模型"。一般来说更多的数据参与训练,训练得到的模型就越好。 如果数据太少,而我们构建的神经网络又太复杂的话就比较容易产生 过拟合的现象。 **www.ai-xlab.com** **AI MOOC** **增大图片数据集** 1.随机裁剪 2.水平翻转 3.光照颜色抖动 **www.ai-xlab.com** **AI MOOC** **Early stopping** 在训练模型的时候,我们往往会设置一个比较大的迭代次数。Early stopping便是一种提前结束训练的策略用来防止过拟合。 一般的做法是记录到目前为止最好的validation accuracy,当连续10个 Epoch没有达到最佳accuracy时,则可以认为accuracy不再提高了。此 时便可以停止迭代了(Early Stopping)。 **www.ai-xlab.com** **AI MOOC** **Dropout** **www.ai-xlab.com** **AI MOOC** **正则化项** C0代表原始的代价函数,n代表样本的个数,λ就是正则项系数, 权衡正则项与C0项的比重。 L1正则化: L2正则化: L1正则化可以达到模型参 数稀疏化的效果 L2正则化可以使得模型的权 值衰减,使模型参数值都接 近于0。 **www.ai-xlab.com** **AI MOOC** **正则化项** **www.ai-xlab.com** **AI MOOC** **优化器** 7 **www.ai-xlab.com** **AI MOOC** Adadelta Adagrad Adam Adamax AdamW ASGD LBFGS RMSprop Rprop SGD SparseAdam **优化器** **www.ai-xlab.com** **AI MOOC** **优化器** **www.ai-xlab.com** **www.ai-xlab.com** **AI MOOC** **卷积神经网络CNN** 1 **www.ai-xlab.com** **AI MOOC** 卷积神经网络是近年发展起来,并广泛应用于图像处理,NLP等领域的一 种多层神经网络。 传统BP处理图像时的问题: 1.权值太多,计算量太大 2.权值太多,需要大量样本 进行训练。 **CNN** **www.ai-xlab.com** **AI MOOC** 1962年哈佛医学院神经生理学家Hubel和Wiesel通过对猫视觉皮层细 胞的研究,提出了感受野(receptive field)的概念,1984年日本学者 Fukushima基于感受野概念提出的神经认知机(neocognitron)可以看 作是卷积神经网络的第一个实现网络,也是感受野概念在人工神经网 络领域的首次应用。 **局部感受野** **www.ai-xlab.com** **AI MOOC** CNN通过 局部感受野 和 权值共享 减少了神经网络需要训练的参数个数 **局部感受野和权值共享** **www.ai-xlab.com** **AI MOOC** 1\*1+1\*0+1\*1+0\*0+1\*1+1\*0+0\*1+0\*0+1\*1 = 4 特征图:feature map 卷积核/滤波器 **卷积计算** **www.ai-xlab.com** **AI MOOC** 步长为1 步长为2 **不同步长的卷积** **www.ai-xlab.com** **AI MOOC** **滤波器** **www.ai-xlab.com** **AI MOOC** Pooling常用的三种方式: 1.max-pooling 2.mean-pooling 3.stochastic pooling **池化Pooling** **www.ai-xlab.com** **AI MOOC** SAME PADDING: 给平面外部补0 卷积窗口采样后得到一个跟原来大小相同的平面 VALID PADDING: 不会超出平面外部 卷积窗口采样后得到一个比原来平面小的平面 VALID PADDING SAME PADDING **Padding** **www.ai-xlab.com** **AI MOOC** SAME PADDING VALID PADDING **Padding** **www.ai-xlab.com** **AI MOOC** SAME PADDING:可能会给平面外部补0 VALID PADDING:不会超出平面外部 假如有一个28\*28的平面,用2\*2步长为2的窗口对其进行卷积/池化操作 使用SAME PADDING的方式,得到14\*14的平面 使用VALID PADDING的方式,得到14\*14的平面 假如有一个2\*3的平面,用2\*2步长为2的窗口对其进行卷积/池化操作 使用SAME PADDING的方式,得到1\*2的平面 使用VALID PADDING的方式,得到1\*1的平面 **Padding** **www.ai-xlab.com** **AI MOOC** LeNET-5 是最早的卷积神经网络之一,曾广泛用于美国银行。手写 数字识别正确率在99%以上。 卷积窗口:5\*5 步长:1 池化窗口:2\*2 步长:2 卷积窗口:5\*5 步长:1 池化窗口:2\*2 步长:2 卷积层 池化层 卷积层 池化层 输入层 全链接层 全链接层 输出层 **LeNET-5** **www.ai-xlab.com** **AI MOOC** 可视化: http://scs.ryerson.ca/\~aharley/vis/conv/ http://scs.ryerson.ca/\~aharley/vis/conv/flat.html **LeNET-5** **www.ai-xlab.com** **AI MOOC** **ImageNet介绍** 2 **www.ai-xlab.com** **AI MOOC** ImageNet是一个计算机视觉系统识别项目,是目前世界上图像识别最大 的数据库。一共有1500万张左右的图片,被分为22000个左右的类。是 由斯坦福教授李飞飞领导建立的。 TED演讲:我们怎么教计算机理解图片? **ImageNet** **www.ai-xlab.com** **AI MOOC** 1976年出生于北京,长在四川,16岁随父母移居美国新泽西州。 1999年毕业于普林斯顿大学,2005年获得加州理工学院电子工程博士。 2009年加入斯坦福大学担任助理教授,并于2012年担任副教授(终生教授),和 斯坦福人工智能实验室与视觉实验室主任。 2017年1月入职Google,担任谷歌云首席科学家 。 2018年9月卸任谷歌云首席科学家,回归斯坦福大学当教授。 **李飞飞** **www.ai-xlab.com** **AI MOOC** ILSVRC:ImageNet Large Scale Visual Recognition Challenge **ILSVRC** **www.ai-xlab.com** **AI MOOC** ILSVRC:ImageNet Large Scale Visual Recognition Challenge **ILSVRC** **www.ai-xlab.com** **AI MOOC** **序列模型** 3 **www.ai-xlab.com** **AI MOOC** **RNN(Recurrent Neural Network)** 1986年 Rumelhart 等人提出循环神经网络(recurrent neural network),简称RNN。RNN 跟我们之前学习过的神经网络都不太一样,它是一种序列模型。比如卷积网络是专门用来处 理网格化数据(例如图像数据)的神经网络,RNN是专门用来处理序列数据的神经网络。所 谓的序列数据指的是跟序列相关的数据,比如一段语音,一首歌曲,一段文字,一段录像等。 **www.ai-xlab.com** **AI MOOC** **序列模型应用:语音识别** 把语音转换成为文字 **www.ai-xlab.com** **AI MOOC** **序列模型应用:文本分类** 把文章,邮件或用户评论等文本数据做分类 **www.ai-xlab.com** **AI MOOC** **序列模型应用:机器翻译** 例如把中文翻译成英文 **www.ai-xlab.com** **AI MOOC** **序列模型应用:分词标注** 给一段文字做分词标注,标注每个字对应的标号。假如使用4-tag(BMES)标注标签, B表示词的起始位置,M表示词的中间位置,E表示词的结束位置,S表示单字词。 可以得到类似如下结果: "人/B 们/E 常/S 说/S 生/B 活/E 是/S 一/S 部/S 教/B 科/M 书/E " **www.ai-xlab.com** **AI MOOC** **RNN(Recurrent Neural Network)** **www.ai-xlab.com** **AI MOOC** **RNN(Recurrent Neural Network)** 隐层 h t 接收的是上时刻的隐层(hidden layer) h t−1 还是上时刻的输出(output layer)y t−1 , 可以分成了两种 RNN: Elman network 接收上时刻的隐层 h t−1 Jordan network 接收上时刻的输出 y t−1 **www.ai-xlab.com** **AI MOOC** RNN一个重要的用法就是通过之前的信息来决策当前的问题。 比如就像我们看电影,我们要根据电影之前的情节,才能理解现在的情节。 例子1:有一朵云飘在() 例子2:我从小生长在美国。。。我可以说一口流利的() **RNN(Recurrent Neural Network)** **www.ai-xlab.com** **AI MOOC** **RNN(Recurrent Neural Network)** **www.ai-xlab.com** **AI MOOC** **长短时记忆网络LSTM** 4 **www.ai-xlab.com** **AI MOOC** i t 输入门信号 f t 忘记门信号 𝑐 𝑡 Cell输入信号 c t Cell输出信号 o t 输出门信号 h t block输出信号 x t 第t个序列输入 h t-1 第t-1个序列输出 σ g sigmoid函数 σ c tanh函数 σ h tanh函数或线性函数 **LSTM(Long Short Term Memory)** **www.ai-xlab.com** **AI MOOC** **Peephole LSTM** 和之前的公式做比较,发现只是把 h t−1 都换成 了 c t−1 ,即三个门的输入都改成了 \[x t ,c t−1 \] 。因 为是从 cell state 里取得信息,所以叫窥视孔( peephole)。 **www.ai-xlab.com** **AI MOOC** **FC-LSTM(Fully-connected LSTM )** 三个输入分别是 \[x t ,h t−1 ,c t−1 \] **www.ai-xlab.com** **AI MOOC** **LSTM(Long Short Term Memory)** **www.ai-xlab.com** **AI MOOC** **LSTM(Long Short Term Memory)** **www.ai-xlab.com** **AI MOOC** **门控循环单元GRU** 5 **www.ai-xlab.com** **AI MOOC** **GRU(Gated Recurrent Unit)** GRU 这个结构是 2014 年才出现的,效果跟 LSTM差不多,但是用到的参数更少。将忘记 门和输入门合成了一个单一的更新门。 z t 是更新门(update gate),决定h t 的更新情况 r t 是重置门(reset gate),决定是否要放弃h t-1 ෨ ℎ 𝑡 是候选输出,接收 \[x t ,h t−1

h t 是当前输出,接收 [h t−1 ,


𝑡 ] www.ai-xlab.com
AI MOOC
其他RNN模型
6 www.ai-xlab.com
AI MOOC
双向RNN(Bidirectional RNNs)
双向的 RNN 是同时考虑"过去"和"未来"的信息,输入(黑色点)沿着黑色的实线箭
头传输到隐层(黄色点),再沿着红色实线传到输出(红色点)。黑色实线做完前向传播
后,在 Bidirectional RNNs 却先不急着后向传播,而是从末尾的时刻沿着虚线的方向再回
传回来。 www.ai-xlab.com
AI MOOC
Stacked Bidirectional RNNs
图中是双向的三层 RNNs,堆叠多层的RNN网络,可以增加模型的参数,提高模型的拟合
能力。每层的 hidden state 不仅要输给下一时刻,还是当做是此时刻下一层的输入。 www.ai-xlab.com
AI MOOC
THANKS

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
小旺不正经8 分钟前
人工智能基础-matplotlib基础
人工智能·matplotlib
Lx35212 分钟前
📌 **2025开发者能力金字塔:你在第几层?**
人工智能
贝恩聊架构15 分钟前
大模型应用开发Spring AI实战-Stdio方式实现MCP服务调用
人工智能·后端
敖云岚28 分钟前
【AI】SpringAI 第一弹:SpringAI 的兴起介绍
人工智能
后端小肥肠34 分钟前
MCP协议实战指南:在VS Code中实现PostgreSQL到Excel的自动化迁移
人工智能·ai·aigc
是Dream呀35 分钟前
从传统卷积到空洞卷积:PAMAP2数据集上的多模态行为识别探索
人工智能
果冻人工智能38 分钟前
LLM 的注意力黑洞:为什么第一个 Token 吸走了所有注意力?
人工智能
意.远39 分钟前
批量归一化(Batch Normalization)原理与PyTorch实现
人工智能·pytorch·python·深度学习·神经网络·分类·batch
掘金安东尼1 小时前
DeepSeek-R1 全托管无服务器上线亚马逊云 Bedrock,为何值得关注?
人工智能·llm
Love绘梨衣的Mr.lu1 小时前
【benepar】benepar安装会自动更新pytorch
人工智能·pytorch·python