动手学深度学习(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])
相关推荐
郝学胜-神的一滴5 小时前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
jr-create(•̀⌄•́)5 小时前
从零开始:手动实现神经网络识别手写数字(完整代码讲解)
人工智能·深度学习·神经网络
数智工坊6 小时前
Transformer 全套逻辑:公式推导 + 原理解剖 + 逐行精读 - 划时代封神之作!
人工智能·深度学习·transformer
xingyuzhisuan9 小时前
租用GPU服务器进行深度学习课程教学的实验环境搭建
运维·人工智能·深度学习·gpu算力
yu85939589 小时前
神经网络遗传算法函数极值寻优(非线性函数极值)
人工智能·深度学习·神经网络
乔江seven9 小时前
【李沐 | 动手学深度学习】12 使用块的网络VGG
人工智能·深度学习·卷积神经网络·vgg网络
jr-create(•̀⌄•́)11 小时前
正则化和优化算法区别
pytorch·深度学习·神经网络·算法
kishu_iOS&AI12 小时前
深度学习 —— 神经网络(1)
人工智能·深度学习·神经网络
纤纡.14 小时前
轻松实现多语言文字识别与实时检测:PaddleOCR 实战指南
人工智能·深度学习·opencv·paddlepaddle
【建模先锋】15 小时前
精品数据分享 | 锂电池数据集(10)基于阻抗的锂离子电池在不均衡使用情况下的性能预测
人工智能·python·深度学习·锂电池·锂电池寿命预测·锂电池数据集·剩余寿命预测