pytorch-填充和步幅

import torch
from torch import nn

def comp_conv2d(conv2d,X):
    X=X.reshape((1,1)+X.shape)
    Y=conv2d(X)
    return Y.reshape(Y.shape[2:])

conv2d=nn.Conv2d(1,1,kernel_size=3,padding=1)  #上下左右各加一行.
X=torch.rand(size=(8,8))
print(comp_conv2d(conv2d,X).shape)

conv2d=nn.Conv2d(1,1,kernel_size=(5,3),padding=(2,1))
print(comp_conv2d(conv2d,X).shape)
#核为3*3:(8-3+1+2))/2
conv2d=nn.Conv2d(1,1,kernel_size=3,padding=1,stride=2)
print(comp_conv2d(conv2d,X).shape)

conv2d=nn.Conv2d(1,1,kernel_size=(3,5),padding=(0,1),stride=(3,4))
print(comp_conv2d(conv2d,X).shape)

输出:

torch.Size([8, 8])
torch.Size([8, 8])
torch.Size([4, 4])
torch.Size([2, 2])

### 卷积神经网络中填充步幅的应用 在构建卷积神经网络(CNN)时,填充(padding)步幅(stride)是控制卷积层输出尺寸的重要参数。这两个超参数不仅影响着最终输出的维度大小,还对模型性能有着潜在的影响。 #### 填充的作用 填充是指在输入矩阵周围添加额外的零值像素,这样做的目的是为了让输出特征图保持与输入相同的宽度高度,或者是为了增加边界信息的重要性。当设置`padding='same'`时,意味着希望经过该层后的空间维度不变;而如果设为`valid`则表示不做任何填充处理[^1]。 #### 步幅的意义 步幅决定了滤波器每次移动多少个单位位置,默认情况下一般取1即逐像素扫描整个图片。较大的stride会加快过滤速度但可能导致丢失细节信息,因此需谨慎调整此参数以平衡效率与精度之间的关系[^2]。 下面给出一段简单的Python代码示例来展示如何利用PyTorch库实现带有自定义padddingstride配置的二维卷积操作: ```python import torch.nn as nn class CNNModel(nn.Module): def __init__(self, in_channels=3, out_channels=16, kernel_size=(5, 5), stride=1, padding=0): super().__init__() self.conv_layer = nn.Conv2d( in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding ) def forward(self, x): output = self.conv_layer(x) return output # 创建实例并测试前向传播过程 model = CNNModel(in_channels=3, out_channels=16, kernel_size=(5, 5), stride=2, padding=1) input_tensor = torch.randn((1, 3, 100, 100)) # 输入张量模拟RGB彩色图像 output_tensor = model(input_tensor) print(f"Input shape: {tuple(input_tensor.shape)[2:]}, Output shape after conv layer with stride={2} and padding={1}: " f"{tuple(output_tensor.shape)[2:]}") ``` 这段程序创建了一个小型的CNN模块,在初始化过程中指定了具体的in_channels(输入通道数),out_channels(输出通道数),以及kernel_size(内核大小)、stride(步长) padding(填充值) 参数。最后打印出了给定条件下输入与输出的空间维数变化情况[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值