nn.Conv2d()

部署运行你感兴趣的模型镜像

pytorch中tensor的维度顺序默认是 [batch, channel, height, width]

2D卷积层

torch.nn.Conv2d(in_channels, 
                out_channels, 
                kernel_size, 
                stride=1, 
                padding=0, 
                dilation=1, 
                groups=1, 
                bias=True
                padding_mode = 'zeros')

参数详解

in_channels(int) :输入张量的通道数
out_channels(int) :卷积中滤波器的数量,表示输出张量的通道数
kerner_size(int or tuple) :卷积窗口的宽度和高度
stride(int or tuple, optional) :卷积沿宽度和高度方向的步长
padding(int or tuple, optional) :输入的每一条边填充的层数
dilation(int or tuple, optional) :卷积核元素之间的间距,即膨胀卷积的膨胀率,默认为1。
groups(int, optional):控制输入和输出之间的连接: group=1,输出是所有的输入的卷积;group=2,此时相当于有并排的两个卷积层,每个卷积层计算输入通道的一半,并且产生的输出是输出通道的一半,随后将这两个输出连接起来。
bias(bool, optional) :如果bias=True,添加偏置
padding_mode(str, optional) :填充的方式,如果padding_mode = 'zeros',表示用0填充
 

示例

import torch.nn as nn
import torch
 
# 创建一个卷积层,填充一圈0
conv1 = nn.Conv2d(in_channels=3,
                  out_channels=32,
                  kernel_size=(3, 3),
                  stride=(2, 2),
                  padding=1)
 
# 创建一个卷积层,无填充
conv2 = nn.Conv2d(in_channels=3,
                  out_channels=32,
                  kernel_size=(3, 3),
                  stride=(2, 2),
                  padding=0)
 
# 创建一个维度为[64, 3, 5, 5]的tensor
x = torch.rand(64, 3, 5, 5)  
 
# 进行卷积
y1 = conv1(x)
print(y1.shape) # [64, 32, 3, 3]
 
# 进行卷积
y2 = conv2(x)
print(y2.shape) # [64, 32, 2, 2]

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

`nn.Conv2d` 是 PyTorch 中用于构建二维卷积层的类,常用于处理图像数据。以下是关于 `nn.Conv2d` 的详细使用指南。 ### 基本概念 `nn.Conv2d` 是 `nn.Module` 的子类,与 `nn.functional` 中的函数不同,它具有可学习的参数,如卷积核的权重和偏置。卷积操作是通过在输入数据上滑动卷积核来提取特征的过程。 ### 构造函数参数 `nn.Conv2d` 的构造函数如下: ```python torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None) ``` - `in_channels`:输入特征图的通道数,例如对于 RGB 图像,`in_channels` 为 3。 - `out_channels`:输出特征图的通道数,即卷积核的数量。 - `kernel_size`:卷积核的大小,可以是一个整数(表示正方形卷积核)或一个元组(表示不同的高和宽)。 - `stride`:卷积核的步幅,默认为 1。 - `padding`:在输入特征图的边界填充的层数,默认为 0。 - `dilation`:卷积核元素之间的间距,默认为 1。 - `groups`:输入通道和输出通道之间的分组数,默认为 1。 - `bias`:是否使用偏置,默认为 `True`。 - `padding_mode`:填充模式,默认为 `'zeros'`。 ### 使用示例 ```python import torch import torch.nn as nn # 定义一个卷积层 conv_layer = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1) # 生成一个随机输入张量,模拟 RGB 图像数据 input_tensor = torch.randn(1, 3, 28, 28) # 批量大小为 1,通道数为 3,高度为 28,宽度为 28 # 进行卷积操作 output = conv_layer(input_tensor) print(output.shape) # 输出特征图的形状 ``` ### 代码解释 1. **定义卷积层**:创建一个 `nn.Conv2d` 实例,输入通道数为 3,输出通道数为 16,卷积核大小为 3x3,步幅为 1,填充为 1。 2. **生成输入张量**:使用 `torch.randn` 生成一个随机输入张量,模拟 RGB 图像数据。 3. **进行卷积操作**:将输入张量传递给卷积层,得到输出特征图。 4. **输出形状**:打印输出特征图的形状,观察卷积操作的结果。 ### 注意事项 - `nn.Conv2d` 是一个可学习的模块,因此可以将其包含在 `nn.Sequential` 或自定义的 `nn.Module` 子类中。 - 输入张量的形状必须为 `(batch_size, in_channels, height, width)`。 - 可以通过调整 `stride`、`padding` 等参数来控制输出特征图的大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值