当前位置: 首页 > 编程日记 > 正文

hung-yi lee_p17_卷积神经网络

文章目录

    • 背景:
    • 卷积层
    • 池化层
    • 摊平
    • Keras
    • CNN学到了什么
    • Deep Dream
    • Deep Style
    • 怎么把CNN用在下围棋上
    • 为什么可以将CNN用于下围棋
    • CNN更多应用

背景:

DNN拿掉一些参数就成CNN
为什么可以这样做

  1. 每一个神经元只需要图中的一部分就可以识别出想要的模式
    更小的区域意味着更少的参数
    在这里插入图片描述
  2. 同样的模式也许出现在图片的不同位置
    这时参数可以共享
    在这里插入图片描述
  3. 对像素进行缩减(例如把奇数行偶数列的都删去)对图像识别不会有太大影响
    这无疑也能减少参数
    在这里插入图片描述
    CNN的架构如下图所示
    其中卷积层和池化层要重复多少次,在训练之前就得决定
    在这里插入图片描述
    拿掉参数的3种方式分别对应以下层
    在这里插入图片描述

卷积层

在这里插入图片描述
如上图,左侧是一张6x6的黑白图像,1表示有像素0表示没有
右侧是一组filter,本质是矩阵,当中的参数是要学到的
这对应刚刚的性质1,即要识别的模式只存在于图片中的一小个区域
在这里插入图片描述
首先将filter放到图片左上角,让两个3x3的矩阵做内积
在这里插入图片描述
根据步长(stride)移动filter,直至到达图像的右下角不能再移动,便得到一个4x4的矩阵
在这里插入图片描述
观察filter,发现其主对角线的参数为1,即识别的模式是一条斜线
从结果中可以知道3对应的位置——左上和左下有我们要找的模式
这就对应了性质2:相同的模式可能出现在图片的不同位置
在这里插入图片描述
更换filter,重复上一个filter做的事,得到一个新的4x4结果矩阵。
所有filter做完之后得到的结果之和就是feature map。
在这里插入图片描述
将黑白图片换成彩色图片,则每个filter要从1个矩阵变成3个矩阵。
在这里插入图片描述
可以把6x6的图片看成是36个输入,3x3的filter看成是9个权重,与全连接相比,得到3这个结果本需要36个权重,现在只要9个,无疑减少了参数的数目。
在这里插入图片描述
将filter移动,与新的9个输入再做内积,这样不同的神经元共享了参数,进一步减少了参数。

池化层

在这里插入图片描述
在这里插入图片描述
把做内积得到的4x4矩阵,进一步缩小,本文中采用的方法是将其均匀分成四个部分,取每个部分的最大值保留
在这里插入图片描述
经过卷积和池化,我们就得到了和filter数目一样多的channel
在这里插入图片描述
卷积和池化可以重复多次,值得注意的是
如果第一层卷积核有2个filter,第二层卷积核的数目还是2个,但第一层的深度只有1,第二层filter深度为2。经过两次卷积池化,得到的结果还是2个channel。

摊平

在这里插入图片描述
将channels展开,丢进全连接前馈神经网络,然后就没有然后了。

Keras

在这里插入图片描述
输入由向量(vector)变成三维的张量(3-D tensor)
在这里插入图片描述
输入1层28x28的图片,经过25个3x3的filter卷积层,得到25层26x26的图片
其中25来由:channel数等于filter数
26来由:28-3+1(想想矩阵框在图片上的移动)
在这里插入图片描述
值得注意的是,第一个卷积层的每个filter有3x3=9个参数,第二个卷积层的filter有25层,每个filter有3x3x25=225个参数。
在这里插入图片描述
将最终得到的50x5x5的图片flatten得到一个1250维的输入,丢进全连接前馈神经网络。

CNN学到了什么

