matlab中的卷积问题,【转载】深度学习中卷积和池化的一些总结

1、卷积

226a6a19a33c

这幅图是对一个5*5的矩阵A进行3*3的矩阵B的卷积,那么就从最上角到右下角,生成卷积之后的矩阵的大小是(5-3+1)*(5-3+1)的矩阵,生成之后的矩阵的元素值,是之前的两个矩阵对应元素的乘积之和,这个在matlab中有现成的命令,但是用之前需要注意下,比如在图中这样的B的话要首先进行B中元素左右和上下的对调才可以满足右侧矩阵的结果。这个是matlab中进行卷积计算的命令要求的,并且这个命令还有第三个参数,如图中使用的是valid参数值,具体的用法还请doc来了解吧。

2、池化

226a6a19a33c

比如上方左侧矩阵A是20*20的矩阵要进行大小为10*10的池化,那么左侧图中的红色就是10*10的大小,对应到右侧的矩阵,右侧每个元素的值,是左侧红色矩阵每个元素的值得和再除以红色矩阵的元素个数,也就是平均值形式的池化。

3、上面说了下卷积和池化,再说下计算中需要注意到的。在代码中使用的是彩色图,彩色图有3个通道,那么对于每一个通道来说要单独进行卷积和池化,有一个地方尤其是进行卷积的时候要注意到,隐藏层的每一个值是对应到一幅图的3个通道穿起来的,所以分3个通道进行卷积之后要加起来,正好才能对应到一个隐藏层的神经元上,也就是一个feature上去。

ps:在做这个实验的过程中,遇到了个2B的问题。我的代码中对convolution和pooling的check都过去了,但是准确率只有25%,反正中间使用了很多方法来找我的错误,最后都没找到,最终和同学的代码对比,一个文件一个文件的替换来跑(为了快速找到问题,把数据规模以及隐藏层的个数都调小了的),最终发现是池化的时候的问题,我把问题原因贴在这里,在池化的过程中,代码应该是这样子的:

226a6a19a33c

而我写成了(注意红色部分)

226a6a19a33c

但是这个代码被check过了没问题,我去看了下check的代码,这个代码是给出的:

226a6a19a33c

也就是这个测试矩阵的features为1,numImages也是1,所以在我的代码中这个问题正好被隐藏掉了,导致我的check是显示congratulations的,因为也导致我就压根没想到是这个地方错误的。。

reshape是一种函数,函数可以重新调整矩阵的行数、列数、维数。在matlab命令窗口中键入doc reshape或help reshape即可获得该函数的帮助信息。

A =

1 4 7 10

2 5 8 11

3 6 9 12

B = reshape(A,2,6)

B =

1 3 5 7 9 11

2 4 6 8 10 12

B = reshape(A,2,[])

B =

1 3 5 7 9 11

2 4 6 8 10 12

原文链接:http://blog.csdn.net/errors_in_life/article/details/65950699

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值