0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PyTorch中nn.Conv2d与nn.ConvTranspose2d函数的用法

jf_96884364 来源:jf_96884364 作者:jf_96884364 2023-01-11 16:43 次阅读

1. 通道数问题

  • 描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道。如果有RGB三种颜色来描述它,就是三通道。最初输入的图片样本的 channels ,取决于图片类型;
  • 卷积操作完成后输出的 out_channels ,取决于卷积核的数量。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels
  • 卷积核中的 in_channels ,上面已经说了,就是上一次卷积的 out_channels ,如果是第一次做卷积,就是样本图片的 channels

举个例子,假设现有一个为 6×6×3的图片样本,使用 3×3×3 的卷积核(filter)进行卷积操作。此时输入图片的 channels 为 3,而卷积核中的 in_channels 与需要进行卷积操作的数据的 channels 一致(就是图片样本,为3)。接下来进行卷积操作,卷积核中的27个数字与分别与样本对应相乘后,再进行求和,得到第一个结果。依次进行,最终得到 4×4的结果。由于只有一个卷积核,所以最终得到的结果为 4×4×1,out_channels 为 1。如下图所示:

在实际应用中,都会使用多个卷积核。这里如果再加一个卷积核,就会得到 4×4×2的结果。如下图所示:

2. nn.Conv2d

class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True)

nn.Conv2d的功能是:对由多个输入平面组成的输入信号进行二维卷积。输入信号的形式为:

(N,C_{in},H,W)

(1)参数说明

**N:**表示batch size(批处理参数)

C_{in} :表示channel个数

**H,W:**分别表示特征图的高和宽。

**stride(步长):**步长,默认为1,可以设为1个int型数或者一个(int, int)型的tuple。

**kernel_size:**卷积核的宽度和长度,单个整数或由两个整数构成的list/tuple。如为单个整数,则表示在各个空间维度的相同长度。

**padding(补0):**控制zero-padding的数目,padding是在卷积之前补0。

**dilation(扩张):**控制kernel点(卷积核点)的间距; 可以在此github地址查看:Dilated convolution animations

**groups(卷积核个数):**通常来说,卷积个数唯一,但是对某些情况,可以设置范围在1 —— in_channels中数目的卷积核:

(2)图像尺寸

经过一次卷积之后,生成的图的大小:

(original_size - (kernal_size - 1)) / stride

3. nn.ConvTranspose2d

nn.ConvTranspose2d的功能是进行反卷积操作

(1)输入格式

nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1)

(2)参数的含义

  • in_channels(int) – 输入信号的通道数
  • out_channels(int) – 卷积产生的通道数
  • kerner_size(int or tuple) - 卷积核的大小
  • stride(int or tuple,optional) - 卷积步长,即要将输入扩大的倍数。
  • padding(int or tuple, optional) - 输入的每一条边补充0的层数,高宽都增加2*padding
  • output_padding(int or tuple, optional) - 输出边补充0的层数,高宽都增加padding
  • groups(int, optional) – 从输入通道到输出通道的阻塞连接数
  • bias(bool, optional) - 如果bias=True,添加偏置
  • dilation(int or tuple, optional) – 卷积核元素之间的间距

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3911

    浏览量

    61345
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83484
  • pytorch
    +关注

    关注

    2

    文章

    764

    浏览量

    12837
