一维卷积convolve及其示例

本文深入解析卷积运算的本质及其在图像识别和卷积神经网络中的应用。从一维卷积出发,详细介绍卷积核如何与源数组进行运算,包括有效卷积、同维卷积和完全卷积的概念。并通过实例展示如何利用卷积运算实现股票移动平均线,包括常规和加权移动平均线的计算。

卷积是一种数学运算
应用场景:图像识别、卷积神经网络
本质:计算当前数值时,与之前的数值有关联,需要与之前的数值衰减后的量叠加

一维卷积

一维卷积运算过程

a = [1,2,3,4,5]	#源数组
b = [8,7,6]	#卷积核

#使用 b作为卷积核对a数组执行卷积运算的过程如下:
#数据准备:
0  0  1  2  3  4  5  0  0    #排一下源数组
6  7  8  #将卷积核 6 7 8与对应的 0  0  1相乘再相加,得到的结果 8 记在源数组的上面  

#计算:
	   44 65 86					#有效卷积(value):6这个元素对最终值产生影响时称为有效卷积
   	23 44 65 86 59 30				#同维卷积(same):7这个元素对最终值产生影响时称为同维卷积
      8 23 44 65 86 59 30				#这个技术称为完全卷积(full)
0  0  1  2  3  4  5  0  0				
6  7  8 	
   6  7  8		#将卷积核 6 7 8与对应的 0  1  2相乘再相加,得到的结果 23记在源数组的上面(本质是本次的计算累加了前面计算的缩减)
      6  7  8		#继续上面的计算
         6  7  8	#继续上面的计算
            6  7  8
               6  7  8

API

c = numpy.convolve(a,b,卷积类型)

实例1:基于卷积运算实现股票5日移动平均线

假设closing_prices是已知的收盘价数组,dates是已知的日期数组

import numpy as np
import matplotlib as mp

#生成卷积核: 5个 1/5,表示每天股价的权重相同
kernel = np.ones(5)/5
np.convolve(closing_prices,kernel,'valid')
#绘图
mp.plot(dates[4:],ma52,color='orangered',linewidth=7,alpha=0.5,label='MA5')
mp.legend()
mp.gcf().autofmt_xdate()
mp.show()

实例2:加权卷积:加权5日移动平均线

#通过以e为底的幂函数生成权重(即卷积核):[0.36 0.47 0.607 0.779]
kernel = np.exp(np.linspace(-1,0,5))
#卷积自己的运算规则,需要将卷积核翻转一下
kernel = kernel[::-1]
#对卷积核做归一化,使各个权重之和等于1
kernel /= kernel.sum()

ma53 = np.convolve(closing_prices,kernel,'valid')
 #绘图
 mp.plot(dates[4:],ma53,color='limegreen',linewidth=7,alpha=0.5,label='MA5-2')
 mp.legend()
 mp.gcf().autofmt_xdate()
 mp.show()
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值