跟着刘二大人学pytorch(第---10---节课之卷积神经网络)

文章目录

  • 0 前言
    • 0.1 课程链接:
    • 0.2 课件下载地址:
  • 回忆
  • 卷积
    • 卷积过程(以输入为单通道、1个卷积核为例)
    • 卷积过程(以输入为3通道、1个卷积核为例)
    • 卷积过程(以输入为N通道、1个卷积核为例)
    • 卷积过程(以输入为N通道、M个卷积核为例)
    • Padding
    • Padding(padding=1)
    • 步长stride(stride=2)
    • 下采样(Max Pooling Layer)
    • 一个简单的例子
    • 如果有GPU的话,代码如何改
  • 结果
  • 作业

0 前言

0.1 课程链接:

《PyTorch深度学习实践》完结合集
有大佬已经写好了笔记:大佬的笔记
pytorch=0.4

0.2 课件下载地址:

链接:https://pan.baidu.com/s/1_J1f5VSyYl-Jj2qIuc1pXw
提取码:wyhu
在这里插入图片描述

回忆

全连接
在这里插入图片描述
通道×宽×高
如果按全连接的话就破坏了原来的空间信息
下采样:通道数不变,目的是减少数据量,降低运算

构建一个神经网络之前首先考虑输入的张量的维度是什么,输出的张量维度是什么,使得卷积神经网络顺利先跑起来。

所有的卷积层+下采样合起来被称为:特征提取器(Feature Extraction),即找出某种特征。

接下来介绍卷积、下采样
通过下图直观的认识这两个东西
在这里插入图片描述

卷积

讲解卷积之前,先讨论一下图像是什么

在计算机领域遇到的图像都称为RGB图像,要表示一个像素,图片被分成一个一个单元格子,每个格子有一个颜色值,这样就构成一个图像,这样的图像被称为栅格图像,相机、显微镜在处理图像时
中学时学的一个东西叫光敏电阻,该电阻可以根据光照电阻发生变化.
通过多个个光敏电阻,做成一个阵列,每个光阻通过光阻都可以反映一个范围内的光的强度,通过光的强度与电阻之间的对应关系关系,可以画出阵列所反映的图,由电阻值转变为光的强度值,该图即为黑白图。
在这里插入图片描述
像素为2×2
光阻放的越多,得到的图片的像素越大,有的手机虚表像素值,是因为将没有的像素进行了插值,取临近的一些像素值的平均值,
1)红色传感器对红色波段比较敏感,R,红色传感器中的电阻值可以反应灰度级别,即到底有多红,用0-255中的值来定义灰度的级别,以下类似
2)蓝色传感器对蓝色波段比较敏感,G
3)绿色传感器对绿色波段比较敏感,B
由上即可将光阻值转变为彩色图像
下面的额小方格就是由红绿蓝传感器组成的阵列
在这里插入图片描述
因此我们遇到的图片一般是栅格图像,还有一类图像是矢量图,这种图描述方式不和栅格图像一样。
描述矢量图是描述圆心、直径、边是什么颜色,填充什么颜色(不重要)
拿到一个图像将使用三个通道来表示
图像的坐标系的介绍见我的另一篇文章:
在这里插入图片描述

卷积过程(以输入为单通道、1个卷积核为例)

数乘:对应元素想 乘
在这里插入图片描述
在这里插入图片描述

卷积过程(以输入为3通道、1个卷积核为例)

每一个通道配一个核,通道数=核的数量
在这里插入图片描述

上面画出来的三个红色的小方块儿对应为图像中的一个patch。
图像的一个patch与一个卷积核先数乘再相加,即下面红色框出来的大方框操作称为卷积
在这里插入图片描述
见下图
在这里插入图片描述
进一步表示:
在这里插入图片描述

卷积过程(以输入为N通道、1个卷积核为例)

在这里插入图片描述
上图中,一个卷积可以得到一个最终的通道为1的结果,如果再使用一个卷积核就可以得到另外一个通道为1的结果,以此延

卷积过程(以输入为N通道、M个卷积核为例)

在这里插入图片描述
由上图发现:
1)卷积核的个数和输入的通道数是一样的(这一句应该是写错了,应修改为:卷积核的通道数和输入的图片的通道数是一样的)
2)输出的通道数和卷积核的总个数是一样的(因此只要看到输出是多少个通道,上一步的卷积就有多少个卷积核)
在这里插入图片描述
由上图知:可以将m个卷积核可以拼成一个4维的张量
定义一个卷积层只需要关系4个值:
1、输入的通道数:决定了卷积核的通道数
2、输出的通道:决定了使用了多少个卷积核
3、卷积核的大小(宽和高):这个是必须的
卷积层的定义和输入图像的大小无关
在这里插入图片描述

Padding

