卷积神经网络学习

胡乱写的!!!

目录

一、CNN架构

二、每层layer详解

1.Convolution

3.Max pooling

3.Flatten

三、CNN in Keras

1.语句介绍

 四、 复杂的Input时

五、What is the output?

每一个向量都有一个对应的Label

六、Sequence Labeling

七、Self-Attention

1.怎么产生b^1这个向量

 2.计算α

一、矩阵的角度

二、Multi-head Self-attention


一、CNN架构

在这里插入图片描述

 在这里插入图片描述

  • 第一个,要生成一个pattern,不要看整张的image,你只需要看image的一小部分。
  • 第二个,通用的pattern会出现在一张图片的不同的区域。
  • 第三个,可以做subsampling

二、每层layer详解

1.Convolution

 在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

 你有100个filter,你就得到100个4 * 4的image,组成feature map

3.Max pooling

在这里插入图片描述

 

在这里插入图片描述

 

在这里插入图片描述

 

在这里插入图片描述

 在这里插入图片描述

3.Flatten

在这里插入图片描述

 

在这里插入图片描述

 flatten就是feature map拉直,拉直之后就可以丢到fully connected feedforward netwwork,然后就结束了。

三、CNN in Keras

1.语句介绍

在这里插入图片描述

 因为image的长宽高各是一维,若是彩色的话就是第三维。所以要给三维的tensor

model.add(Convolution2D(25, 3, 3))

 25代表有25个filter,3 *3代表filter是一个3 *3的matrix(在二维卷积中,卷积核大小通常设置为 3×3)。

Input_shape=(28,28,1)

假设我要做手写数字辨识,input是28 *28的image,每个pixel都是单一颜色。所以input_shape是(1,28,28)。

MaxPooling2D(( 2, 2 ))

2,2表示把2*2的feature map里面的pixel拿出来,选择max value

在这里插入图片描述

 

假设我们input一个1 *28 * 28的image,你就可以写

model.add(Convolution2D( 25, 3, 3, Input_shape=(28,28,1)))

通过convplution以后得到output是25 *26 26(25个filter,通过3 *3得到26 * 26)。

然后做max pooling,2 *2一组选择 max value得到 25 *13 * 13

然后在做一次convolution,假设我在这选50个filter,每一个filter是3 *3时,那么现在的channel就是50。

13 *13的image通过3 *3的filter,就成11 *11,然后通过2 *2的Max Pooling,变成了50 *5 *5

在这里插入图片描述

 通过两次convolution,两次Max Pooling,原来是1 *28 *28变为50 *5 *5。flatten的目的就是把50 *5 *5拉直,拉直之后就成了1250维的vector,然后把1250维的vector丢到fully connected。

 四、 复杂的Input时

在这里插入图片描述

到目前为止学的Network的输入都是一个向量(比如CV还是youtube视频等的输入都可以看做一个向量),而输出可能一个数值(如类别等)

五、What is the output?

输入是一堆向量,它可以是文字,可以是语音,可以是Graph,这样输出是有三种可能的

每一个向量都有一个对应的Label

在这里插入图片描述

这种情况是说输入和输出一样数量。
当你的模型,看到输入是四个向量的时候,它就要输出四个Label,而每一个Label,它可能是一个数值,那就是Regression的问题,如果每个Label是一个Class,那就是一个Classification的问题

六、Sequence Labeling

输入跟输出数目一样多,给Sequence裡面的每一个向量,都给它一个Label

在这里插入图片描述

把每一个向量,分别输入到Fully-Connected的Network裡面。然后Fully-Connected的Network就会给我们输出,那现在看看,你要做的是Regression还是Classification,產生正确的对应的输出,就结束了

缺陷:后面这一个saw跟前面这个saw完全一模一样。既然Fully-Connected的Network输入同一个词汇,它没有理由输出不同的东西

在这里插入图片描述

 所以我们可以给Fully-Connected的Network,一整个Window的资讯,让它可以考虑一些上下文的,跟我现在要考虑的这个向量,相邻的其他向量的资讯

在这里插入图片描述

 那有人可能会想说这个很容易,我就把Window开大一点啊,大到可以把整个Sequence盖住就结束了。但是,今天Sequence的长度是有长有短的,我们刚才有说,我们输入给我们的Model的Sequence的长度,每次可能都不一样

开一个这麼大的Window,意味著你的Fully-Connected的Network,它需要非常多的参数,那可能不只运算量很大,可能还容易Overfitting

七、Self-Attention

在这里插入图片描述

在这里插入图片描述

 Self-Attention不是只能用一次,你可以叠加很多次。所以可以把Fully-Connected的Network,跟     Self-Attention交替使用

  • Self-Attention处理整个Sequence的资讯
  • Fully-Connected的Network,专注於处理某一个位置的资讯
  • 再用Self-Attention,再把整个Sequence资讯再处理一次
  • 然后交替使用Self-Attention跟Fully-Connected

在这里插入图片描述

 这每一个b都是考虑了所有的a以后才生成出来的

1.怎么产生b^1这个向量
 

在这里插入图片描述

每一个向量跟a 1 的关联的程度,用一个数值叫α来表示

在这里插入图片描述

 这个计算attention的模组,就是拿两个向量作為输入,然后它就直接输出α那个数值,

 2.计算α

 在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

 

 在这里插入图片描述

一、矩阵的角度

在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

二、Multi-head Self-attention

在这里插入图片描述

 在这里插入图片描述

在这里插入图片描述

 在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值