pytorch张量分块投影示例代码

embedded/2025/1/15 12:28:35/

张量的投影操作

背景

张量投影 是深度学习中常见的操作,将输入张量通过线性变换映射到另一个空间。例如:
Y=W⋅X+b
其中:

  • X: 输入张量(形状可能为 (B,M,K),即批量维度、序列维度、特征维度)。
  • W: 权重矩阵((K,N),将 K 维投影到 N 维)。
  • b: 偏置向量(可选,(N,))。
  • Y: 输出张量(形状 (B,M,N))。

对于巨大张量 XX,直接计算 W⋅XW⋅X 可能会因为显存不足导致 OOM(Out of Memory)。因此,分块操作是一种有效的解决方案。


分块投影的操作方法

原理

将输入张量 X 沿着某个维度(通常是 序列维度 M 或 批量维度 B)分成多个小块,分别进行线性变换,再将结果拼接起来。

具体步骤
  1. 定义分块大小

    • 根据显存限制和硬件特性,确定每次可以处理的块大小(chunk_size)。
  2. 迭代计算

    • 将输入张量 X 按 序列维度 M(或其他维度)进行切片。
    • 对每个切片分别进行线性投影操作。
    • 将每次的结果存储起来,最后拼接成完整输出。

分块投影计算函数代码:

import torchdef block_projection(X, W, b=None, chunk_size=64):"""Perform block-wise tensor projection.Args:X: Input tensor of shape (B, M, K)W: Weight matrix of shape (K, N)b: Bias vector of shape (N,) or Nonechunk_size: Size of each block along the M dimensionReturns:Y: Output tensor of shape (B, M, N)"""B, M, K = X.shape

http://www.ppmy.cn/embedded/154096.html

相关文章

SimpleFOC |SimpleFOC学习笔记汇总

在机器人领域,掌握无刷电机的控制相当于掌握机器人设计的“半壁江山”。这个年代,对个人来说学习一种新技术最好是通过开源项目了。通过开源项目快速将项目搭建起来,接着结合实践与理论才能真正掌握技术。 入门FOC,我认为最合适是…

开始使用Panuon开源界面库环境配置并手写VS2019高仿界面

1. Panuon环境配置 1.1. 通过Nuget 安装 Panuon.WPF.UI1.2. xaml引用命名空间1.3. using Panuon.WPF.UI; 2. VS2019 view 2.1. 设置窗体尺寸和title2.2. 添加静态资源 2.2.1. 什么是静态资源 2.3. 主Grid 2.3.1. 盒子模型2.3.2. 嵌套布局 3. 总结 1. Panuon环境配置 1.1. 通…

rclone,云存储备份和迁移的瑞士军刀,千字常文解析,附下载链接和安装操作步骤...

一、什么是rclone? rclone是一个命令行程序,全称:rsync for cloud storage。是用于将文件和目录同步到云存储提供商的工具。因其支持多种云存储服务的备份,如Google Drive、Amazon S3、Dropbox、Backblaze B2、One Drive、Swift、…

【python爬虫入门教程13--selenium的自动点击 --小小案例分享】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 《python爬虫入门教程12--selenium的安装与使用》 selenium就是一个可以实现python自动化的模块,上次我们更新了如何安装以及它的语法。同时我也更新了如何用爬虫…

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…

WORD转PDF脚本文件

1、在桌面新建一个文本文件,把下列代码复制到文本文件中。 On Error Resume Next Const wdExportFormatPDF 17 Set oWord WScript.CreateObject("Word.Application") Set fso WScript.CreateObject("Scripting.Filesystemobject") Set fdsf…

【基础工程搭建】数据地址访问对齐问题分析

前言 汽车电子嵌入式开始更新全新的AUTOSAR项目实战专栏内容,从0到1搭建一个AUTOSAR工程,内容会覆盖AUTOSAR通信协议栈、存储协议栈、诊断协议栈、MCAL、系统服务、标定、Bootloader、复杂驱动、功能安全等所有常见功能和模块,全网同步更新开发设计文档(后期也会更新视频内…

[c语言日寄]递归进阶:深度

哈喽大家好啊,经历了残忍的期末周之后,鼠鼠我啊~ 又复活了呢~ 在阔别许久之后的第一次快乐刷题中,我遇到了这样的一道题: 题目 题目初探 如题,这个其实一个简单的for循环就能搞定的题目,结果要求用递归&a…