Lesson 6 Convolutional Neural Network(CNN)

听课(李宏毅老师的)笔记,方便梳理框架,以作复习之用。本节课主要讲了CNN的适用范围,整体架构与工作流程,CNN的应用,CNN的缺点以及解决方法。

1. CNN的输入与输出

CNN是专门为了图像而设计的一种网络架构

1.1 输出

CNN的输出是一个向量,每一个元素都代表了属于该类的得分。举例来说,在训练时,通过使下图的两个向量的交叉熵最小,达到最佳的训练效果。
在这里插入图片描述

1.2 输入

一张100*100的彩色图片将分为三个channel,代表RGB,将三个tensor拉长,组成了右边的很长的列向量
在这里插入图片描述

2. 在图像识别时是否真的需要全连接网络?

一个图像经常是几百几千的像素,而且还是三个channel, 那么这么长的向量输入进去,如果每一个都要跟不同的权重参数相乘,比如我们有1000个神经元,那么我们需要1001003*1000个权重参数。虽然这样模型的弹性将会非常大,但是容易造成overfitting,况且计算时间也会很久
在这里插入图片描述

3. observation 1:识别关键部分

我们在设置神经元的时候,不用让一个神经元看整张图片,而是看最关键的部分。
在这里插入图片描述
具体怎么看关键的部分呢?我们先引入一个概念——receptive field。将这个333的立方体拉长展开成右侧的这个长向量,输入进神经元。
在这里插入图片描述

在这里插入图片描述
常见的设置如下:

  • kernel size:333(但是一般将深度省略)
  • stride:2 步长为2,表示每次向右或者向下移动receptive field两格
  • 可以重叠
  • 不够了可以用0补全
  • 每个receptive field通常配置64个神经元监视
    在这里插入图片描述
    一直移动直到这个立方体的右下角,那么receptive fields将会覆盖整张图片。

4. observation 2:相同的关键部分出现在不同的区域

4.1 从神经元角度讲述

如果因为receptive field不一样,监测receptive field的相同的pattern的神经元不一样,那么参数量也太大了。
在这里插入图片描述
所以我们提出了一种方法——parameter sharing
就是指receptive field不一样,但权重参数却一样。但是一个receptive field的两个神经元不会共享参数。
在这里插入图片描述
这里的神经元我们有一个专门的名字来称呼——filter
在这里插入图片描述

4.2 小结

在这里插入图片描述

4.3 从filter角度讲述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这步就是要看哪个receptive field跟filter更接近(就是更像关键部位),越接近分越高

第一个filter做完之后按照同样的方法做filter2,形成了两层,我们称之为feature map
在这里插入图片描述

4.4 两种角度的对比

在这里插入图片描述
在这里插入图片描述

5. observation 3: 子采样不会改变图片

由于有时图片数据量过于庞大,可以考虑采用子采样,不会太影响图片,又减少了计算量。

5.1 池化的具体过程(以max pooling为例)

在这里插入图片描述
在这里插入图片描述
通常情况下是2次conv1次pooling,或者1次conv1次pooling

5.2 小结

在这里插入图片描述

6. CNN应用

6.1 AlphaGo

在这里插入图片描述
为什么AlphaGo能用CNN做呢?
其实我们可以把一个小棋局看成是一个pattern,而这个pattern可能出现在棋盘的任意位置
在这里插入图片描述
pooling对于CNN来说并不是绝对要用的,我们要明确pooling的本质是子采样用以减少计算量,但是如果计算量不大就没必要采用pooling,采用了说不定还不准确,所以AlphaGo就完全没用pooling
在这里插入图片描述

6.2 speech and NLP

在这里插入图片描述

7. CNN的缺点

如果给CNN训练时的图是上面这个小狗,但是让他去识别下面这个小狗,可能不一定识别成功,因为CNN是无法处理放大缩小旋转的。
但是这还是有解决方法的——Data Augmentation. 在训练的时候,就对训练集中的数据进行放大缩小旋转,丰富我们的数据集
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2.4_3 死锁的处理策略——避免死锁

文章目录 2.4_3 死锁的处理策略——避免死锁(一)什么是安全序列(二)安全序列、不安全状态、死锁的联系(三)银行家算法 总结 2.4_3 死锁的处理策略——避免死锁 银行家算法是“避免死锁”策略的最著名的一个…

【sgExcelGrid】自定义组件:简单模拟Excel表格拖拽、选中单元格、横行、纵列、拖拽圈选等操作

特性&#xff1a; 可以自定义拖拽过表格可以点击某个表格&#xff0c;拖拽右下角小正方形进行任意方向选取单元格支持选中某一行、列支持监听selectedGrids、selectedDatas事件获取选中项的DOM对象和数据数组支持props自定义显示label字段别名 sgExcelGrid源码 <template&g…

LLM长上下文外推方法

现在的LLM都集中在卷上下文长度了&#xff0c;最新的Claude3已经支持200K的上下文&#xff0c;见&#xff1a;cost-context。下面是一些提升LLM长度外推能力的方法总结&#xff1a; 数据工程 符尧大佬的最新工作&#xff1a;Data Engineering for Scaling Language Models to …

计算机网络——计算机网络的性能

计算机网络——计算机网络的性能 速率带宽吞吐量时延时延宽带积往返时间RTT利用率信道利用率网络利用率 我们今天来看看计算机网络的性能。 速率 速率这个很简单&#xff0c;就是数据的传送速率&#xff0c;也称为数据率&#xff0c;或者比特率&#xff0c;单位为bit/s&#…