在这里插入图片描述

Padding(padding=1)

在这里插入图片描述
torch.nn.Conv2d(输入的通道数,输出的通道数,kernel_size,padding,bias=False)
bias是偏置量
conv_layer.weight.data = kernel.data就是将定义的卷积核的张量数值给卷积层的权重
在这里插入图片描述

步长stride(stride=2)

在这里插入图片描述
通过以上的代码得到上面的结果
在这里插入图片描述

下采样(Max Pooling Layer)

这一层没有权重,通道数不会变
例如一个2×2的max pooling,则默认步长为2,
在这里插入图片描述
通过以下的代码得到上面的结果在这里插入图片描述

一个简单的例子

在这里插入图片描述
用卷积、池化来代替之前的全连接
在这里插入图片描述
在这里插入图片描述
最后接的是交叉熵损失,所以不做激活

如果有GPU的话,代码如何改

1)模型迁移到GPU
cuda:0,表示使用第一块显卡,cuda:1表示使用第二块显卡
在这里插入图片描述
model.to(device):指的是将模型的参数、缓存、所有的模块,都放到cuda里面,都转成相应的tensor,所有涉及的权重都放进显卡里面,此时将把之前在cpu上定义模型、权重全部迁移到GPU上面
在这里插入图片描述
2)计算时把数据迁移到GPU
把要计算的张量迁移到GPU上面,主要是输入和输出
注意要将数据迁移到的显卡要和模型所要迁移的显卡要一致
训练部分需要加
在这里插入图片描述
测试部分也需要加上
在这里插入图片描述

结果

在这里插入图片描述

作业

在这里插入图片描述
比较不同配置对应的网络的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构学习笔记-图

1.图的存储 (1)邻接矩阵法 #define MaxVertexNum 100 //顶点数目的最大值 typedef struct{char Vex[MaxVertexNum]; //顶点表int Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵表,边表int vexnum,arcnum; //图的当前顶点数和边…

计算机组成原理之定点除法

文章目录 定点除法运算原码恢复余数法原码不恢复余数法(加减交替法)运算规则 习题 定点除法运算 注意 (1)被除数小于除数的时候,商0 (2)接下来,有一个除数再原来的基础上&#xff0c…

springboot + Vue前后端项目(第十六记)

项目实战第十六记 写在前面1 第一个bug1.1 完整的Role.vue 2 第二个bug2.1 修改路由router下面的index.js 总结写在最后 写在前面 发现bug&#xff0c;修复bug 1 第一个bug 分配菜单时未加入父id&#xff0c;导致分配菜单失效 <!-- :check-strictly"true" 默…

什么是期权(Options)?以实际例子理解看涨期权(Call)和看跌期权(Put)

什么是期权&#xff1f; 中文版 期权的详细介绍 期权&#xff08;Option&#xff09;是一种金融衍生工具&#xff0c;它赋予持有人在特定时间以预定价格买入或卖出标的资产&#xff08;如股票、债券、商品等&#xff09;的权利&#xff0c;但不负有必须买入或卖出的义务。期…

图的应用之最小生成树

大纲 生成树介绍 特点 但n个 种类 最小生成树 应用 构造算法 MST性质 Prim算法 依次选择与顶点相邻的不会构成回路的最小边对应的顶点 Kruskal算法 依次选不会构成环的最小边 区别 Prim算法有n个顶点进行选择&#xff0c;每个顶点有n个选择&#xff0c;复杂度为O(n*n) K…

C51学习归纳13 --- AD/DA转换

AD/DA转换实现了计算机和模拟信号的连接&#xff0c;扩展了计算机的应用场景&#xff0c;为模拟信号数字化提供了底层支持。 AD转换通常是多个输入通道&#xff0c;使用多路选择器连接到AD开关&#xff0c;实现AD多路复用的目的&#xff0c;提高利用率。 AD/DA转换可以使用串口…

Java创建线程的方式

继承Thread类 这是创建线程的基本方式之一。你需要创建一个新的类&#xff0c;该类继承自Thread类&#xff0c;并重写run()方法。然后&#xff0c;你可以创建这个类的一个实例并调用它的start()方法来启动新线程。 public class MyThread extends Thread { Override public vo…

Ubuntu 移除netplan

Ubuntu 移除netplan 鉴于netplan现在还不成熟&#xff0c;桌面版还是NetworkManager的天下&#xff0c;故移除之。 云服务器用netplan的多(深度学习租卡一般docker不用考虑) 仅限于你能物理上直接使用Ubuntu&#xff0c;云服务器谨慎操作&#xff01;&#xff01;&#xff01…

我的创作纪念日(1825天)

