前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch入门教程 | 第三章:构造一个小型CNN

pytorch入门教程 | 第三章:构造一个小型CNN

作者头像
用户1332428
发布2018-03-08 11:42:58
9410
发布2018-03-08 11:42:58
举报
文章被收录于专栏:人工智能LeadAI

学过深度卷积网络的应该都非常熟悉这张demo图(LeNet):

此图是LeNet的结构图,把32*32的手写英文字符图片作为输入,训练出一个对于手写字符的分类

我们训练这个网络必须经过4步:

第一步:将输入input向前传播,进行运算后得到输出output

第二步:将output再输入loss函数,计算loss值(是个标量)

第三步:将梯度反向传播到每个参数

第四步:利用下面公式进行权重更新

新权重w = 旧权重w + 学习速率? x 梯度向量g

先不管怎么训练,我们必须先构建出一个CNN网络,很快我们写了一段关于这个LeNet的代码,并进行注释:

1至37行定义了一个卷积神经网络,40行以下是为了观察该网络需要训练的参数数量。

运行完该代码我们得到下图

该网络有5层神经元,第一层是1到6的卷积层,第二层是6到16的卷积层,第三层到第5层均为全连接层。第一层的参数计算是6x1x5x5=150,当然别忘了还有bias=6,所以第一层的参数总量是150+6=156。以此类推,总参数和为61706个

注意:torch.nn只接受mini-batch的输入,也就是说我们输入的时候是必须是好几张图片同时输入。 例如:nn. Conv2d 允许输入4维的Tensor:n个样本 x n个色彩频道 x 高度 x 宽度

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能LeadAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档