CNN卷积和反卷积输出的计算方法

卷积:

复制代码
# 输入通道1,输出通道2,卷积核3x3,步长2,填充1
conv_layer = nn.Conv2d(in_channels=1, out_channels=2, kernel_size=3, stride=2, padding=1)

# 前向传播
x_conv = conv_layer(x)
print(f"卷积后形状: {x_conv.shape}")  # torch.Size([1, 2, 3, 3])

# 验证输出尺寸: (5 - 3 + 2*1)/2 + 1 = (4)/2 + 1 = 3 
print(f"卷积后的特征图 (第一个通道):\n{x_conv[0, 0, :, :]}\n")

反卷积:

复制代码
# 输入通道2(对应卷积的输出),输出通道1,卷积核3x3,步长2,填充1
deconv_layer = nn.ConvTranspose2d(in_channels=2, out_channels=1, kernel_size=3, stride=2, padding=1, output_padding=0)

# 前向传播
x_deconv = deconv_layer(x_conv)
print(f"反卷积后形状: {x_deconv.shape}")  # torch.Size([1, 1, 5, 5])

# 验证输出尺寸: (3 - 1)*2 - 2*1 + 3 + 0 = 4 - 2 + 3 = 5 
print(f"反卷积恢复后的特征图:\n{x_deconv[0, 0, :, :]}")

完整demo:

复制代码
import torch
import torch.nn as nn

torch.manual_seed(42)

# 1. 输入
x = torch.randn(1, 1, 5, 5)
print(f"输入: {x.shape}\n{x[0,0]}\n")

# 2. 卷积 (5x5 -> 3x3)
conv = nn.Conv2d(1, 2, kernel_size=3, stride=2, padding=1)
x_conv = conv(x)
print(f"卷积后: {x_conv.shape}\n{x_conv[0,0]}\n")

# 3. 反卷积 (3x3 -> 5x5)
deconv = nn.ConvTranspose2d(2, 1, kernel_size=3, stride=2, padding=1, output_padding=0)
x_deconv = deconv(x_conv)
print(f"反卷积后: {x_deconv.shape}\n{x_deconv[0,0]}")
相关推荐
起个名字费劲死了20 分钟前
VisionMaster集成深度学习算法(基础狗)
人工智能·深度学习·算法
RobinDevNotes1 小时前
JAX 分布式训练,和 PyTorch 有什么不一样
人工智能·深度学习·ajax
海天一色y2 小时前
图像分割全解析:从经典算法到深度学习的原理与实战(Python + MATLAB)
python·深度学习·算法
倔强的石头1062 小时前
【Transformer】GPT系列演进_从GPT1到GPT4的技术路线
gpt·深度学习·transformer
A7bert7772 小时前
【SAM3部署至AGX Orin】环境配置→模型部署→问题记录
c++·人工智能·深度学习·ubuntu
zx_741484813 小时前
【深度学习入门】基于TextRNN的微博情感分析(二):模型构建与训练
pytorch·深度学习·nlp·双向lstm·textrnn
kali-Myon3 小时前
定向 FGSM 攻击:让神经网络《指猫为狗》
图像处理·python·神经网络·安全·机器学习·fgsm
梦想的初衷~3 小时前
深度学习全栈技术复盘:PINN科学计算、Transformer多场景建模、GNN时空网络与强化学习工业实战
深度学习·transformer·扩散模型·遥感影像处理·图神经网络gnn·pytorch实战·pinn正反问题
pjj198543 小时前
NLP-情感分析项目(四):训练评估 + 主函数
人工智能·深度学习·机器学习
ai小陈4 小时前
GPU算力平台远程训练监控:TensorBoard与SSH隧道配置实战
运维·人工智能·深度学习·ai·ssh·gpu算力