pytorch中nn.Conv1d功能介绍

在使用Conv1d函数时,pytorch默认你的数据是一维的,比如一句话"深度学习"可以用一个一维数组 ['深', '度', '学', '习'] 表示,这个数据就是一维的。图片是二维数据,它有长宽两个维度。

因此在使用 Conv1d 函数时,输入是一个三位数组,三个维度分别表示 (批量,通道,长度)

使用 Conv2d 函数时,输入是一个四维数组,四个维度分别是(批量,通道,行,列),这里不详细介绍Conv2d。

(批量即 batch_size)

用如下例子介绍Conv1d(input_channel=3, output_channel=4, kernel_size=1),输入的例子数据为一句话,这句话有5个单词,假设每个单词都由三个字母组成,就相当于每个单词有3个通道,假设这句话是 ['abc', 'def', 'ghi', 'jkl', 'mno'],这些数据放在图1所示的矩阵里,可见长度为5,深度方向为3。
图1. 数据存储格式

output_channel=4,即由四个卷积核,每个卷积核的通道数和输入的通道数相同,这里是3,如图2所示,第一个元素'abc'的三个通道'a', 'b', 'c'输入第一个卷积核,得到红色数字,第二个单词经过卷积核得到黄色数字,排成一列得到第一个通道,四个卷积核得到输出的四个通道。

如果一个batch里有很多句话,那么分别对每句话进行上述计算即可。
图2. 单个channel计算过程

测试代码:

输入数据的 batch_size=10,通道数为3,长度为5。卷积核大小为1,卷积核通道数和输入数据的通道数一致。输出数据通道数为7,卷积核的数量和输出数据的通道数一致。

因为卷积核大小为1,所以输出长度与输入长度一致,卷积不影响批量数(batch_size),因此输出数据的(批量,通道,长度)应为(10, 7, 5)

python 复制代码
from torch import nn

    conv1 = nn.Conv1d(in_channels=3, out_channels=7, kernel_size=1)
    input = torch.randn(10, 3, 5)
    out = conv1(input)
    print(out.size())

运行后的输出如下图所示,可见分析正确。

相关推荐
Sunsets_Red12 分钟前
浅谈随机化与模拟退火
java·c语言·c++·python·算法·c#·信息学竞赛
prince_zxill17 分钟前
AionUi:开源本地AI协作平台
人工智能
半问34 分钟前
Vibecoding:想法行不行,做出来看看
人工智能·程序人生·ai·产品运营·互联网
张3蜂35 分钟前
Python pip 命令完全指南:从入门到精通
人工智能·python·pip
人工智能AI酱42 分钟前
【AI深究】高斯混合模型(GMM)全网最详细全流程详解与案例(附Python代码演示) | 混合模型概率密度函数、多元高斯分布概率密度函数、期望最大化(EM)算法 | 实际案例与流程 | 优、缺点分析
人工智能·python·算法·机器学习·分类·回归·聚类
我是小疯子661 小时前
HybridA*算法:高效路径规划核心解析
人工智能·算法·机器学习
晨非辰1 小时前
【数据结构入坑指南(三.1)】--《面试必看:单链表与顺序表之争,读懂“不连续”之美背后的算法思想》
数据结构·c++·人工智能·深度学习·算法·机器学习·面试
草莓熊Lotso1 小时前
《算法闯关指南:优选算法--滑动窗口》--15.串联所有单词的子串,16.最小覆盖子串
开发语言·c++·人工智能·算法
阿里-于怀1 小时前
Dify 官方上架 Higress 插件,轻松接入 AI 网关访问模型服务
网络·人工智能·ai·dify·higress
AI周红伟1 小时前
周红伟:智能体构建,《企业智能体构建-DIFY+COZE+Skills+RAG和Agent能体构建案例实操》
大数据·人工智能