收藏 人收藏

    评论

    相关推荐

    [基于GD32F350RB的音频识别器] 3. CMSIS-NN神经网络配置解析

    的模型输出,记录重要的参数save到另外的程序,转换到输入的数组参数,以便于使用。需要如下定义,#define CONV2_BIAS {55,50,34,43,-37,35,-21,10,35
    发表于 09-21 11:34

    如何利用PyTorch API构建CNN?

    , this becomes (10, 13, 13)  self.conv1 = nn.Conv2d(1, 10, 3)  # maxpool layer  # pool with kernel_size=2
    发表于 07-16 18:13

    Canny边缘检测器的详细介绍以及Pytorch实现

    = get_gaussian_kernel(k_gaussian, mu, sigma)self.gaussian_filter = nn.Conv2d(in_channels=1,out_channels=1,kernel_size
    发表于 11-04 11:59

    如何在PyTorch上学习和创建网络模型呢?

    , num_output_classes=10):super(Net, self).__init__() self.conv1 = nn.Conv2d(in_channels=1, out_channels
    发表于 02-21 15:22

    一层卷积能做啥?一层卷积可以做超分吗?

    = nn.PixelShuffle(s)  self.filter = nn.Conv2d(1,ssC,k,1,(k-1)//2,bias=False)  def forward(self, x
    发表于 03-06 14:05

    长虹|NN5099K电源电路图

    长虹NN5099K彩色电视机电路图,长虹NN5099K彩电图纸,长虹NN5099K原理图。
    发表于 05-05 16:43 72次下载
    长虹|<b class='flag-5'>NN</b>5099K电源电路图

    长虹NN5099K彩电电路图

    长虹NN5099K彩色电视机电路图,长虹NN5099K彩电图纸,长虹NN5099K原理图。
    发表于 05-08 13:26 54次下载
    长虹<b class='flag-5'>NN</b>5099K彩电电路图

    松下NN-5508 NN-5558 NN-6508 NN-7

    松下NN-5508 NN-5558 NN-6508 NN-7508 NN-7558电脑式微波炉电路图
    发表于 02-13 22:50 1132次阅读

    松下NN-5508JPQ NN-5558JPQ微波炉电路图

    松下NN-5508JPQ NN-5558JPQ微波炉电路图
    发表于 02-13 22:51 1114次阅读
    松下<b class='flag-5'>NN</b>-5508JPQ <b class='flag-5'>NN</b>-5558JPQ微波炉电路图

    松下NN-5550 NN-5540电脑式微波炉电路图

    松下NN-5550 NN-5540电脑式微波炉电路图
    发表于 02-13 22:51 3004次阅读
    松下<b class='flag-5'>NN</b>-5550 <b class='flag-5'>NN</b>-5540电脑式微波炉电路图

    松下NN-6808 NN-6858 NN-7808 NN-7

    松下NN-6808 NN-6858 NN-7808 NN-7858电脑式微波炉电路图
    发表于 02-13 22:54 1196次阅读
    松下<b class='flag-5'>NN</b>-6808 <b class='flag-5'>NN</b>-6858 <b class='flag-5'>NN</b>-7808 <b class='flag-5'>NN</b>-7

    松下NN-9559 NN-9850微波炉电路图

    松下NN-9559 NN-9850微波炉电路图
    发表于 02-13 22:55 1166次阅读
    松下<b class='flag-5'>NN</b>-9559 <b class='flag-5'>NN</b>-9850微波炉电路图

    PyTorch中 torch.nn与torch.nn.functional的区别

    torch.nn pytorch中文文档链接: torch.nn 在 __init__() 函数里定义,定义的是一个类: torch.nn.
    的头像 发表于 01-11 16:47 1039次阅读

    如何对图片进行卷积计算

    先导入torch和torch里的nn类,然后设置一个指定尺寸的随机像素值的图片,然后使用nn.conv2d函数进行卷积计算,然后建立全连接层,最后得到新的图片的尺寸
    的头像 发表于 05-22 16:08 547次阅读
    如何对图片进行卷积计算

    NN1-XXXXXH6 系列 NN1-XXXXXH6 系列

    电子发烧友网为你提供()NN1-XXXXXH6 系列相关产品参数、数据手册,更有NN1-XXXXXH6 系列的引脚图、接线图、封装手册、中文资料、英文资料,NN1-XXXXXH6 系列真值表,
    发表于 09-22 16:44
    <b class='flag-5'>NN</b>1-XXXXXH6 系列 <b class='flag-5'>NN</b>1-XXXXXH6 系列