一维卷积 以例子说明 tf.nn.conv1d 矩阵运算过程

这几天在看代码,然后看网上关于一维卷积介绍的文档很多,但是对于tf.nn.conv1d 矩阵运算过程几乎没有介绍,这里我就将刚弄懂的写出来,希望能帮到大家理解这个函数,也为了让自己以后能更好的查阅~~


conv1d(value,  filters, stride, padding, use_cudnn_on_gpu=None, data_format=None, name=None)

value: A 3D Tensor. Must be of type float16 or float32.
被卷积的矩阵:可以当成是[batch, sample, feature]

filters: A 3D Tensor. Must have the same type as input.
卷积核:形状 [filter_width, in_channels, out_channels]

stride: An integer. The number of entries by which the filter is moved right at each step.
步长:卷积核滑动步长

padding: ‘SAME’ or ‘VALID’
same和valid可以参考这篇文档:深度学习面试题09:一维卷积(Full卷积、Same卷积、Valid卷积、带深度的一维卷积)

废话不多说,咱们今天不讲原理,只讲其中矩阵运算过程~ 帮助大家理解~


卷积核filter 的形状:[filter_width, in_channels, out_channels]

  • in_channels 必须等于被卷积的矩阵的第3维数,即列数
  • out_channels 表示卷积核数目,类似于图像里,一个卷积核得到一个输出,这里有|out_channels |个卷积核,则输出必定有|out_channels|
  • filter_width 表示与 value 进行卷积的 个数/每次 (这里不懂可以以往后看例子)

例一:filter_width=1时:

举例,令被一维卷积的value维度是:(2,3,4)
在这里插入图片描述
令卷积核的filter维度是:(1,4,5)
即 [filter_width, in_channels, out_channels] = (1,4,5)
在这里插入图片描述
filter_width =1 说明每次对value里的一行进行卷积:

以value第一个batch里为例:

第一个batch中第1行的计算过程是:
在这里插入图片描述
第一个batch中第2行的计算过程是:
在这里插入图片描述
tf.nn.conv1d 一次对一个batch进行卷积处理,batch之间互不影响。
以此类推,完成一个batch的计算后,第二个batch的计算过程也如此。
所以value整体卷积的结果是:
在这里插入图片描述
以上filter_width=1时的代码如下:

sess= tf.Session()
    a = tf.Variable(np.random
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值