批量化处理和矩阵(torch)

左边是权重,右边是变量 

高维可以看成二维的堆叠

总结:二维是一维的堆叠,三维是二维的堆叠。但似乎是为了引入矩阵,本来应该是左上角是第一组权重和第一组变量的乘积这种表示表示来着,最后成了和列向量乘积(即矩阵乘法必须第一个的列和第二个的行数相等,右矩阵需要转置一下),但更高维度又变了回来,所以之后更高维的维数必须一一对应。

如:(3,5,6,4)的矩阵只可以和(3,5,4,6)的矩阵相乘,每个二维矩阵一一相乘

得到(3,5,6,6)的矩阵。

这应该是为了引入矩阵计算,之后变回来是为了批量化计算

例子:

一个(6x4)的矩阵,每一行是一组权重,有6组权重

和一个(4x3)的矩阵相乘,每一列是一个一维张量,有4列张量

把6看成是批量化处理6次,再具体一点

[1,2,3,4]x[[123],123],[123],[123]]

=【123】+【246】+【369】+【4812】

一个(6x4)的矩阵和一个3x4x3的矩阵相乘

6看成批量化处理

[1,2,3,4]x[[123],123],[123],[123]](有三组),会先把[1,2,3,4]广播三遍

现在换成3x6x4的矩阵和3x4x3的矩阵,此时就是对应矩阵相乘了,得到3x6x3的矩阵

同理更高维度也一样。

 下面是我的一些推导。。。🙂🙂

一维张量和一维张量相乘,相当于权重和变量相乘,结果是一个数

数加数,0维可以直接相加,所以最后是一个0维张量

res=torch.matmul(torch.tensor([1, 2]),torch.tensor([1, 2]))
#tensor(5)  0维

二维张量和一维张量相乘,相当于多组权重和变量相乘,结果是一个一维张量。扩维

res=torch.matmul(torch.tensor([[3, 4], [1, 2]]),torch.tensor([1, 2]))
# tensor([11,  5])    torch.Size([2])

如5就是[1,2]和[1,2]对应元素相乘后相加得到的。因为俩个结果是0维,可以相加,

所以最后输出5

二维张量和二维张量相乘,相当于多组权重和多组变量相乘,结果是一个二维张量

向量+向量 ,不可以直接相加,最后是一个二维张量

 如[3,6]就是[1,2]和[[1,1],[2,2]]矩阵乘法后相加得到的

这就是矩阵乘法伢,对应元素相乘相加。

res=torch.matmul(torch.tensor([[3, 4], [1, 2]]),torch.tensor([[1, 2], [1, 2]]))
#tensor([[ 7, 14],         torch.Size([2, 2])
        [ 3,  6]])

最开始我以为应该是下面这样:

左上角是第一组权重和第一组变量的乘积

右上角是最后一组权重和第一组变量的乘积

左下角是第一组权重和最后一组变量的乘积

右下角是最后一组权重和最后一组变量的乘积

但结果表明这就是纯正的矩阵乘法,

或者也可以这么理解吧,右边一维向量时是按列来排序的,上面是简写了

res=torch.matmul(torch.tensor([3, 4]),torch.tensor([[1],[2]]))
res1=torch.matmul(torch.tensor([3, 4]),torch.tensor([1,2]))

#tensor([11])
tensor(11)

似乎确实是这样,只不过最后的结果一个是一维张量,一个是零维张量 

 一维张量和二维张量相乘

res=torch.matmul(torch.tensor([3, 4]),torch.tensor([[1, 2],[1, 2]]))
tensor([ 7, 14])
torch.Size([2])

发现确实是左侧行向量,右侧列向量。这就是简单的矩阵运算

三维张量以及更高维度的张量看成二维张量的堆叠。 

三维张量和二维张量相乘,相当于多批次(每一批次多组)的二维矩阵相乘,结果是一个三维张量