难以理解恰恰让人觉得其智能。
在这里插入图片描述
和之前的思路gradient discent相反(固定输入,改变参数)
现在是gradient ascent(固定参数,改变输入)
我们希望找到能使a^k最大的输入x
a^k是第二个卷积层的第k个filter的相关程度(Degree of the activation of the k-th filter)
在这里插入图片描述
上图左下角所示是12张能使对应的每个filter活跃度最高的图片,对于第三个filter,识别到反对角线斜条纹其activation度必然最大。
注意每个filter只看图中的一小个区域。
在这里插入图片描述
图像摊平后是丢进了全连接前馈神经网络,它的每一个神经元识别出的是整张图片(这是为什么这张图的图片比上一张复杂)
和刚才思路一样,想让某个神经元的活跃度最高
在这里插入图片描述
还是那个最大化活跃度的思路
现在来到数字识别神经网络的输出层
10个神经元对应0~9十个数字
按理说对应的10个图像应该就是人眼认为的0~9
可结果却出人意料(如图所示)
如果把上述图片丢进神经网络,神经网络的输出也确实就是0~9
可见,深度神经网路是很容易被蒙蔽的
在这里插入图片描述
想到的一个解决方案是
鉴于
一张写了数字的图片大部分区域是无笔墨的
我们可以用活跃度减去笔墨(即xij)总和
得到的结果就如上图中的右1所示
已经比较接近人眼看到的了
但是这其实也不是一个好方法

Deep Dream

在这里插入图片描述
deep dream的精神可解读为:给机器一张图片,机器加上它看到的
如上图是原图
给出的向量是网络中某一卷积层的输出结果
我们让正值更正,负值更负
再把它作为图片丢进网络
得到的结果如下图
在这里插入图片描述

Deep Style

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基本原理是找一张图的content像左边那张图(通过刚才的最大化思想)
同时这张图的style要像右边那张图(通过刚才最大化思想)
注意:content和style都是filter的输出

怎么把CNN用在下围棋上

在这里插入图片描述
让机器学下围棋其实全连接前馈神经网络也可以做到
输入棋局,将有黑子的位置记作1,将有白子的位置记作-1,无子记作0
但是CNN做的更好
在这里插入图片描述
以上是识别出的一些招式(?)

为什么可以将CNN用于下围棋

在这里插入图片描述
CNN之所以用于图像识别很有效
是因为图像识别具有开篇所说的三个性质
同样的,很容易理解下棋具有前两个性质
如Alpha Go的第一层用5x5的filter,说明设计者认为5x5是一个基本模块(性质一)
同样这个模块可以出现在棋盘的不同位置(性质二)
在这里插入图片描述
但是性质三就很费解了
其实由于下围棋不具备图像识别的性质三
Alpha Go里面也就没有池化层

CNN更多应用

  1. 语音识别
    在这里插入图片描述
    语音识别得到spectrogram,横轴是事件,纵轴是频率
    机器把spectrogram当作一张image
    丢进CNN
    filter只在纵轴(频率)方向移动,最有效率

  2. 文字识别
    在这里插入图片描述

每一个word都用一个vector表示
输出是这句话是积极的还是消极的
同样还是只在一个方向是移动(句子顺序方向)

相关文章:

抓住青春的尾巴再愤青一把

这是今天google大神查到的:一、CAPCOM的《大神》,PS2专属ACT游戏,以三大神之一的日照处天子为原型,动作爽快华丽,是我期待很久的作品,预计今冬发售。 ... 并不是说这个水墨3D是大宇搞出来的DD,3…

the folder is already a source folder.

在新建的maven项目中,新建src/main/java时,提示the folder is already a source folder. 解决办法:右键工程,build path--configure build path--source,删除src/mian/java,再建src/main/java时即可。转载于…

selenium webdriver - 结束进程

