您的位置:首页 > 财经 > 金融 > 直播软件哪个好看_做一个网页需要什么_2024年新闻摘抄_怎么自己做网址

直播软件哪个好看_做一个网页需要什么_2024年新闻摘抄_怎么自己做网址

2025/3/10 10:07:27 来源:https://blog.csdn.net/m0_73426548/article/details/145996227  浏览:    关键词:直播软件哪个好看_做一个网页需要什么_2024年新闻摘抄_怎么自己做网址
直播软件哪个好看_做一个网页需要什么_2024年新闻摘抄_怎么自己做网址

目录

一、Convolution

1.Conv2D

1. 什么是Conv2D?

2. Conv2D的关键参数

 2 ConvTranspose2d

二、线性变换层

1.Linear/Gemm

1 Gemm(通用矩阵乘法)的定义

2. Linear 层与 Gemm 的关系

3.使用PyTtoch的Linear层

4. 手动实现Gemm

 5.matmul

 三、Normalization归一化

1. 归一化的核心作用

2. 常见归一化方法对比

 3. 代码示例

1.BatchNorm

2.LayerNorm

 3.InstanceNorm

 4.GroupNorm


一、Convolution

对卷积还不清楚的可以看看我的大白话卷积

1.Conv2D

1. 什么是Conv2D?

  • 核心功能:从输入的二维特征图中提取局部特征(如边缘、纹理、物体部件)。
  • 数学定义:对输入的每个位置,通过 ​卷积核(滤波器)​​ 与局部区域进行点乘求和,生成输出特征图。
  • 典型应用:图像分类、目标检测、语义分割等计算机视觉任务。

 

2. Conv2D的关键参数

在深度学习框架(如PyTorch、TensorFlow)中,Conv2D层的参数如下:

参数作用
in_channels输入特征图的通道数(如RGB图像为3)。
out_channels输出特征图的通道数(即卷积核的数量)。
kernel_size卷积核的尺寸(如 3x35x5)。
stride卷积核滑动的步长(默认为1)。
padding输入边缘的填充值(如 01'same')。
dilation卷积核的膨胀系数(控制孔径,用于扩大感受野)。
groups分组卷积的组数(默认为1)。

 2 ConvTranspose2d

反卷积

  • 核心功能:将低维特征图(如 H×W)映射到高维空间(如 2H×2W),实现 ​特征上采样
  • 别称:转置卷积(Transpose Convolution)、逆卷积(Inverse Convolution)。
  • 数学本质:普通卷积的逆操作(但需注意傅里叶变换下的严格逆与实际工程实现的差异)。

 关键参数解析

