pytorch学习笔记(9)

# 多输入多输出通道

def corr2d_multi_in_out(X, K):  # X 是一个包含多个输入通道的输入张量(输入特征图的集合)。K 是一个包含多个输出通道的卷积核的张量(卷积核的集合)。
    # 迭代“K”的第0个维度,每次都对输入“X”执行互相关运算。
    # 最后将所有结果都叠加在一起
    return torch.stack([corr2d_multi_in(X, k) for k in K], 0)  # corr2d_multi_in(X, k) 函数,执行多通道输入的互相关运算。最后,torch.stack(..., 0) 将所有通道的互相关运算结果在新的维度0上叠加在一起,得到最终的输出结果。
K = torch.stack((K, K + 1, K + 2), 0)
/*最后输出的K为tensor([[[[0., 1.],
          [2., 3.]],

         [[1., 2.],
          [3., 4.]]],


        [[[1., 2.],
          [3., 4.]],

         [[2., 3.],
          [4., 5.]]],


        [[[2., 3.],
          [4., 5.]],

         [[3., 4.],
          [5., 6.]]]])
*/

# 池化层

import torch
from torch import nn
from d2l import torch as d2l

def pool2d(X, pool_size, mode='max'):  # X 是输入的二维张量,表示需要进行池化操作的输入数据。pool_size 是一个包含两个元素的元组,表示池化窗口的大小,即在高度和宽度方向上的窗口尺寸。mode 是池化的模式,可以是 'max'(最大池化)或 'avg'(平均池化),默认为最大池化模式。
    p_h, p_w = pool_size  # 将池化窗口的高度和宽度分别赋值给 p_h 和 p_w 变量。
    Y = torch.zeros((X.shape[0] - p_h + 1, X.shape[1] - p_w + 1))  # 这行代码创建一个用于存储池化结果的零张量 Y,其形状根据输入 X 和池化窗口的大小计算而来。
    for i in range(Y.shape[0]):   # 接下来的两个嵌套循环遍历 Y 的每个元素,以计算池化后的值
        for j in range(Y.shape[1]):
            if mode == 'max':
                Y[i, j] = X[i: i + p_h, j: j + p_w].max()
            elif mode == 'avg':
                Y[i, j] = X[i: i + p_h, j: j + p_w].mean()
    return Y

当有多个输入通道时,经过池化层也会有多个输出结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值