1 import org.openqa.selenium.WebDriver;2 import org.openqa.selenium.firefox.FirefoxDriver;3 import org.openqa.selenium.os.WindowsUtils;4 /*5 * 结束进程6 */7 public class KillProcess {8 9 public static void main(String[] args) { 10 //结束进程 …

白盒测试的3中主要方法(cont.)

文章目录白盒测试简介逻辑覆盖测试法SCDCCCCDCMCCMCDC基本路径测试法BPC测试的四个步骤循环路径覆盖法白盒测试简介 静态白盒测试也称为结构化分析。 动态白盒测试又称为结构化测试。 以下所说的应该均属于动态白盒测试。 逻辑覆盖测试法 SC sentence coverage 语句覆盖 设…

CRichEdit小记

使用前要AfxInitRichEdit2(); 修改背景颜色和字体颜色 CRichEditCtrl* p(CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21);CHARFORMAT2 cf;memset((char*)&cf,0,sizeof(cf));COLORREF color;color RGB(0,255,0);cf.dwMask CFM_COLOR;cf.crTextColor color; //The text color…

学习3dmax(四)

今天没有怎么做东西,是再看一些理论的东西。这个是再网上看到的,虽然说的是如何学习3dmax,但是我个人认为学习任何一种技术都应该如此。1. 把MAX当成一门新的课程学习(和MAYA没啥关系!真的。)&…

ES6深拷贝与浅拷贝

小感在前 React学习与开发过程要经历一个相当长的准备阶段,此前看阮一峰老师的文章中,他就特别提到这一点。但是,由于React框架或者说是一种优秀的前端架构实在太诱人,所以,掌握这项技术所涉及的技术栈过程中经历的任何…

hung-yi lee_p22_无监督学习:词嵌入

文章目录原视频地址:添加链接描述输入是一个词 输出是一个向量 整个过程无监督 用来训练的是一堆文章 精神: 根据一个词汇的上下文来理解它 具体: 1.count based 两个词经常一起出现,认为它们是相似的 2.prediction-based 给神经…

用vs2010打开使用vs2013升级后的WP工程

项目在win7vs2010的环境中建立的,后来在win8.1vs2013的环境下修改和完善: 但是所有功能实现后发现wp7项目在使用vs2013打开后因为单向升级的原因,项目只能被编译为wp8项目(win8.1vs2013无法安装wp7的sdk,提示不兼容&am…

神州6号发射成功了--庆祝一下

转载于:https://www.cnblogs.com/ccBoy/archive/2005/10/12/253268.html

android保持服务不休眠(持续运行)以及唤醒屏幕的方法

假设有这样一个应用场景,一个服务一直在默默的工作(比如即时地获取服务器的消息),即使在屏幕已经因为长时间无操作而关闭,或者用户按了电源键让屏幕关闭,手机进入休眠状态,他必须依然在工作中。…

三类常见软件质量(Quality Attribute)属性的通俗解释

外部质量 用户关心 正确性,最最基本的质量属性,对应功能需求,其他QA多对应非功能需求。健壮性,在异常情况下正常运行的能力。 包含容错能力和恢复能力。恢复没有容错健壮。可靠性,用平均无bug运行时间与平均bug修复时…

winform动态的文字效果

效果图如下 private void Form1_Load(object sender, EventArgs e){Graphics Car_Paint panel1.CreateGraphics();//实例化绘图对象string Car_Str "青岛**软件公司";//定义要绘制的动态文字Character character new Character();//实例化自定义类对象character.D…

使用Mycat构建MySQL读写分离、主从复制、主从高可用

数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。 从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,…

SharePoint的Reporting Service Viewer Web Part

今天本来打算做一个专门用于Reporting Service报表浏览的SharePoint web part,记得在Reporting Service 2000下有一个viewer的Sample,就想找来参考一下,谁知在C:\Program Files\Microsoft SQL Server\90\Tools\Reporting Services\SharePoint…

7个面向对象常用原则的中英文名、别名、定义及显著特点

单一职责原则 英文名:Single Responsibility Principle(SRP) 别名:无 定义1:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中 定义2:就一个类而言,应该仅有一个引起它变化的原因 开闭原则…

常见的“公共标志和说明”英文表达

1、Business Hours 营业时间  2、Office Hours 办公时间  3、Entrance 入口  4、Exit 出口  5、Push 推  6、Pull 拉  7、Shut 此路不通  8、On 打开 ( 放)  9、Off 关  10、Open 营业  11、Pause 暂停  12、Stop 关闭  13、Closed 下班  14、Menu 菜…

【T-SQL】基础——表别名

Som有时候我们需要为表设置别名,这样就可以方便的修改表。 如果在SSMS中,可以点击 Query-> SQL CMD mode --Set Alisa for the table:setvar tablename "[RetailDataWarehouse].[dbo].[FactUnit]" Select ExternalOrderId,COUNT(DISTINCT(R…

数据挖掘的实现流程

文章目录1.数据、信息与知识2.数据挖掘实现流程概览图3.数据准备(step 1)4.数据挖掘(step 2)5.模型的评估解释(step 3)6.知识运用(step 4)7.小结1.数据、信息与知识 2.数据挖掘实现流程概览图 这里提供两张图,以下讲解基于第一张图。 3.数据准备(step 1) Knowl…

设计模式:备忘录模式??

定 义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后就可以将该对象恢复到原先保存的状态。 结构图: Originator(发起人):负责创建一个备忘录(Memento)&#xff…

如何用Python批量提取PDF文本内容?

本文为你展示,如何用Python把许多PDF文件的文本内容批量提取出来,并且整理存储到数据框中,以便于后续的数据分析。 问题 最近,读者们在后台的留言,愈发五花八门了。 写了几篇关于自然语言处理的文章后,一种…

常用的3种注入方式

构造注入 指通过构造函数来传入具体类的对象设值注入(Setter注入) 指通过Setter方法来传入具体类的对象接口注入 指通过在接口中声明的业务方法传入具体类的对象

WebService客户端添加SOAPHeader信息

WebService客户端添加SOAPHeader信息 通过JAXBContext创建Marshaller对头信息进行解析为dom,获取WSBindingProvider,使用Headers.creat()创建soap的Header元素; 另外就是:将user转换为dom是为了不在有wsdl生成的LicenceInfo类中增…

MATLAB 向量

MATLAB 向量: 1、MATLAB 行向量: 创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素。 2、MATLAB 列向量: 创建列向量括在方括号中的元素的集合,使用分号来分隔的元素。 3、

Wiki为什么会流行

我来开题,老段补充一下,嘿嘿。。。Wiki的优点:版本管理和版本比较多作者,多编辑的协作简洁Wiki的缺点(或者第一次用不是很习惯的地方): 非所见即所得需要学习一下简单的语法文章的分类好像不是很地道所有的链接基本是自…

hung-yi lee_p18_图神经网络(cont.)

文章目录1. 简介2. 怎么把图喂到神经网络里面呢3. 为什么需要GNN4. 训练GNN遇到的问题5. 后面的内容安排6. GNN要做的事,常用数据集和基准7. 第一种实现GNN的方法(Spatial-based GNN)7.1 NN4G7.2 DCNN7.3 DGC7.4 MoNET番外:聚集的几种方法7.5 GAT7.5 GIN…

SQL Server2008附加数据库之后显示为只读

SQL Server2008附加数据库之后显示为只读时解决方法 啰嗦的话就不多说了,直入主题吧! 方案一: 碰到这中情况一般是使用的sa账户登录的,只要改为Windows身份验证,再附加数据库即可搞定。 方案二: 使用sa登录…

java maven项目使用sonar审核代码

为什么80%的码农都做不了架构师&#xff1f;>>> 一、pom增加插件 <plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>3.1.1</version> </plugin> 二…

ERP成功全球实施十大成功案例

、美铝公司&#xff08;Alcoa&#xff09; 公司简介 美铝公司创办于19世纪80年代中期&#xff0c;目前是世界最大的氧化铝、电解铝和铝加工产品的生产商&#xff0c;活跃于包括基础研究和开发、技术及回收利用等铝工业的所有主要领域。美铝产品应用于航空航天、汽车、包装、建筑…

CentOS安装Oracle全过程

1.准备工作 &#xff08;1&#xff09;安装Java环境 &#xff08;2&#xff09;增大SWAP空间 1.1 切换为root用户 1.2 dd if/dev/zero of/home/swap bs1024 count204800 1.3 /sbin/mkswap /home/swap 1.4 /sbin/swapon /home/swap 1.5 free -m 1.6 vi /etc/fstab 添加 /home/…