pytorch中nn.Conv1d功能介绍

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

        在使用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

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())

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6