res=torch.matmul(torch.tensor([[[1, 2], [3, 4]],[[1, 2], [3, 4]]])
                        ,torch.tensor([[1, 2], [1, 2]]))
tensor([[[ 3,  6],
         [ 7, 14]],

        [[ 3,  6],
         [ 7, 14]]])
torch.Size([2, 2, 2])

二维张量和三维张量相乘,自动把二维张量扩充到对应维度的三维张量

如[3377]也就是[1234]和矩阵[1111]矩阵乘法后相加得到的


res=torch.matmul(torch.tensor([[1, 2], [3, 4]]),
        torch.tensor([[[1, 2], [1, 2]],[[1, 1], [1, 1]]]))
tensor([[[ 3,  6],
         [ 7, 14]],

        [[ 3,  3],
         [ 7,  7]]])
torch.Size([2, 2, 2])

三维张量和三维张量相乘

res=torch.matmul(torch.tensor([[[1, 2], [3, 4]],[[1, 2], [3, 4]]]),
    torch.tensor([[[1, 2], [1, 2]],[[1, 1], [1, 1]]]))

tensor([[[ 3,  6],
         [ 7, 14]],

        [[ 3,  3],
         [ 7,  7]]])
torch.Size([2, 2, 2])

矩阵加矩阵,最后是一个三维张量        

四维时:

shape=[2,1,4,5],b:shape=[1,1,5,4]相乘,输出的结果中,前两维保留的是[2,1],最终结果shape=[2,1,4,4]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/642068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# GDI+ 绘制文字不同的操作系统渲染文字大小不同

一、C# GDI 绘制文字不同的操作系统渲染文字大小不同 原因:使用Font 字体的时候,没有指定字体渲染的单位。 不同系统的默认字体单位会不同。 二、解决方案: 在指定字体的时候,指定字体大小,同时也要设置字体的单位 …

私域流量的真谛:构建并运营属于你自己的私域生态

大家好,我是来自一家专注于私域电商行业的软件开发公司的产品经理,拥有超过七年的行业经验。今天,我想和大家聊聊私域流量的真正含义,以及为何我们应该关注并努力打造属于自己的私域生态。 什么是私域流量? 私域流量&…

【机器学习】【深度学习】正则化(Regularization)

概念 正则化(Regularization)是在机器学习模型中避免过拟合的一种技术。它通过引入一个惩罚项(即正则项)来限制模型的复杂度,以此来提防模型过度依赖训练数据,捕获数据中的噪音信息而导致过拟合现象。简单…

10.3.k8s的附加组件-图形化管理工具dashboard

目录 一、dashboard介绍 二、部署安装dashboard组件 1.下载dashboard本地文件 2.修改nodeport的端口范围 3.创建和查看dashboard 4.电脑浏览器访问测试 5.token登录方式登录dashboard 5.1.查看dashboard的token 5.2.继续查看用户token的secrets资源详细信息 5.3.复制…

【Apache Doris】周FAQ集锦:第 4 期

【Apache Doris】周FAQ集锦:第 4 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

clangd failed: Couldn‘t build compiler instance问题解决!!!

如果其他人的博客不能解决问题,可以试试我的解决方案: 修改compile_commands.json中cc为arm-linux-gnueabihf-gcc, 例如: 之后,clangd就能用了,虽然输出也会报错,但好歹能用了

ICML 2024 时空数据(Spatial-Temporal)论文总结

2024ICML(International Conference on Machine Learning,国际机器学习会议)在2024年7月21日-27日在奥地利维也纳举行 (好像ICLR24现在正在维也纳开)。 本文总结了ICML 24有关时空数据(Spatial-temporal) 的相关论文…

docxtemplater避坑!!! 前端导出word怎么插入本地图片或base64 有完整示例

用docxtemplater库实现前端通过模板导出word,遇到需求,要插图片并转成word并导出,在图片转换这块遇到了问题,网上查示例大多都跑不通,自己琢磨半天,总算搞明白了。 附上清晰完整示例,供参考。 …

