通俗易懂的卷积神经网络教程-第三讲

通俗易懂的卷积神经网络教程-第三讲

我们复习一下上一节的内容,我们把一张28*28*1图片矩阵通过2次卷积,两次池化过程给它变成了4*4*12的矩阵。

 

之后呢,我们就要直接用BP神经网络进行全连接。用什么输入变量进行全连接呢?首先我们把这124*4的矩阵的其中第一个(PP1)给展开为一条,一共4*4=16个变量:

1

2

...

16

 

接着我们把第二个、第三个...一直到第12个矩阵(PP2~PP12)全部给同理展开成为一条,然后我们把所有的行变量合并成一个矩阵:

PP1

1

2

...

16

PP2

1

2

...

16

...

...

...

...

...

PP12

1

2

...

16

这样我们就得到了一个12*16=192的矩阵,接下来我们把第二行拼接到第一行末尾,第三行拼接到第二行末尾,以此类推,第12行拼接到71行末尾得到一个1*192的数组:

1

2

...

192

这样我们放入到BP全连接的输入变量就搞定了,那么怎么进行全连接呢?

(1)根据BP网络的内容我们知道,我们需要输出的结果是和标签变量一样的东西,标签变量是啥来着?我们复习一下:

如果是数字图片,标签中一共因变量Y共有十个值:如果图片中的数字是0,那么第一个格子中就是1,其余的就是0,可以写成:

1

0

0

0

0

0

0

0

0

0

是其他数字的话这张图最后的形式就是:

标签

Y1

Y2

Y3

Y4

Y5

Y6

Y7

Y8

Y9

Y10

其中Y1~Y100或者1的数字,如果图片中的数字是X,那么第X+1的位置就是1,其余位置就是0

(2)我们输出的结果是和标签一样,那么输出的东西就是10个因变量Y,我们一共有输入变量192个,而输出变量是10个,如果把这些小球画出来就是这样的:


(3)这些小球用线连接了起来,那么线一共多少个呢,一个黄色小球对应10个橙色,那么192个黄色小球对应了10*192=1920个线条。有1920个线条就有1920个权值。于是我们生成1920个随机数,作为权值w,我们把第一个输入变量小球对应第一个输出变量小球的权值叫做w1,1,以此类推,把第i个输入变量小球对应第j个输出变量小球的权值叫做wi,j

(4)我们有权值,还需要一个参数叫做偏置量b,这个需要多少个?输出变量有多少个,就有多少个b,我们这里面有10个,那么就随机生成10个偏置量。我们把第i个输出变量小球对应的偏置量叫做bi

(5)我们生成权值和偏置量之后,我们用第一个黄色的小球的值与w1,1相乘,然后用第二个小球与w2,1相乘,以此类推第192个小球与w192,1相乘,我们得到了192个值,然后我们把这些值相加,之后再加一个b1,我们就得出了Y1值,也就是第一个橙色输出变量小球的值。

(6)我们用第1个黄色的小球的值与w1,2相乘,然后用第二个小球与w2,2相乘,以此类推第192个小球与w192,2相乘,我们得到了192个值,然后我们把这些值相加,之后再加一个b2,我们就得出了Y2值,也就是第一个橙色输出变量小球的值。

(7)同理求出Y3~Y10。这样我们就得出了10个橙色小球,也就是输出变量值。

(8)但是这样还没有完事儿,我们不能够光输出这样的值,我们应该给Y1~Y10扣上一个sigmoid函数,给它搞到0~1之间的一个数。这个函数这么写:

这两个公式就可以把Yj全部都给算出来,算出来之后,我们就得到了一个1*10的数组:

y1

y2

...

Y10

比如这个数组的值是:

0.00

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0.00

我们得到数组之后,我们要做的是什么呢?计算一个目标函数,这个目标函数。这个目标函数应该如何计算我接下来再说。

为什么接下来再说,你们想想,我们上面计算了只是一张28*28的图片,而我们一共输入了6W张图片啊,我们是不是应该也按照上面,也就是从第一节开始到现在的方法把其它的图片都导入进去求Y值呀。但是其它图片太多了,共59999个,我们导入不了怎么办?

于是我们引入另外一个机制,叫做:数据块大小batchsize。我们根据batchsize的值,仅仅导入两位数的图片就好啦。比如我们设定batchsize50,我们6W张图片的话,就用60000/50=1200组,我们分成1200组分别导入,也就是进行1200次卷积计算,每一组一共导入50张图片。

我们假定先进行第一组训练,我们随机选择50张图片,把其图片以及标签导入进入,然后通过上面的算法把输出的十个变量Y1~Y10都算出来,一共算了50组这样的数据,然后我们把这些Y1~Y10与它们应该一一对应的标签进行相减,然后平方后,相加,比如第一张图的输出值是:

0.00

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0.00

它的标签是:

1

0

0

0

0

0

0

0

0

0

那么我们把它们的对应位置相减:

输出

0.00

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0.00

标签

1

0

0

0

0

0

0

0

0

0

相减

-1

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0

相减之后,我们再把相减的值给平方了:

相减

-1

0.01

0.01

0.04

0.04

0.05

0.01

0.01

0.01

0

平方

1

0.0001

0.0001

0.0016

0.0016

0.0025

0.0001

0.0001

0.0001

0

之后,我们再把平方后的数据加和为1.0062

这样我们第一张图就算好了,同理我们算第二、第三。。。一直到第50张图,我们会得到50个结果,我们把这50个结果加和,然后除以50,得到了一个平均值,这个值用术语就叫做MSE平均方差。

我们把第一组batchsize50个数据求完了,这样,第一次正向传播就结束了。我们今天就讲到这里,下节课再见!

 

下节课我们讲解反向传播。

 

————————————————

如果对我的课程感兴趣的话,欢迎关注小木希望学园-微信公众号: 

mutianwei521

也可以扫描二维码哦!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值