前言
这两天写序列方面的网络代码,要用到
,之前只用过
,本来觉得原理应该很好理解,但是在网上看了一些博客后反而感觉云里雾里。
对比
1 应用场景
我们都知道,图像的数据一般是三维的
,文本的数据一般是二维的
代表图像的通道数,
代表词向量的维度。这么一看,图像中每个像素点向量和文本中词向量是对应的。
2 keras中的参数对比
- kernel_size:卷积核的尺寸
在Conv2D中,是一个二维的元组
,当然也可以传入整数,代表
;
在Conv2D中,是整数
。
- strides:步长
同上
3 计算过程
Conv2D
如图,输入为
的图片,卷积核的尺寸为
,卷积核个数为2,所以
参数总数
。
多出来的3为图片的channel,每个卷积核会自动扩充到3维,对应每个通道。
Conv1D
如图,输入有两个序列,第一个序列为
的文本,卷积核的尺寸为 2,卷积核个数为1,所以
参数总数
。
多出来的3为文本的词向量维度,卷积核会自动扩充到2维,对应每个隐维度。