pytorch之nn.Conv1d详解

这篇具有很好参考价值的文章主要介绍了pytorch之nn.Conv1d详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、Conv1d 定义
class torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

nn.conv1d,pytorch,深度学习,python

自然语言处理中一个句子序列,一维的,所以使用Conv1d,此时卷积核(没有batch_size,参数是共享的)除去chanel,也是一维的。 

nn.conv1d,pytorch,深度学习,python

2、参数 

in_channels(int) – 输入信号的通道。在文本分类中,即为词向量的维度
out_channels(int) – 卷积产生的通道。有多少个out_channels,就需要多少个1维卷积
kernel_size(int or tuple) - 卷积核的尺寸,卷积核的大小为(k,),第二个维度是由in_channels来决定的,所以实际上卷积大小为kernel_size*in_channels
stride(int or tuple, optional) - 卷积步长
padding (int or tuple, optional)- 输入的每一条边补充0的层数
dilation(int or tuple, `optional``) – 卷积核元素之间的间距
groups(int, optional) – 从输入通道到输出通道的阻塞连接数
bias(bool, optional) - 如果bias=True,添加偏置

3、shape:

nn.conv1d,pytorch,深度学习,python
4、代码例子:

官方例子1: 

input1 = torch.randn(20, 16, 50) # torch.Size([20, 16, 50])
m = nn.Conv1d(16, 33, 3, stride=2) # Conv1d(16, 33, kernel_size=(3,), stride=(2,))
output = m(input1) # torch.Size([20, 33, 24])

验证Shape中conv1d 关于输出Lout的公式:Lout =⌊50+2*0 - 1*(3-1) -1⌋/2 + 1 = 24

例子2:

import torch
import torch.nn as nn

# 卷积大小为kernel_size*in_channels, 此处也即 3 * 4, 每个卷积核产生一维的输出数据,长度与输入数据的长度和stride有关,根据ouotput可知是3,第二个参数2也就卷积核的数量
m = nn.Conv1d(4, 2, 3, stride=2)

# 第一个参数理解为batch的大小,输入是4 * 9格式 
input = torch.randn(1, 4, 9)
print(input)
output = m(input)
print(output)
print(output.size())

 输出如下:

tensor([[[-0.2105, -1.0958,  0.7299,  1.1003,  2.3175,  0.8186, -1.7510,  -0.1925,  0.8591],
         [ 1.0991, -0.3016,  1.5633,  0.6162,  0.3150,  1.0413,  1.0571,  -0.7014,  0.2239],
         [-0.0658,  0.4755, -0.6653, -0.0696,  0.3483, -0.0360, -0.4665,   1.2606,  1.3365],
         [-0.0186, -1.1802, -0.8835, -1.1813, -0.5145, -0.0534, -1.2568,   0.3211, -2.4793]]])

tensor([[[-0.8012,  0.0589,  0.1576, -0.8222],
         [-0.8231, -0.4233,  0.7178, -0.6621]]], grad_fn=<SqueezeBackward1>)

torch.Size([1, 2, 4])
 

第一个卷积核进行如下操作:

nn.conv1d,pytorch,深度学习,python

 得到输出1*4的输出:

[-0.8012, 0.0589, 0.1576, -0.8222]

第二个卷积核进行类似操作:

nn.conv1d,pytorch,深度学习,python

得到输出1*4的输出:

[-0.8231, -0.4233, 0.7178, -0.6621]

合并得到最后的2*4的结果:

nn.conv1d,pytorch,深度学习,python

 

输入的input为 4 * 9 ,输出为 2 * 4。

验证Shape中conv1d 关于输出Lout的公式:Lout =⌊ 9+2*0 - 1*(3-1) -1⌋/2 + 1 = 4

 参考:

1、pytorch之nn.Conv1d详解_若之辰的博客-CSDN博客_conv1d

2、简要解释什么是Conv1d,Conv2d,Conv3d_音程的博客-CSDN博客_conv1d

3、torch.nn.Conv1d及一维卷积举例说明_拉轰小郑郑的博客-CSDN博客_torch一维卷积文章来源地址https://www.toymoban.com/news/detail-597053.html

到了这里,关于pytorch之nn.Conv1d详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CONV1D一维卷积神经网络运算过程(举例:n行3列➡n行6列)

    作者:CSDN @ _养乐多_ 背景 一维卷积的运算过程网上很多人说不清楚,示意图画的也不清楚。因此,本人针对一维卷积的过程,绘制了计算过程,以我的知识量解释一下 pytorch 中 Conv1d() 函数的机理。 Conv1d() 计算过程 假设我们现在有 n 行,3列数据。n 行可以是 n 个点,也可以

    2024年02月06日
    浏览(29)
  • 【PyTorch】nn.Conv2d函数详解

    CONV2D官方链接 in_channels:输入的通道数,RGB 图像的输入通道数为 3 out_channels:输出的通道数 kernel_size:卷积核的大小,一般我们会使用 5x5、3x3 这种左右两个数相同的卷积核,因此这种情况只需要写 kernel_size = 5这样的就行了。如果左右两个数不同,比如3x5的卷积核,那么写作

    2024年01月22日
    浏览(28)
  • 解决RuntimeError: Error(s) in loading state_dict for ResNet: Missing key(s) in state_dict: “conv1.0...

    在多GPU环境下用Pytorch训练的Resnet分类网络 卷积神经网络ResNet训练好之后,测试环境或测试代码用了单GPU版或CPU版,在加载网络的时候报错,报错处代码为: 报错如下: 出现这种报错的原因主要是,state_dict加载模型权重时,参数不匹配。可能是PyTorch版本环境不一致、torch.

    2023年04月08日
    浏览(29)
  • 【Pytorch】三维卷积 nn.Conv3d 用法

    nn.Conv3d 是 PyTorch 中实现三维卷积操作的类。 其输入和输出的维度如下: 输入维度: 输入张量的维度应为 (N, C_in, D, H, W) ,其中: N : 批量大小 (batch size),即一批输入数据中包含的样本数量。 C_in : 输入通道数 (number of input channels),即输入数据的通道数量,例如彩色图像通常

    2024年02月05日
    浏览(34)
  • pytorch中 nn.Conv2d的简单用法

    参数介绍 : in_channels :卷积层输入通道数 out_channels :卷积层输出通道数 kernel_size :卷积层的卷积核大小 padding :填充长度 stride :卷积核移动的步长 dilation :是否采用空洞卷积 groups :是否采用分组卷积 bias :是否添加偏置参数 padding_mode : padding 的模式 如果输入大小为:

    2024年02月11日
    浏览(29)
  • nn.Conv2d详解

    nn.Conv2d  是 PyTorch 中的一个卷积层,用于实现二维卷积操作。其主要参数有: in_channels :表示输入图像的通道数,也就是输入特征图的深度。 out_channels :表示输出特征图的通道数,也就是卷积核的个数。 kernel_size :表示卷积核的大小;可以是一个整数,表示正方形卷积核的

    2024年02月05日
    浏览(31)
  • torch.nn.Conv3d

    比Conv2D多一个维度。 举例说明:Conv2D对720×720的3通道图像进行卷积,batch_size设为64,则输入向量的维度为 [64, 3, 720, 720], Conv3D对分辨率为720×720的视频(假设为连续5帧)进行卷积,batch_size设为64,则输入向量的维度为 [64, 3, 5, 720, 720]  参数详解 in_channels( int ) :输入张量的通道数

    2023年04月09日
    浏览(26)
  • 【知识点】nn.Conv2d参数设置

    reference   in_channels   这个很好理解,就是输入的四维张量[N, C, H, W]中的C了,即输入张量的channels数。这个形参是确定权重等可学习参数的shape所必需的。 out_channels   也很好理解,即期望的四维输出张量的channels数。 kernel_size   卷积核的大小,一般我们会使用5x5、3x3这

    2024年02月12日
    浏览(26)
  • 【nn.Conv3d】三维卷积参数量与运算量

    输入 :一个长度为7帧的RGB视频,单帧通道数为3,视频的宽高为60×40,1个视频故bs=1 -- (1, 3, 7, 60, 40) 3d卷积 :nn.Conv3d(3, 5, (4, 7, 7), stride=1, padding=0) 3代表输入特征图通道数,5代表输出特征图通道数,4和7分别代表3d卷积的通道数和宽高。(此外stride和padding也可以设定为 (a,b,b)

    2024年02月11日
    浏览(27)
  • pytorch复现_conv2d

    2024年02月06日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包