通俗理解tf.nn.conv2d() tf.nn.conv3d( )参数的含义 pytorhc 卷积

20210609

例如(3,3,(3,7,7))表示的是输入图像的通道数是3,输出图像的通道数是3,(3,7,7)表示过滤器每次处理3帧图像,卷积核的大小是3 x 7 x 7。

https://blog.csdn.net/gaoxiaoxue_/article/details/107978094
https://blog.csdn.net/weixin_42769131/article/details/104826953

https://www.jianshu.com/p/6e1ef63615f8

问题1:关于pytorch 3D 卷积函数:Conv3d

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

3D卷积神经网络多用于高维度图像数据,例如N帧的视频,由于看参数比较抽象,一般人难以理解具体含义,因此,我以一段100帧视频为例,每帧视频为100010003的彩色图像,1000*1000为图像大小,3为图像的RGB 3个通道。

参数说明:

in_channels(int) – 输入信号的通道(解释:每帧图像的通道数,本例为3)

out_channels(int) – 卷积产生的通道(解释:对应于用了多少个卷积核,如果1个卷积核,就是1,如果输出20,那就是20个卷积核)

kernel_size(int or tuple) - 卷积核的尺寸

stride(int or tuple, optional) - 卷积步长(每次核移动的步长)stride=1 表示stride=(1,1,1),在三维方向上步长是1,在宽和高上步长也是1。

padding(int or tuple, optional) - 输入的每一条边补充0的层数(主要是对图像周围的数据如何处理)padding=0 表示padding=(0,0,0)表示在三维方向上不padding,在宽和高上也不padding。

dilation(int or tuple, optional) – 卷积核元素之间的间距

groups(int, optional) – 从输入通道到输出通道的阻塞连接数

bias(bool, optional) - 如果bias=True,添加偏置

例如(3,3,(3,7,7))表示的是输入图像的通道数是3,输出图像的通道数是3,(3,7,7)表示过滤器每次处理3帧图像,卷积核的大小是3 x 7 x 7

注意:3D卷积的输入是5维的tensor

三维卷积层, 输入数据的尺度是(N, C_in,D,H,W)

举例:(1,3,100,1000,1000)表示输入1个视频,每个视频中图像的通道数是3,每个视频中包含的图像数是100,图像的大小是1000 x 1000。

输出尺度(N,C_out,D_out,H_out,W_out)

1,10,100,1000,1000)表示输出1个视频,每个视频中图像的通道数是10,每个视频中包含的图像数是100,图像的大小是1000 x 1000。

(参考文献:Pytorch学习笔记15----nn.Conv2d与Conv3d参数理解、单通道与多通道卷积理解 - 雨后观山色 - 博客园)

问题2:3D 卷积核大小说明

3D卷积操作如图2所示,同样分为单通道和多通道,且只使用一个filter,输出一个channel。
其中,针对单通道,与2D卷积不同之处在于,输入图像多了一个 depth 维度,故输入大小为(1, depth, height, width),卷积核也多了一个k_d维度,因此卷积核在输入3D图像的空间维度(height和width维)和depth维度上均进行滑窗操作,每次滑窗与 (k_d, k_h, k_w) 窗口内的values进行相关操作,得到输出3D图像中的一个value。
针对多通道,输入大小为(多通道数, depth, height, width),则与2D卷积的操作一样,每次滑窗与多个channels上的 (k_d, k_h, k_w) 窗口内的所有values进行相关操作,得到输出3D图像中的一个value。

在这里插入图片描述

https://blog.csdn.net/g11d111/article/details/82665265
PyTorch学习笔记(9)——nn.Conv2d和其中的padding策略

通俗理解tf.nn.conv2d()参数的含义

字数 326 阅读 1,537

首先以tensorflow中最常用的卷积神经网络为案例进行说明:

tf.nn.conv2d(
    input,
    filter,
    strides,
    padding,
    use_cudnn_on_gpu=True,
    data_format='NHWC',
    dilations=[1, 1, 1, 1],
    name=None)

首先input必须是一个四维的tensor,以28✖️28✖️1的图像为案例进行说明,首先需要转换为4维,需要加入图像样本的个数,假设为100张,变为[100,28,28,1],直观理解为100张 2828的只有一个通道的图片。
我们再来看filter,即卷积神经网络的滤波器,必须与input维度相同,[3,3,1,2],通俗理解为3
3的卷积核2个,只作用于1个通道,即input的最后一个参数和filter的倒数第二个参数是相同的。
第三个参数是stride,控制卷积核的移动步数,与上述两个参数相同,也是四维的,[1,1,1,1],其中第一个1和最后一个1是固定值,需要改变的是中间的两个数,即在x轴和y轴的移动步长。
第四个参数是padding,只有两个取值,'SAME'和'VALID',第一个是填充边界,第二个是当不足以移动时直接舍弃。
其他参数选择默认即可。

"小礼物走一走,来简书关注我"
赞赏支持 还没有人赞赏,支持一下
不分享的知识毫无意义 喜欢数据分析与挖掘,平时主要用hive、python进行数据分析,目前就职于汽车之家,期望与大...
总资产17 (约1.33元) 共写了7.7W字 获得126个赞 共44个粉丝
关注

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值