【Pytorch深度学习笔记 10】基本的卷积操作conv1d

声明

本文根据个人理解写的,如有纰漏望指正,谢谢!

Conv1d的理解

conv1d有两个,一个是torch.nn模块中,另一个是torch.nn.functional模块中。

第一种: torch.nn.Conv1d

调用格式
torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’, device=None, dtype=None)

  • in_channels:输入通道数
  • out_channels:输出通道数(同卷积核个数)
  • kernel_size:卷积核“长度”,其另一维度值与输入的通道数相同,所以卷积核尺寸为kernel_size*in_channels
  • stride:滑动步长,默认为1
  • padding:补充0的个数,默认为0。例:当padding=1,则在输入的每一通道的数列的左右两端各补一个0
  • dilation:核的元素之间的间隔。 默认为1。(1应该是指元素间距,1即紧邻)
  • groups:分组数。
    例如,(1)当groups=1,则所有输入都卷积到输出;(2)groups=2时,这个操作就相当于有两个conv层并排,每个conv层作用于一半的输入通道,产生一半的输出通道,然后两者串联起来;(3)groups= in_channels时,每个输入通道都用它自己的一组滤波器进行卷积,这些滤波器的大小为⌊in_channels/out_channels⌋

运算示意图
【Pytorch深度学习笔记 10】基本的卷积操作conv1d_第1张图片

A 1 , 1 A_{1,1} A1,1的计算为:
[ a 1 , 1 a 1 , 2 a 1 , 3 a 1 , 4 a 2 , 1 a 2 , 2 a 2 , 3 a 2 , 4 ] ∗ k e r n e l = A 1 , 1 \left[ \begin{array}{cc} a_{1,1} \quad a_{1,2} \quad a_{1,3} \quad a_{1,4} \\ a_{2,1} \quad a_{2,2} \quad a_{2,3} \quad a_{2,4} \end{array} \right] * kernel = A_{1,1} [a1,1a1,2a1,3a1,4a2,1a2,2a2,3a2,4]kernel=A1,1
其中 k e r n e l ∈ R 2 × 2 kernel \in R^{2 \times 2} kernelR2×2,也就是nn.Conv1(2,4, 2)中最后一个参数指定的大小,也就是一个2x2的矩阵,具体为什么只能设置长宽一致的核不太清楚。
需要强调的是:
(1)nn.Conv1(2,4, 2)第一个参数使之input_channels的维度大小,也就是要与原始数据(3,2,4)第二个维度对应。
(2)nn.Conv1(2,4, 2)第二个参数是输出维度的大小。

举个例子
conv1d参与操作的主要有:输入数据、weight、bias。参考

import torch.nn as nn
import torch

# input data
input = torch.randn(3, 2, 4)        # (batch_size,channels,length)
print("input data:\n",input)

# define conv1d
m = nn.Conv1d(2, 4, 2, stride=1)    # (input_channels, output_channels, kernel_size, stride)

# weight and bias
print("weight:\n",m.weight)
print("bias:\n", m.bias)

# perform conv1d
output = m(input)
print("output:\n",output)

注:如何更改weight和bias呢?

nn.init.constant_(conv1.weight, 1)	# 将核的元素值初始化为全1
nn.init.constant_(conv1.bias, 0)	# 偏置值为0

第二种: torch.nn.functional.conv1d

调用格式
torch.nn.functional.conv1d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)

  • in_channels (int) – Number of channels in the input image
  • out_channels (int) – Number of channels produced by the convolution
  • kernel_size (int or tuple) – Size of the convolving kernel
  • stride (int or tuple, optional) – Stride of the convolution. Default: 1
  • padding (int, tuple or str, optional) – Padding added to both sides of the input. Default: 0
  • padding_mode (string, optional) – ‘zeros’, ‘reflect’, ‘replicate’ or ‘circular’. Default: ‘zeros’
  • dilation (int or tuple, optional) – Spacing between kernel elements. Default: 1
  • groups (int, optional) – Number of blocked connections from input channels to output channels. Default: 1
  • bias (bool, optional) – If True, adds a learnable bias to the output. Default: True

你可能感兴趣的:(pytorch,深度学习,深度学习,神经网络,机器学习)