Python学习笔记

卷积

设输入图片大小为n*n,卷积核大小为f*f,周围填充p圈,步长为s,则输出图片大小为

(\frac{n+2p-f}{s}+1)\times (\frac{n+2p-f}{s}+1)

(如果计算结果不是整数,则向下取整)

图像边缘检测

将图片与如下卷积核kernal/过滤器filter进行卷积

1 0 -1
1 0 -1
1 0 -1

也可以用下面的这些卷积核进行卷积:

Sobel Filter
1 0 -1
2 0 -2
1 0 -1

这种卷积核的优点是增加了中间这一行的权重,这样就可以使得整个系统的鲁棒性(robust a.)更高(鲁棒性指的是计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃)

如果需要进行水平边缘处理,那直接将整个卷积核顺时针旋转90°即可

当然,最好的办法是直接把卷积核设置成参数,让深度学习自己去算,这样就可以更加灵活地处理不同角度的边缘。

填充padding

填充的原因:

1. 卷积的时候边缘的数据只会被计算一两次,这样就浪费了边缘上的信息,因此需要在图片周围进行一定的填充,这样卷积的时候才能够更多地利用到图片边缘的信息

2. 图片每卷积一次缩小(shrink v.)一圈,这样就会使得图片越来越小,在图片周围进行填充可以让图片进行卷积之后仍然保持原来的大小

需要维持图片原大小的p=(f-1)/2

Valid/Same Convolution

Valid Convolution: p=0

Same Convolution: p=(f-1)/2

卷积核边长一般都是奇数

1. 如果f是偶数那就只能够不对称填充(asymmetric padding n.)输入图片,f是奇数才能够对称填充(natural padding n.)

2. 奇数f可以有一个中心点,这样就可以利用中心点来确定卷积核的位置

3. 其实是大家的习惯(

步长stride

多维卷积

直接把每次对应的27个数字加在一起,最后输出只有一个通道

卷积总结

如果l是卷积当中的一层,那么f^{[l]}为卷积核的边长,p^{[l]}为填充宽度,s^{[l]}为步长,n_{C}^{[l]}为卷积核数量

输入为n_H^{[l-1]}\times n_W^{[l-1]}\times n_C^{[l-1]}(分别表示长、宽、通道数量)

输出为n_H^{[l]}\times n_W^{[l]}\times n_C^{[l]}(分别表示长、宽、卷积核数量)

每个卷积核为f^{[l]}\times f^{[l]}\times n_C^{[l-1]}

n^{[l]}=\frac{n^{[l-1]}+2p^{[l]}-f^{[l]}}{s^{[l]}}+1

激活值=(输出+偏差)*激活函数

a^{[l]}\rightarrow n_H^{[l]}\times n_W^{[l]}\times n_C^{[l]}

A^{[l]}\rightarrow M\times n_H^{[l]}\times n_W^{[l]}\times n_C^{[l]}M表示样本数量)

权重weights: W=f^{[l]}\times f^{[l]}\times n_C^{[l-1]}\times n_C^{[l]}

偏差常数biasn_C^{[l]} \rightarrow (1,1,1,n_C^{[l]})

卷积神经网络的三种层

卷积层Convolution layer(Conv)

池化层Pooling layer(Pool)

全连接层Fully connected layer(FC)

池化层Pooling Layer

f: 过滤器大小

s: 步长

最大池化/平均池化

输入为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值