C语言——强制类型转化

强制类型转化的作用 C语言中的强制类型转换是一种将一个数据类型转换为另一个数据类型的操作。它可以通过显式地指定要转换的数据类型来实现。强制类型转换可以用于以下几种情况&#xff1a; 改变变量的数据类型&#xff1a;当需要将一个变量的数据类型从一种类型转换为另一种…

【libwebrtc】基于m114

libwebrtc A C++ wrapper for binary release, mainly used for flutter-webrtc desktop (windows, linux, embedded).是 基于m114版本的webrtc 最新(20240309 ) 的是m122了。官方给出的构建过程 .gclient 文件 solutions = [{"name" : src,"url

域名交易系统已测试可正常使用免授权带后台

域名交易系统已测试可正常使用免授权带后台 下载地址&#xff1a;迅雷云盘

python处理geojson为本地shp文件

一.成果展示 二.环境 我是在Anaconda下的jupyter notebook完成代码的编写&#xff0c;下面是我对应的版本号&#xff0c;我建议大家在这个环境下编写&#xff0c;因为在下载gdal等包的时候会更方便。 二.参考网站 osgeo.osr module — GDAL documentation osgeo.ogr module …

链表基础知识详解

链表基础知识详解 一、链表是什么&#xff1f;1.链表的定义2.链表的组成3.链表的优缺点4.链表的特点 二、链表的基本操作1.链表的建立2.链表的删除3.链表的查找4.链表函数 一、链表是什么&#xff1f; 1.链表的定义 链表是一种物理存储单元上非连续、非顺序的存储结构&#xf…

SQLite3中的callback回调函数注意的细节

调用 sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)该例程提供了一个执行 SQL 命令的快捷方式&#xff0c; SQL 命令由 sql 参数提供&#xff0c;可以由多个 SQL 命令组成。 在这里&#xff0c; 第一个参数 sqlite3 是打开的数据库对…

Go语言数据结构(二)堆/优先队列

文章目录 1. container中定义的heap2. heap的使用示例3. 刷lc应用堆的示例 更多内容以及其他Go常用数据结构的实现在这里&#xff0c;感谢Star&#xff1a;https://github.com/acezsq/Data_Structure_Golang 1. container中定义的heap 在golang中的"container/heap"…

使用yarn创建vite+vue3electron多端运行

文章目录 第一步 使用yarn创建vite+vue3项目遇到创建报错看第二步 引入electron第三步 创建main.js在electron下面的main.js写入下面代码第四步 安装同时运行多条命令npm包&&修改package.json文件npm包增加一条electron运行脚本命令效果图第一步 使用yarn创建vite+vue3…

T-RAG = RAG + Fine-Tuning + Entity Detection

原文地址&#xff1a;T-RAG RAG Fine-Tuning Entity Detection T-RAG 方法的前提是将 RAG 架构与开源微调的 LLM 和实体树向量数据库相结合。重点是上下文检索。 2024 年 2 月 15 日 介绍 大型语言模型 (LLM) 越来越多地应用于各个领域&#xff0c;包括对私营企业文档的问答…

Pb量级超大容量光存储

近日&#xff0c;中国科学院上海光学精密机械研究所&#xff08;以下简称“上海光机所”&#xff09;与上海理工大学等科研单位合作&#xff0c;在超大容量三维超分辨光存储研究中取得突破性进展。研究团队利用国际首创的双光束调控聚集诱导发光超分辨光存储技术&#xff0c;实…

docker-compose这下会用了吗?

概要 默认的模板文件是 docker-compose.yml&#xff0c;其中定义的每个服务可以通过 image 指令指定镜像或 build 指令&#xff08;需要 Dockerfile&#xff09;来自动构建。 注意如果使用 build 指令&#xff0c;在 Dockerfile 中设置的选项(例如&#xff1a;CMD, EXPOSE, V…

Linux 学习(持续更新。。。)

wc命令 命令直接执行&#xff0c;输出包含四项&#xff0c;分别代表&#xff1a;行数、字数、字节数、文件。 例子:编译下列代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #inclu…

报错Importing ArkTS files to JS and TS files is not allowed. <etsLint>

ts文件并不支持导入ets文件&#xff0c;为了方便开发应用卡片&#xff0c;entryformAbility创建的时候默认是ts文件&#xff0c;这里只需要把ts文件改成ets便可以轻松的导入所需要的ets即可 我创建了一个鸿蒙开发的交流群&#xff0c;喜欢的鸿蒙朋友可以扫码或者写群号&#xf…

【编译原理】1、python 实现一个 JSON parser:lex 词法分析、parser 句法分析

文章目录 一、实现 JSON lexer&#xff08;词法解析器&#xff09;二、lex 词法分析2.1 lex string 解析2.2 lex number 解析2.3 lex bool 和 null 解析 三、syntax parser 句法分析3.1 parse array 解析数组3.2 parse object 解析对象 四、封装接口 一、实现 JSON lexer&#…

时间感知自适应RAG(TA-ARE)

原文地址&#xff1a;Time-Aware Adaptive RAG (TA-ARE) 2024 年 3 月 1 日 介绍 随着大型语言模型&#xff08;LLM&#xff09;的出现&#xff0c;出现了新兴能力的概念。前提或假设是LLMs具有隐藏的和未知的能力&#xff0c;等待被发现。企业家们渴望在LLMs中发现一些无人知晓…

Linux网络基础2之协议

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 1.协议 1.序列化与反序列换 2.协议定制 二…