参数作用
in_channels输入特征图的通道数。
out_channels输出特征图的通道数。
kernel_size反卷积核的尺寸(如 3x3)。
stride卷积核滑动的步长(决定上采样的倍数)。
padding输入边缘的填充值(通常设为 kernel_size // 2 以对称填充)。
dilation控制卷积核的膨胀系数(扩大感受野)。

二、线性变换层

1.Linear/Gemm

Linear就是用来实现神经网络的全连接层的,Gemm是通用的矩阵乘法的定义

1 Gemm(通用矩阵乘法)的定义

  • 数学形式:C=A×B+D
    • A: 矩阵A(形状为 [M, N])。
    • B: 矩阵B(形状为 [N, P])。
    • D: 偏移矩阵D(形状为 [M, P],通常为零矩阵)。
    • C: 输出矩阵C(形状为 [M, P])。

2. Linear 层与 Gemm 的关系

  • Linear 是 Gemm 的特例
    当 Linear 层的输入形状为 [N, C_in],权重矩阵为 [C_out, C_in],偏置为 [C_out, 1] 时,其计算可以分解为:Y=X×WT+B这与 Gemm 的形式完全一致(A=X, B=WT, D=B)。

 

3.使用PyTtoch的Linear层

import torch
import torch.nn as nn# 定义 Linear 层
linear = nn.Linear(in_features=3, out_features=64)# 输入数据(batch_size=2, in_features=3)
x = torch.randn(2, 3)# 前向传播
y = linear(x)
print(y.shape)  # 输出:torch.Size([2, 64])

4. 手动实现Gemm

# 权重矩阵 W(形状 [64, 3])
W = linear.weight.data
# 偏置向量 B(形状 [64, 1])
B = linear.bias.data# 将输入 X 转置为 [3, 2],以便与 W 相乘
X_transposed = x.t()# 计算 Y = X * W^T + B
Y = torch.matmul(X_transposed, W)  # 形状 [3, 64] → [2, 64]
Y = Y.t() + B  # 添加偏置并转置回 [2, 64]print(Y.shape)  # 输出:torch.Size([2, 64])

 5.matmul

pytorch中有三个相似的矩阵操作

  • matmul是通用的矩阵乘法函数,适用于不同维度的输入。
  • bmm是用于批量矩阵乘法的函数,要求输入为3维张量。
  • mm是用于两个二维矩阵乘法的函数,要求输入为2维张量。
import torch
tensor1 = torch.randn(10, 3, 4)
tensor2 = torch.randn(10, 4, 5)
torch.matmul(tensor1, tensor2).size()mat1 = torch.randn(2, 3)
mat2 = torch.randn(3, 3)
torch.mm(mat1, mat2)input = torch.randn(10, 3, 4)
mat2 = torch.randn(10, 4, 5)
res = torch.bmm(input, mat2)
res.size()

 三、Normalization归一化

1. 归一化的核心作用

  • 加速训练:通过标准化输入分布,减少内部协变量偏移(Internal Covariate Shift),让梯度更新更稳定。
  • 缓解梯度消失/爆炸:对小值放大、大值压缩,平衡梯度流动。
  • 提升模型泛化能力:轻微的数据扰动能提高模型的鲁棒性。

 

2. 常见归一化方法对比

方法输入形状计算方式适用场景优缺点
​**BatchNorm (BN)**​[N, C, H, W]对每个 batch 的通道维度统计均值和方差。CNN​(图像分类、目标检测)✅ 加速收敛
❌ 对小 batch 效果差(如医疗影像)
​**LayerNorm (LN)**​[N, C, H, W]对每个样本的全局维度(H×W×C)统计均值和方差。RNN​(序列任务)、Transformer✅ 消除 batch 依赖
❌ 计算量大(需对每个样本单独处理)
​**InstanceNorm (IN)**​[N, C, H, W]对每个实例(单个像素/区域)统计均值和方差。GANs​(图像生成)、风格迁移✅ 保持局部特征一致性
❌ 不适合小尺寸输入
​**GroupNorm (GN)**​[N, C, H, W]将通道分成多个组,每组独立归一化。ResNet、轻量级模型✅ 兼顾 BN 和 LN 的优点
❌ 组数需合理选择(通常 G=32 或输入通道数的约数)

 3. 代码示例

1.BatchNorm
import torch.nn as nn# 定义 BN 层(通道维归一化)
bn_layer = nn.BatchNorm2d(num_features=64)# 输入:batch=2, channels=64, size=5x5
input = torch.randn(2, 64, 5, 5)# 前向传播
output = bn_layer(input)
print(output.shape)  # 输出:torch.Size([2, 64, 5, 5])
2.LayerNorm
import torch.nn as nn# 定义 LN 层(对整个张量归一化)
ln_layer = nn.LayerNorm(normalize_dims=[1, 2])  # 归一化 H 和 W 维度# 输入:batch=2, channels=3, size=2x2
input = torch.randn(2, 3, 2, 2)# 前向传播
output = ln_layer(input)
print(output.shape)  # 输出:torch.Size([2, 3, 2, 2])
 3.InstanceNorm
import torch.nn as nn# 定义 IN 层(对每个实例单独归一化)
in_layer = nn.InstanceNorm2d(num_features=3)# 输入:batch=1, channels=3, size=5x5
input = torch.randn(1, 3, 5, 5)# 前向传播
output = in_layer(input)
print(output.shape)  # 输出:torch.Size([1, 3, 5, 5])
 4.GroupNorm
import torch.nn as nn# 定义 GN 层(组数 G=3,每组 2 通道)
gn_layer = nn.GroupNorm(num_groups=3, num_channels=6)# 输入:batch=1, channels=6, size=3x3
input = torch.randn(1, 6, 3, 3)# 前向传播
output = gn_layer(input)
print(output.shape)  # 输出:torch.Size([1, 6, 3, 3])

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com