卷积(Convolution)

夏天老师

发表文章数:629

热门标签

,
首页 » 算法 » 正文

CNN入门讲解:什么是卷积(Convolution)

卷积核

卷积(Convolution)

1,物理意义

系统某一时刻的输出是由多个输入共同作用(叠加)的结果

f(x)可以理解为原始像素点(source pixel),所有像素点叠加起来,就是原始图了
g(x)可以称为作用点,所有作用点合起来称为卷积核(Convolution kernel)

卷积核上所有作用点依次作用于原始像素点后(即乘起来),线性叠加的输出结果,即是最终卷积的输出,也就是我们想要的结果。

2,原理图

卷积(Convolution)

最左边就是我们原始输入的图像了,中间是卷积层,-8是卷积的结果

经过不同卷积核卷积后效果是不一样的,因为CNN里卷积核的大小是有讲究的

demo:
卷积(Convolution)
5*5的卷积核要比3*3的卷积核效果细腻不少

3,小总结

  1. 原始图像通过与卷积核的数学运算,可以提取出图像的某些指定特征(features)
  2. 不同卷积核,提取的特征也是不一样的
  3. 提取的特征一样,不同的卷积核,效果也不一样

因为CNN实际上就是一个不断提取特征,进行特征选择,然后进行分类的过程,卷积再CNN里,就是充当前排排布兵,首先对原始图像进行特征提取。
所以我们要弄懂卷积在干什么,才能弄懂CNN。

import scipy as sp
result = sp.convolve([1,2,3,4],[4,5,6])
print(result)

def conv(lst1,lst2):    
    length1=len(lst1)    
    length2=len(lst2)    
    lst1.reverse()    
    result=[]    
    for i in range(1,length1+1):        
        t=lst1[length1-i:]        
        r1=sum([t1*t2 for t1,t2 in zip(t,lst2)])                          result.append(r1)    
    for i in range(1,length2):        
        t=lst2[i:]        
        r2=sum([t1*t2 for t1,t2 in zip(lst1,t)])                          result.append(r2)    
    return result
if __name__=='__main__':    
    result=conv([1,2,3,4],[4,5,6])    
    print(result)
标签:

拜师教育学员文章:作者:夏天老师, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《卷积(Convolution)》 发布于2020-09-09

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录