动手学深度学习(Pytorch版)代码实践 -卷积神经网络-20填充与步幅

20填充与步幅

python 复制代码
import torch
from torch import nn

# 此函数初始化卷积层权重,并对输入和输出提高和缩减相应的维数
def comp_conv2d(conv2d, X):
    # 这里的(1,1)表示批量大小和通道数都是1
    #将输入张量 X 的形状调整为 (1, 1, height, width)
    X = X.reshape((1,1) + X.shape)
    Y = conv2d(X) #张量X为 8 * 8,经过conv2d,填充为1,变为10 * 10
    #卷积核为3 * 3, 得到Y为 8 * 8
    return Y.reshape(Y.shape[2:])
    #将输出张量 Y 的形状从 (1, 1, new_height, new_width) 
    #变换为 (new_height, new_width),去掉批量大小和通道数的维度。

# 请注意,这里每边都填充了1行或1列,因此总共添加了2行或2列
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1)
X = torch.rand(size=(8, 8))
print(comp_conv2d(conv2d, X).shape)
# torch.Size([8, 8])

# 步幅
# 高度和宽度的步幅设置为2,从而将输入的高度和宽度减半
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1, stride=2)
print(comp_conv2d(conv2d, X).shape)
# torch.Size([4, 4])

conv2d = nn.Conv2d(1, 1, kernel_size=(3, 5), padding=(0, 1), stride=(3, 4))
print(comp_conv2d(conv2d, X).shape)
# torch.Size([2, 2])
相关推荐
小饼干超人3 分钟前
pytorch返回张量元素总数量的方法 x.numel()
人工智能·pytorch·python
Dfreedom.7 分钟前
详解四大格式(PIL/OpenCV/NumPy/PyTorch)的转换原理与场景选择
图像处理·人工智能·pytorch·opencv·numpy·pillow
有Li7 分钟前
3D CT图像的MedLSAM:定位并分割任何模型/文献速递-基于人工智能的医学影像技术
人工智能·深度学习·计算机视觉
咚咚王者32 分钟前
人工智能之核心技术 深度学习 第九章 框架实操(PyTorch / TensorFlow)
人工智能·pytorch·深度学习
AI人工智能+35 分钟前
联机手写签名识别技术通过采集书写时的压力、速度、轨迹等动态特征,构建独特的“行为指纹“
深度学习·联机手写签名识别·手写签名识别
大模型最新论文速读37 分钟前
NCoTS:搜索最优推理路径,改进大模型推理效果
人工智能·深度学习·机器学习·语言模型·自然语言处理
偷吃的耗子40 分钟前
【CNN算法理解】:MNIST手写数字识别训练过程
算法·机器学习·cnn
盼小辉丶1 小时前
Transformer实战(35)——跨语言相似性任务
深度学习·自然语言处理·transformer
JOYCE_Leo161 小时前
MPRNet: Multi-Stage Progressive Image Restoration-CVPR2021
深度学习·图像复原·all in one
阿杰学AI1 小时前
AI核心知识84——大语言模型之 AI Constitution(简洁且通俗易懂版)
人工智能·深度学习·语言模型·自然语言处理·ai伦理·ai宪法·ai constitution