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

python打卡第48天

知识点回顾:

  1. 随机张量的生成:torch.randn函数
  2. 卷积和池化的计算公式(可以不掌握,会自动计算的)
  3. pytorch的广播机制:加法和乘法的广播机制

ps:numpy运算也有类似的广播机制,基本一致

  • **torch.randn**:快速生成随机张量,适用于初始化和数据增强。
  • 卷积与池化:通过滑动窗口提取局部特征,公式决定输出尺寸。
  • 广播机制:自动扩展维度,简化代码逻辑,提升计算效率。

    1. ​随机张量的生成:torch.randn 函数

    torch.randn 是 PyTorch 中用于生成服从标准正态分布(均值为 0,标准差为 1)的随机数的函数。其核心参数是张量的形状(*size),其他参数如数据类型、设备(CPU/GPU)等为可选配置。

    关键特性:
  • 形状参数:通过 *size 指定张量维度,例如 torch.randn(3, 4) 生成一个 3x4 的张量。
  • 可选参数
    • dtype:数据类型(默认 float32)。
    • device:指定设备(如 cuda:0 表示 GPU)。
    • requires_grad:是否跟踪梯度(默认 False)。
  • 应用场景:初始化神经网络权重、生成随机噪声等。
  • import torch# 生成 2x3 的标准正态分布张量
    tensor = torch.randn(2, 3)
    print(tensor)# 生成均值为 2、标准差为 0.5 的正态分布张量
    custom_tensor = torch.randn(2, 2, mean=2, std=0.5)
    print(custom_tensor)

    2. ​卷积和池化的计算公式

    卷积和池化是深度学习中常用的特征提取操作,其核心是滑动窗口内的数学运算。

    卷积计算公式​(以一维为例):

    离散卷积公式:
    (f∗g)(n)=∑if(i)⋅g(n−i)(f * g)(n) = \sum_{i} f(i) \cdot g(n-i)(f∗g)(n)=∑i​f(i)⋅g(n−i)

  • 输入信号:长度为 MMM 的序列 xxx。
  • 卷积核:长度为 NNN 的滤波器 hhh。
  • 输出长度:M+N−1M + N - 1M+N−1(无填充且步长为 1)。
  • PyTorch 中的卷积参数

  • kernel_size:卷积核大小。
  • stride:滑动步长。
  • padding:填充大小。
  • dilation:卷积核元素间距。
  • 池化计算公式

    池化操作通过降维减少计算量,常用最大池化(Max Pooling)和平均池化(Average Pooling)。

  • 输出尺寸
    Oheight=⌊Hin+2P−KS+1⌋O_{height} = \left\lfloor \frac{H_{in} + 2P - K}{S} + 1 \right\rfloorOheight​=⌊SHin​+2P−K​+1⌋
    Owidth=⌊Win+2P−KS+1⌋O_{width} = \left\lfloor \frac{W_{in} + 2P - K}{S} + 1 \right\rfloorOwidth​=⌊SWin​+2P−K​+1⌋
    • Hin/WinH_{in}/W_{in}Hin​/Win​:输入高度/宽度。
    • K:池化核大小。
    • S:步长。
    • P:填充大小。
  • 示例:

    输入特征图尺寸为 28×2828 \times 2828×28,使用 2×22 \times 22×2 的最大池化(步长 2,无填充),输出尺寸为 14×1414 \times 1414×14。

  • 3. ​PyTorch 的广播机制

    广播机制允许不同形状的张量进行逐元素运算(如加法、乘法),无需显式扩展内存。

    广播规则
  • 维度对齐:从右向左逐一对齐维度,若维度大小相等或其中一个为 1,则兼容。
  • 扩展维度:若张量缺少某维度,则在左侧补 1。
  • 扩展大小为 1 的维度:将大小为 1 的维度扩展为另一张量的对应维度大小。
  • a = torch.tensor([[1, 2, 3], [4, 5, 6]])  # 形状 (2, 3)
    b = torch.tensor([10, 20, 30])            # 形状 (3,)# 广播后 b 的形状变为 (2, 3)
    result = a + b
    print(result)
    # 输出:
    # tensor([[11, 22, 33],
    #         [14, 25, 36]])

http://www.xdnf.cn/news/13050.html

相关文章:

  • linux库(AI回答)
  • SpringBoot的5种日志输出规范策略
  • 深入理解 x86 汇编中的符号扩展指令:从 CBW 到 CDQ 的全解析
  • 《光子技术成像技术》第三章 预习2025.6.8
  • 代码审计 BlueCms SQL注入
  • Linux 文件系统底层原理笔记:磁盘结构、ext2 文件系统与软硬链接解析
  • 基于Python学习《Head First设计模式》第九章 迭代器和组合模式
  • Spring Cloud 微服务架构实战指南 -- SpringCLoud概述
  • [深度学习]搭建开发平台及Tensor基础
  • 第23讲、Odoo18 二开常见陷阱
  • SQL导出Excel支持正则脱敏
  • AtCoder AT_abc409_c [ABC409C] Equilateral Triangle
  • Agent短期记忆的几种持久化存储方式
  • 时间序列预测的机器学习方法:从基础到实战
  • HTML前端开发:JavaScript 获取元素方法详解
  • 5. TypeScript 类型缩小
  • 【JVM】Java虚拟机(三)——类加载与类加载器
  • synchronized 关键字​​ 和 ​​Lock 接口(ReentrantLock)​​ 的详细说明及示例,涵盖核心概念、使用场景、代码实现及两者对比
  • 【Elasticsearch】映射:fielddata 详解
  • 【C++特殊工具与技术】优化内存分配(三):operator new函数和opertor delete函数
  • Linux多线程---线程池实现
  • STM32CubeMX-H7-20-ESP8266通信(下)-双单片机各控制一个ESP8266实现通信
  • LLMs 系列科普文(13)
  • 【Java实战】反射操作百倍性能优化
  • MyBatis原理剖析(一)
  • 人工智能学习08-类与对象
  • Python BeautifulSoup解析HTML获取图片URL并下载到本地
  • word中表格线粗细调整
  • 基于单片机的病房呼叫系统(源码+仿真)
  • Linux知识回顾总结----进程状态