【防忘笔记】一个例子理解Pytorch中一维卷积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)
nn.Conv1d输入
输入形状一般应为:(N, Cin, Lin) 或 (Cin, Lin), (N, Cin, Lin)
N = 批量大小,例如 32 或 64;
Cin = 表示通道数;
Lin = 它是信号序列的长度;
nn.Conv1d输出
torch.nn.Conv1d() 的输出形状为:(N, Cout, Lout) 或 (Cout, Lout)
其中,Cout由给Conv1d的参数out_channels决定,即Cout == out_channels
Lout则是使用Lin与padding、stride等参数计算后得到的结果,计算公式如下:

例子:
import torch
N = 40
C_in = 40
L_in = 100
inputs = torch.rand([N, C_in, L_in])
padding = 3
kernel_size = 3
stride = 2
C_out = 10
x = torch.nn.Conv1d(C_in, C_out, kernel_size, stride=stride, padding=padding)
y = x(inputs)
print(y)
print(y.shape)
运行上述示例后会得到以下结果
tensor([[[-0.0850, 0.3896, 0.7539, ..., 0.4054, 0.3753, 0.2802],
[ 0.0181, -0.0184, -0.0605, ..., 0.0114, -0.0016, -0.0268],
[-0.0570, -0.4591, -0.3195, ..., -0.2958, -0.1871, 0.0635],
...,
[ 0.0554, 0.1234, -0.0150, ..., 0.0763, -0.3085, -0.2996],
[-0.0516, 0.2781, 0.3457, ..., 0.2195, 0.1143, -0.0742],
[ 0.0281, -0.0804, -0.3606, ..., -0.3509, -0.2694, -0.0084]]],
grad_fn=<SqueezeBackward1>)
torch.Size([40, 10, 52])
y 是输出,它的形状是: 40* 10* 52
40是batchsize;10是用户设定的Cout(即out_channels),52是经过一维卷积层计算后目前序列的长度(即Lout,也可以理解为某个一维矩阵的形状)
注意:
对于一维卷积,
通道数被视为“输入向量的数量”(in_channels)和“输出特征向量的数量”(out_channels);
Lout是输出特征向量的大小(不是数量);
参考:
1、https://stackoverflow.com/questions/60671530/how-can-i-have-a-pytorch-conv1d-work-over-a-vector
2、https://www.tutorialexample.com/understand-torch-nn-conv1d-with-examples-pytorch-tutorial/
【防忘笔记】一个例子理解Pytorch中一维卷积nn.Conv1d的更多相关文章
- 理解NLP中的卷积神经网络(CNN)
此篇文章是Denny Britz关于CNN在NLP中应用的理解,他本人也曾在Google Brain项目中参与多项关于NLP的项目. · 翻译不周到的地方请大家见谅. 阅读完本文大概需要7分钟左右的时 ...
- [学习笔记]一个实例理解Lingo的灵敏性分析
一个实例理解Lingo的灵敏性分析 线性规划问题的三个重要概念: 最优解就是反应取得最优值的决策变量所对应的向量. 最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非 ...
- [PyTorch]PyTorch中反卷积的用法
文章来源:https://www.jianshu.com/p/01577e86e506 pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d ...
- Python机器学习笔记:深入理解Keras中序贯模型和函数模型
先从sklearn说起吧,如果学习了sklearn的话,那么学习Keras相对来说比较容易.为什么这样说呢? 我们首先比较一下sklearn的机器学习大致使用流程和Keras的大致使用流程: skl ...
- 【学习笔记】彻底理解JS中的this
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- 一个例子理解ES6的yield关键字
yield是什么 yield是ES6的新关键字,使函数暂停执行. 一个简单例子 function *countASb() { console.log('Show0:'); var a1 = yield ...
- 一个例子理解c++函数模板的编译
一.例子 template <typename T> inline void callWithMax(const T& a, const T& b){ f(a > b ...
- 一个例子理解Predicate、Consumer和Stream
一个需求: 把年龄大于20的学生的信息打印出来. 面向对象编程 public class Student { private String name; private int age; private ...
- 一个例子理解break和continue的区别
结论:break用于终止整个循环,而continue用于终止某一次循环.public class Test { public static void main(String[] args) { for ...
- 理解pytorch中的softmax中的dim参数
import torch import torch.nn.functional as F x1= torch.Tensor( [ [1,2,3,4],[1,3,4,5],[3,4,5,6]]) y11 ...
随机推荐
- [转帖]Shell中常用的date时间命令
常用FORMAT %Y YYYY格式的年份(Year) %m mm格式的月份(),01-12 %d dd格式的日期(day of month),01-31 %H HH格式的小时数(),00 ...
- Seata配置参考
注意:mysql.redis等连接密码需修改为相应值 Seata-Server 环境 版本:1.4.2 OS: CentOS Linux release 7.5.1804 (Core) ip:192. ...
- Ant Design Vue 中Drawer自定头部的样式、内容部分的样式、弹出层的样式
<a-drawer :title="myTitle" placement="right" :visible="visible" @cl ...
- TienChin 渠道管理-前端展示渠道信息
在编写 Vue 项目的时候我们可以使用 IDEA 当中提供的一个工具叫做 structure,也就是说可以很轻松的列举出当前 Vue 文件的大致结构,点那个就会跳转到对应的地方. 简简单单介绍一个编写 ...
- gym.spaces中找不到prng解决方案
gym.spaces中找不到prng解决方案 在运行飞桨MADDPG问题是遇到模型无法导入不存的的问题: ModuleNotFoundError: No module named 'multiagen ...
- Visual Studio 2022 企业版 离线包 下载
今天安装了Visual Studio 2022 企业版工具,觉得改进还是有一定的,下面提供下载及序列号: 链接:https://pan.baidu.com/s/1qvzg8WtsgaCxrD3M4Y0 ...
- Git企业开发控制理论和实操-从入门到深入(七)|企业级开发模型
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- 私有化部署chatGPT,告别网络困扰
最近的chatGPT是热火朝天,基本人手一个.工具用的好,工作5分钟,划水一整天. 不过最近ChatGPT的访问越来越限制了,访问官网都有网络的问题,今天小卷给大家介绍一个方案,私人独享属于自己的ch ...
- 零基础入门学习Java课堂笔记 ——day04
Java数组 1.数组概述 定义:数组是相同类型的有序集合,同一组同一类型的数据可以按照先后次序排列组合在一起,其中一个数据可以称为元素,每个数组元素可以通过一个下表访问它们 2.数组声明创建 dat ...
- 小知识:什么叫做workaround?
技术人当遇到具体问题,能给出的各种解决方案,有一种类型叫做workaround,翻译过来通常为"应变方法"."变通方法": 其实这种方式通常是没有找到根本的解决 ...