当前位置: 首页 > news >正文

DAY48 随机函数与广播机制

@浙大疏锦行
知识点:

  1. 随机张量的生成:torch.randn函数
  2. 卷积和池化的计算公式(可以不掌握,会自动计算的)
  3. pytorch的广播机制:加法和乘法的广播机制
    ps:numpy运算也有类似的广播机制,基本一致

作业:自己多借助ai举几个例子帮助自己理解即可


1 随即张量的生成

通过随机函数实现需要的张量格式,无需像之前那样必须加载一张真实的图片

1.1 torch.randn函数

作用:创建一个由标准正态分布随机数填充的张量
参数torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

  • size:必选参数,表示输出张量的形状(如(3, 4)表示 3 行 4 列的矩阵)。
  • dtype:可选参数,指定张量的数据类型(如torch.float32、torch.int64等)。
  • device:可选参数,指定张量存储的设备(如’cpu’或’cuda’)。
  • requires_grad:可选参数,是否需要计算梯度(常用于训练模型时)。

1.2 其他随机函数

torch.rand():生成在[0,1)范围内均匀分布的随机数
torch.randint():生成指定范围内的随机整数
torch.normal():生成指定均值和标准差的正态分布随机数

查看张量大小:torch.shape

卷积尺寸
多分类问题通常使用Softmax,二分类问题用Sigmoid

2 广播机制

作用:一种强大的张量运算特性,允许在不同形状 的张量之间进行算术运算,而无需显式地扩展张量维度或复制数据

2.1 Pytorch广播机制

当对两个形状不同的张量进行运算时,PyTorch 会按以下规则自动处理维度兼容性:

  1. 从右向左比较维度:PyTorch 从张量的最后一个维度(最右侧)开始向前逐维比较。
  2. 维度扩展条件
    • 相等维度:若两个张量在某一维度上大小相同,则继续比较下一维度。
    • 一维扩展:若其中一个张量在某一维度上大小为 1,则该维度会被扩展为另一个张量对应维度的大小。
    • 不兼容错误:若某一维度大小既不相同也不为 1,则抛出 RuntimeError。-----维度必须满足广播规则,否则会报错。
  3. 维度补全规则:若一个张量的维度少于另一个,则在其左侧补 1 直至维度数匹配。

示例

2.2 加法广播机制

包含:二维张量与一维张量相加、三维张量与二维张量相加、二维张量与标量相加、高维张量与低维张量相加

关键总结

  1. 尺寸变化:广播后的形状由各维度的最大值决定(示例 2 中最终形状为 (2, 2, 2))。
  2. 值扩展:维度为 1 的张量通过复制扩展值(示例 1 中 b 从 [1, 2, 3] 扩展为三行相同的值)。
  3. 内存效率:扩展是逻辑上的,实际未复制数据,避免了内存浪费。

2.3 乘法广播机制

矩阵乘法除了遵循通用广播规则外,还需要满足矩阵乘法的维度约束
包含:批量矩阵与单个矩阵相乘、批量矩阵与批量矩阵相乘(部分广播)、三维张量与二维张量相乘(高维广播)

http://www.dtcms.com/a/339645.html

相关文章:

  • 补偿电流控制的APF并联型有源电力滤波器simulink
  • 2025年09月计算机二级MySQL选择题每日一练——第一期
  • 《深入源码理解webpack构建流程》
  • springboot 项目正常启动后自动结束
  • 当硅基生命遇见碳基萌宠:Deepoc具身智能如何重新定义“宠物监护者”
  • 【QT入门到晋级】进程间通信(IPC)-socket(包含性能优化案例)
  • UX 设计入门第二课:如何洞察人心?用户研究方法论导览
  • elementplus组件文本框设置前缀
  • 07复杂度分析实战习题集
  • PG靶机 - Pebbles
  • 无人机/航测/三维建模领域常见的“航线规划或建模方式
  • 基于单片机智能拐杖/导盲杖/老人防摔倒设计
  • python-林粒粒的视频笔记1
  • 网络数据包
  • 用relation-graph构建关系图谱 vue版
  • 单片 、物联网、51单片机、软硬件之基于STM32与蓝牙的仓储管控系统的设计与实现/基于物联网的仓库管理系统
  • 【实时Linux实战系列】基于实时Linux的物联网系统设计
  • AI硬件 - AMD显卡架构演进及产品线
  • 快速傅里叶变换:数字信号处理的基石算法
  • ubuntu24.04 用apt安装的mysql修改存储路径(文件夹、目录)
  • Linux 系统下安装 uv 并在 PyCharm 中使用指南
  • Z-Score归一化:原理、作用与实战解析
  • UGUI源码剖析(10):总结——基于源码分析的UGUI设计原则与性能优化策略
  • Spring框架-数据访问层和事务管理
  • 不止是耳机,运动与商务的结合!雷登A7开放式蓝牙耳机
  • Linux下的软件编程——IPC机制(信号和共享内存)
  • QT6(常用界面组件的使用和布局管理)
  • 芯片没有型号能解密程序么?
  • 多线程—飞机大战排行榜功能(2.0版本)
  • 量化交易 - 概念板块对应股票 python代码