由于只需要修改之前基于ANN模型代码的模型设计部分所以篇幅较短,简单的加点注释给自己查看即可

视频链接:https://www.bilibili.com/video/BV1Y7411d7Ys?p=10

  1. class Net(torch.nn.Module):
  2. def __init__(self):
  3. super(Net, self).__init__()
  4. self.conv1 = torch.nn.Conv2d(1, 10, kernel_size=5) #卷积层传递
  5. self.conv2 = torch.nn.Conv2d(10, 20, kernel_size=5)
  6. self.pooling = torch.nn.MaxPool2d(2) #池化层
  7. self.fc = torch.nn.Linear(320, 10)
  8. def forward(self, x):
  9. # flatten data from (n,1,28,28) to (n, 784)
  10. batch_size = x.size(0)
  11. x = F.relu(self.pooling(self.conv1(x)))
  12. x = F.relu(self.pooling(self.conv2(x)))
  13. x = x.view(batch_size, -1) # -1 此处自动算出的是320
  14. x = self.fc(x)
  15. return x

留下来的作业是自己修改卷积层,这是我的代码

  1. class Net(torch.nn.Module):
  2. def __init__(self):
  3. super(Net, self).__init__()
  4. self.conv1 = torch.nn.Conv2d(1, 10, kernel_size=5)
  5. self.conv2 = torch.nn.Conv2d(10, 20, kernel_size=5)
  6. self.conv3 = torch.nn.Conv2d(20, 30, kernel_size=2)
  7. self.pooling = torch.nn.MaxPool2d(2)
  8. self.fc1 = torch.nn.Linear(30, 20)
  9. self.fc2 = torch.nn.Linear(20, 10)
  10. def forward(self, x):
  11. batch_size = x.size(0)
  12. x = F.relu(self.pooling(self.conv1(x)))
  13. x = F.relu(self.pooling(self.conv2(x)))
  14. x = F.relu(self.pooling(self.conv3(x)))
  15. x = x.view(batch_size, -1)
  16. x = self.fc1(x)
  17. x = self.fc2(x)
  18. return x

这个作业完成过程让我理解了

  1. self.conv1 = torch.nn.Conv2d(1, 10, kernel_size=5)

这句代码的意思。他的意思是一层变成10层,卷积为5*5,所以在执行完

  1. self.conv3 = torch.nn.Conv2d(20, 30, kernel_size=2)

这一步后,你就要知道,你传入20通道,输出是30通道,卷积层为2x2,这个时候你的通道数量只有30,而图像也变成1x1了(卷积导致),所以你的全连接层只有30往下降维

另外我用CPU和GPU 分别跑了一下这个任务

开头加入了

  1. start = time.time()

程序结尾加入

  1. end = time.time()
  2. print("程序运行时间为:{}".format(end-start))

这样一来就可以看到分别在CPU和GPU的运行时间

CPU:226s GPU:148s



确实GPU快

【项目实战】CNN手写识别的更多相关文章

  1. 【项目实战】CNN手写识别复杂模型的构造

    感谢视频教程:https://www.bilibili.com/video/BV1Y7411d7Ys?p=11 这里开一篇新博客不仅仅是因为教程视频单独出了1p,也是因为这是一种代码编写的套路,特在此 ...

  2. AI应用开发实战 - 手写识别应用入门

    AI应用开发实战 - 手写识别应用入门 手写体识别的应用已经非常流行了,如输入法,图片中的文字识别等.但对于大多数开发人员来说,如何实现这样的一个应用,还是会感觉无从下手.本文从简单的MNIST训练出 ...

  3. (五) Keras Adam优化器以及CNN应用于手写识别

    视频学习来源 https://www.bilibili.com/video/av40787141?from=search&seid=17003307842787199553 笔记 Adam,常 ...

  4. TensorFlow 入门之手写识别CNN 三

    TensorFlow 入门之手写识别CNN 三 MNIST 卷积神经网络 Fly 多层卷积网络 多层卷积网络的基本理论 构建一个多层卷积网络 权值初始化 卷积和池化 第一层卷积 第二层卷积 密集层连接 ...

  5. android 开源 OCR 项目 及手写识别

    http://blog.csdn.net/archfree/article/details/6023676 1)一个为Android平台,将识别由手机的相机拍摄的图像文本应用程序. http://co ...

  6. 机器学习实战kNN之手写识别

    kNN算法算是机器学习入门级绝佳的素材.书上是这样诠释的:“存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都有标签,即我们知道样本集中每一条数据与所属分类的对应关系.输入没有标签的新数据 ...

  7. (手写识别) Zinnia库及其实现方法研究

    Zinnia库及其实现方法研究 (转) zinnia是一个开源的手写识别库.采用C++实现.具有手写识别,学习以及文字模型数据制作转换等功能. 项目地址 [http://zinnia.sourcefo ...

  8. tensorflow笔记(四)之MNIST手写识别系列一

    tensorflow笔记(四)之MNIST手写识别系列一 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7436310.html ...

  9. tensorflow笔记(五)之MNIST手写识别系列二

    tensorflow笔记(五)之MNIST手写识别系列二 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7455233.html ...

随机推荐

  1. 本地使用 Docker Compose 与 Nestjs 快速构建基于 Dapr 的 Redis 发布/订阅分布式应用

    Dapr(分布式应用程序运行时)介绍 Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言 ...

  2. 一切皆为字节和字节输出流_OutputStream类&FileOutputStream类介绍

    一切皆为字节 一切文件数据(文本.图片.视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此.所以,字节流可以传输任意文件数据.在操作流的时候,我们要时刻明确,无论使用什 ...

  3. java--方法/debug

    一.方法的定义 1.什么是方法 方法是将具体独立功能的代码块组织称为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建后使用,该过程为方法定义: 方法创建后并不是直接运行的,需要手动十一后执行 ...

  4. Springboot 启动初始化bin,InitializingBean

    import org.springframework.beans.factory.InitializingBean; @Componentpublic class TestInitializingBe ...

  5. raspberrypi系统在加入k8s作为node节点时遇到的问题

    新买的树莓派4b到货后就迫不及待的烧录上raspberrypi系统,将新派加入我的k8s集群,期间遇到了点小挫折,好歹也一个一个解决了: 一.kubelet版本不对导致无法加入k8s集群 在执行kub ...

  6. vue 数据更新了但视图没改变?试试 $set

    场景 编辑表格中某行数据时,需要把它赋值给对话框表单 this.form,如果直接用 = 赋值,会导致:表单的输入框内容无法二次编辑. 使用 Vue-dev-tool 的 Components 功能测 ...

  7. javascript相邻节点元素获取

    <script> window.onload = function () { var myLinkItem = document.getElementById('linkItem'); v ...

  8. 你的工具包已到货「GitHub 热点速览 v.22.31」

    如果你经常用 shell 记得看看本周特推里的 gum,它能给你的 shell 增加新趣味.除了这个 shell kit,我们还有 dashboard kit--tabler,功能技能 kit eng ...

  9. 在DELL服务器上安装windows2012 r2服务器系统

    主要过程: 1.准备安装光盘,开启服务器,当出现画面按F10进入服务器自带光盘系统安装向导.(若没有系统光盘,可以用软蝶通刻一个服务系统到+R的光盘).进入后选择设置和安装系统. 2.开始安装前,提示 ...

  10. 5.10 NOI 模拟

    最近总是管不住自己摆烂,没法像\(Zwaire\)一样管住自己,摆完之后会有负罪感,一直恶性循环,认识到了这个问题,我希望能逐渐改正(不对,马上放假了,不如摆烂到放假) 话说\(GD,HN\)的老哥都 ...