You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch 1.8.1中空洞卷积Same Padding实现异常问题咨询

问题分析与解决方案

你的计算逻辑是正确的:当stride=1时,要实现空洞卷积的Same Padding,padding确实需要设置为dilation*(kernel_size-1)//2(对应你的参数就是(35,35)),代入PyTorch 1.8.1的输出尺寸公式也能得到输入输出尺寸一致的结果。

但你实际得到的输出尺寸(681,569),正好对应dilation=1时的计算结果:

Hout = ⌊(625 + 2×35 −1×(15−1) −1)/1 +1⌋ = 625+70-14-1+1=681
Wout = ⌊(513 + 2×35 −1×(15−1) −1)/1 +1⌋ =513+70-14-1+1=569

这说明你在定义torch.nn.Conv2d层时,很可能没有正确传入dilation=5参数,而是使用了默认值dilation=1。

正确的卷积层定义示例

确保dilation参数明确设置为5:

import torch

conv_layer = torch.nn.Conv2d(
    in_channels=1,
    out_channels=64,
    kernel_size=(15, 15),
    stride=(1, 1),
    dilation=5,  # 关键:必须显式设置为5,不要漏写
    padding=(35, 35)
)

# 验证输入输出尺寸
input_tensor = torch.randn(1, 1, 625, 513)
output_tensor = conv_layer(input_tensor)
print(output_tensor.shape)  # 应为 torch.Size([1, 64, 625, 513])

其他排查方向

如果确认dilation参数设置正确,检查以下几点:

  • 代码中是否有后续逻辑修改了卷积层的padding或dilation属性
  • 计算padding时是否用错了kernel_size的值(比如误写为(16,16))
  • 是否在创建张量时混淆了高度和宽度维度(不过你的输入输出维度变化比例一致,这种可能性较低)

内容的提问来源于stack exchange,提问作者Soheila Hesaraki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:18:31