Ⅰ、机缘 1. 记得是大一、大二的时候就听学校的大牛说&#xff0c;可以通过写 CSDN 博客&#xff0c;来提升自己的代码和逻辑能力&#xff0c;虽然即将到了写作的第六个年头&#xff0c;但感觉这句话依旧受用; 2、今年一整年的创作都没有停止&#xff0c;本年度几乎是每周都来…

UniApp或微信小程序中scroll-view组件使用show-scrollbar在真机Android或IOS中隐藏不了滚动条的解决办法

show-scrollbar 属性 不论是使用 变量 还是直接使用 布尔值或者直接使用 css 都是在 ios、Android 上是都没有效果。。 真机中还是出现滚动条 解决办法 添加下面CSS ::-webkit-scrollbar {display: none;width: 0 !important;height: 0 !important;-webkit-appearance: no…

盛世古董乱世金-数据库稳定到底好不好?

是不是觉得这个还用问&#xff1f; 是的要问。因为这个还是一个有争议的问题。但是争议双方都没有错。这就像辩论&#xff0c;有正反双方。大家都说的有道理&#xff0c;但是很难说谁对谁错。 正方观点&#xff1a;数据库稳定好 其实这个是用户的观点&#xff0c;应用开发人…

17个关键方法指南,保护您的web站点安全!

了解如何让您的web应用程序或网站安全&#xff0c;对于网站所有者来说至关重要。以下是一些关键步骤&#xff0c;可以帮助您保护网站免受攻击和数据泄露。 1.使用公钥加密技术 当数据以明文形式传输时&#xff0c;它容易受到中间人 &#xff08;MitM&#xff09; 攻击。这意味…

北航第六次数据结构与程序设计作业(查找与排序)选填题

一、 顺序查找的平均查找长度ASL&#xff08;1 2 …… n&#xff09;/ n (n 1&#xff09;/ 2 二、 这半查找法的平均查找次数和判定树的深度有关系。若查找一个不存在的元素&#xff0c;说明进行了深度次比较。 注意&#xff0c;判定树不是满二叉树&#xff0c;因此深…

安卓网络通信(多线程、HTTP访问、图片加载、即时通信)

本章介绍App开发常用的以下网络通信技术&#xff0c;主要包括&#xff1a;如何以官方推荐的方式使用多线程技术&#xff0c;如何通过okhttp实现常见的HTTP接口访问操作&#xff0c;如何使用Dlide框架加载网络图片&#xff0c;如何分别运用SocketIO和WebSocket实现及时通信功能等…

HTTP协议 快速入门

http概述 无状态性&#xff1a;HTTP是一个无状态协议&#xff0c;这意味着服务器不会在请求之间保存任何会话信息。每个请求都是独立的&#xff0c;服务器不会记住之前的请求。 请求-响应模型&#xff1a;HTTP通信是基于客户端发送请求和服务器返回响应的模型。客户端&#xf…

程序员入职一家新的公司的注意事项

1.心态 我把心态放在了第一位&#xff0c;是因为&#xff0c;良好的心态是成功的关键&#xff0c;刚入职一家公司&#xff0c;领导给你一个老破旧的项目&#xff0c;不要着急&#xff0c;你能把项目中的问题很好的解决了就是你的本事&#xff0c;我碰到过很多这样的情况&#…

Spark常见的可以优化的点

Shuffle 复用 # 1.以下操作会复用的shuffle结果&#xff0c;只会读一遍数据源 val rdd1 sc.textFile("hdfs://zjyprc-hadoop/tmp/hive-site.xml").flatMap(_.split(" ")).map(x > (x,1)).reduceByKey(_ _).filter(_._2 > 1) rdd1.count() rdd1.fil…

华为od-C卷200分题目2 - 找城市

华为od-C卷200分题目2 - 找城市 题目描述 一个城市规划问题&#xff0c;一个地图有很多城市&#xff0c;两个城市之间只有一种路径&#xff0c;切断通往一 个城市i的所有路径之后&#xff0c;其他的城市形成了独立的城市群&#xff0c;这些城市群里最大的城 市数量&#xff0…

JavaFX 场景

JavaFX场景对象是 JavaFX 场景图的根。换句话说&#xff0c;JavaFX 场景包含其中的所有可视 JavaFX GUI 组件。JavaFX 场景由类表示 javafx.scene.Scene。必须在JavaFX StageScene上设置对象 才能可见。在本 JavaFX教程中&#xff0c;我将向您展示如何创建 对象并向其添加 GUI …

什么是中断?STM32F407中断处理

什么是中断&#xff1f; 中断&#xff08;Interrupt&#xff09;是一种处理器处理异步事件的方法。当某个事件&#xff08;如外部设备的信号、定时器溢出等&#xff09;发生时&#xff0c;处理器可以暂停当前正在执行的任务&#xff0c;去处理这个事件&#xff0c;然后再返回继…