【云原生】Kubernetes----POD基本管理

目录 引言 一、Pod基础概念 (一)Pod简介 (二)Pod的分类 1.自主式Pod 2.控制器管理的Pod (三)Pod使用方式 1.单容器pod 2.多容器Pod 3. 注意事项 二、Pod容器的分类 (一)…

C++之第八课

课程列表 今天我们来学一学C里的一些实用的东西。 1.域宽 说到域宽setw&#xff0c;就叒要加头文件了。 #include<iomanip> 使用格式是&#xff1a; cout<<setw(5)<<"123"; setw括号里面可以改数字&#xff0c;后面就是输出内容了&#xff…

Python高级进阶--dict字典

dict字典⭐⭐ 1. 字典简介 dictionary&#xff08;字典&#xff09; 是 除列表以外 Python 之中 最灵活 的数据类型&#xff0c;类型为dict 字典同样可以用来存储多个数据字典使用键值对存储数据 2. 字典的定义 字典用{}定义键值对之间使用,分隔键和值之间使用:分隔 d {中…

java 子类继承父类

为什么需要继承 我现在要有两个类一个 一个是小学生&#xff0c;一个是大学生 代码 小学生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…

【测试SQLite】测试SQLite支持的SQL语句分类

测试SQLite支持的SQL语句分类 为了全面测试SQLite支持的SQL语句&#xff0c;需要设计一个包含多种类型的表结构&#xff0c;并编写各种SQL语句来测试这些功能。目前按照以下分类进行测试&#xff1a; 数据定义语言&#xff08;DDL&#xff09;数据操作语言&#xff08;DML&am…

重学java 44.多线程 Lock锁的使用

昨日之深渊&#xff0c;今日之浅谈 —— 24.5.25 一、Lock对象的介绍和基本使用 1.概述 Lock是一个接口 2.实现类 ReentrantLock 3.方法 lock()获取锁 unlock()释放锁 4.Lock锁的使用 package S78Lock;import java.util.concurrent.locks.Lock; import java.util.concurrent.lo…

Slash后台管理系统源码阅读笔记 实现环形图统计卡片

目前在梳理工作台相关的代码。 工作台的界面如下&#xff1a; 这里面的Banner的代码已经基本梳理完毕&#xff0c;整体代码如下&#xff1a; import { Col, Row } from antd; import Color from color;import Character3 from /assets/images/characters/character_3.png; i…

JVM1.8分代的理论基础和简单测试

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

一文了解安卓内存抖动

目录 目录一、什么是内存抖动&#xff1f;1.1 Android里的内存抖动1.2 如何直观查看这种现象1.3 内存抖动带来的风险 二、如何避免内存抖动 目录 一、什么是内存抖动&#xff1f; 在程序里&#xff0c;每创建一个对象&#xff0c;就会有一块内存分配给它&#xff0c;每分配一…

用Python Pygame做的一些好玩的小游戏

有些游戏的代码比较长就不公布了 1.简简单单 1.疯狂的鸡哥 你要准备的图片&#xff1a; 命名为&#xff1a;ji.png 代码&#xff1a; import pygame import random as r pygame.init() pygame.display.set_caption(aaa) pm pygame.display.set_mode((800,600))class Ls(py…

langchain实战-从0到1搭建ai聊天机器人

介绍 当前&#xff0c;人工智能大模型公司如雨后春笋般迅速涌现&#xff0c;例如 OpenAI、文心一言、通义千问等&#xff0c;它们提供了成熟的 API 调用服务。然而&#xff0c;随之而来的是不同公司的繁琐协议接入过程&#xff0c;这让许多开发者感到头疼不已。有没有一种统一…

MySQL索引、视图练习

素材 1.学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 2.课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 3.学生选课表&#xff1a;SC (Sno…