当前位置:首页 > 生活百科

lenetas设备(卷积神经网络的代码实现)

栏目:生活百科日期:2025-03-25浏览:0

编码的实现环境是Python3.8.3、torch1.5、Anaconda3(64-bit)、PyCharm2020.1。是《动手学深度学习》(PyTorch版)的练习及作业,个别代码有修改,仅供交流学习之用。

# 5.5 卷积神经网络(LeNet),即含卷积层的网络。# (1)LeNet模型# LeNet分为卷积层块和全连接层块两个部分。# 卷积层块里的基本单位是卷积层后接最大池化层:卷积层用来识别图像里的空间模式,如线条和物体局部;最大池化层则用来降低卷积层对位置的敏感性。# 卷积层块由两个这样的基本单位重复堆叠构成。在卷积层块中,每个卷积层都使用5×5的窗口,并在输出上使用sigmoid激活函数。# 第一个卷积层输出通道数为6,第二个卷积层输出通道数则增加到16。# 卷积层块的两个最大池化层的窗口形状均为2×2,且步幅为2。由于池化窗口与步幅形状相同,池化窗口在输入上每次滑动所覆盖的区域互不重叠。# 卷积层块的输出形状为(批量大小, 通道, 高, 宽)。# 当卷积层块的输出传入全连接层块时,全连接层块会将小批量中每个样本变平(flatten)。也就是说,全连接层的输入形状将变成二维,# 其中第一维是小批量中的样本,第二维是每个样本变平后的向量表示,且向量长度为通道、高和宽的乘积。# 全连接层块含3个全连接层。它们的输出个数分别是120、84和10,其中10为输出的类别个数。import timeimport torchfrom torch import nn, optimimport syssys.path.append("..")import d2lzh as d2ldevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')# 通过Sequential类来实现LeNet模型。class LeNet(nn.Module):    def __init__(self):        super(LeNet, self).__init__()         在卷积层块中输入的高和宽在逐层减小。卷积层由于使用高和宽均为5的卷积核,从而将高和宽分别减小4;        # 而池化层则将高和宽减半,但通道数则从1增加到16。                self.conv = nn.Sequential(            nn.Conv2d(1, 6, 5), # in_channels, out_channels, kernel_size                        nn.Sigmoid(),                        nn.MaxPool2d(2, 2), # kernel_size, stride                        nn.Conv2d(6, 16, 5),                        nn.Sigmoid(),                        nn.MaxPool2d(2, 2)        )        # 全连接层则逐层减少输出个数,直到变成图像的类别数10。                    self.fc = nn.Sequential(            nn.Linear(16*4*4, 120),            nn.Sigmoid(),            nn.Linear(120, 84),            nn.Sigmoid(),            nn.Linear(84, 10)        )    def forward(self, img):        feature = self.conv(img)        output = self.fc(feature.view(img.shape&[0], -1))        return outputnet = LeNet()print(net)# (2)获取数据和训练模型# 下面我们来实验LeNet模型。实验中,使用Fashion-MNIST作为训练数据集。batch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size=batch_size)lr, num_epochs = 0.001, 5optimizer = torch.optim.Adam(net.parameters(), lr=lr)d2l.train_ch5(net, train_iter, test_iter, batch_size, optimizer, device, num_epochs)

“lenetas设备(卷积神经网络的代码实现)” 的相关文章

excel合并同类项并求和函数(excel表格中同类项数据求和

在Excel中会使用到将字段的内容进行合并,即字段同类项的合并。如果使用手工进行去合并显得比较的繁琐。下面介绍一个技巧解决这个问题。如下图表中的所示,把同产品的...

2019最新十大安卓应用商店排名(安卓应用市场哪个比较好

现在这个时代,99%的人都拥有智能手机,所以应用程序商店变得越来越重要,因为我们需要通过应用商店来发现和下载各种App。在大陆地区,移动应用商店的情况与世界大多...

java面试宝典APP(java基础面试题及答案)

Java程序员面试过程中少不了专业上的考试,那么面试过程中面试官会问些什么问题呢?接下来黑马君带你一起来进入面试环节!Java开发实用的面试题及参考答案1、进程...

创业成功经历分享怎么写,10年4次创业经验!

经常有朋友问我,什么行业赚钱快,什么行业投入少赚钱多,什么行业是下一个风口……其实这种思路是不对的,而且很容易创业失败。作为一个十年时间创业过4次,现在终于事业...

arp映射表是什么意思(路由器arp绑定的意思)

老版本的Linux中都是使用ifconfig命令检查和配置网络接口,但是该命令目前已经没有维护了,取而代之的是ip命令ip命令和ifconfig命令很相似,但是...

pdf目录内容链接索引怎么做(pdf扫描件做索引目录)

起因很多在网上找的pdf格式的电子书都没有书签,这给阅读带来了很多障碍。而有书签目录的PDF文档阅读起来既方便下次阅读,也方便记忆。最近在桌手考PMP认证考试的...

好玩的电脑小游戏排行推荐(看看你都玩过没)

不知道大家小时候第一个接触到的需要联网的电脑游戏是什么,不过对于绝大多数人来说,这几个游戏经常是能够让我们为之沉迷,甚至废寝忘食的对象。赛尔号为主的养成类游戏0...

企业微信怎么注册和使用(公司微信号申请流程)

对于注册开通企业微信流程和功能作用这个问题,我们把它分为两个模块来给楼主解析:  企业微信注册开通流程介绍:  1、手机搜索官方企业微信下载,点击立即注册企...

php读取excel数据(php原生读取excel的方法)

本篇文章将要给大家详细介绍如何用PHP读取Excel文件数据及内容信息。在文章开始介绍前,大家需要了解一下PHPExcel是什么?PHPExcel就是一个用来操...

什么是数据中心概念(绿色数据中心pue值标准)

德克萨斯州(Texas)以总分57.89,荣登WalletHut发布的“2021年美国最适合创业的州”榜首,紧随其后的是佐治亚州与加州。美国最佳科技之城No.2...