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

【研究生随笔】Pytorch中的线性代数

  • 在许多科研项目中,都会涉及到大量的数学公式的转换和计算,包括求导、微积分等。在pytorch中的autograd可以自动计算微分。
  • 创建矩阵或者向量时,若元素值都一样的话,可以使用torch.zeros( , , )来实现(案例为全零)。
  • Torch.exp(X):表示eX 其中X貌似为tensor类型(张量)。
  • Torch.cat(X,Y,dim)表示将两个张量按一定规则进行连接:
X = torch.arange(12, dtype=torch.float32).reshape((3, 4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)

其中,dim = 0为Y轴连接,dim = 1为X轴连接。

  • 假设,A = tensor([[0], [1], [2]]) B = tensor([[0 ,1]])
    在张量计算过程中,A和B虽然shape不同,但也是可以相加的,他们会按照彼此所希望的样子各自对自己做出改变,一起组合成更加强大的“我们”。如下:
    A会变成A = tensor([[0,0], [1,1], [2,2]]),B会变成B = tensor([[0 ,1], [0 ,1], [0 ,1]])
    从而两者组合为A + B = tensor([[0, 1], [1, 2], [2, 3]])

###############################################################################

标题对元素的索引或其他操作与数组类似

  • 矩阵或向量的转置:A.T即可(注意对称阵等特殊矩阵)
  • 图像以n维数组形式出现,其中3个轴对应于⾼度、宽度,以及⼀个通道(channel)轴,⽤于堆叠颜⾊通道(红⾊、绿⾊和蓝⾊)。

标题张量的降维

在数学中,要对矩阵中的元素进行求和,需要使用到∑,代码里可以直接用求和函数sum():

X = torch. Tensor([[1,2,3],[1,2,3]])
Xsum = X.sum()

调用求和函数其实是对张量进行降维成一个一维标量来进行求和,还可以在sum()中添加函数来指定需要按哪个轴来进行降维(axis = 0为Y轴,axis = 1为X轴)。
是不是可以用来计算各行或者各列上的总和呢?
当添加参数后,sum(axis = 0)所输出的便不再是一个总和值,而是一个降维后的标量。
是不是不太好理解,就比方说:A = [[1,2,3], [1,2,3]]:
当对A.sum(axis = 1)时,其输出变为[[6],[6]];而当对A.sum(axis = 0)时,其输出变为[[2,4,6]]。
还可以这样:A.sum(axis = [0,1]) ---------- 意思是沿着行和列对矩阵元素进行求和,最后得出的效果与A.sum()相同(就是普通求和)
如果不想进行降维求和,那就可以使用cumsum()函数,具体如下:

import torch as torch
A torch.tensor(
[1,2,3],
[1,2,3],
[1,2,3]]
print("original A is ",[A})
print("chuange to e is:",[A.sum(axis 0)})
print("chuange to 1 is:"[A.sum(axis 1)))
print("cumsum e is:",[A.cumsum(axis e)))
print("cumsum 1 is:",{A.cumsum(axis 1)})

输出如下:

original A is {tensor([[1,2,3],
[1,2,3],
[1,2,3])}
chuange to e is:{tensor([3,6,9])}
chuange to 1 is:{tensor([6,6,6])}
cumsum e is:{tensor([[1,2,3],
[2,4,6],
[3,6,9]])}
cumsum
1is:{tensor([1,3,6],
[1,3,6]
[1,3,6]])

计算元素的平均值也有函数可以调用:A.mean() 其效果同:A.sum() / A.numel()。该函数跟sum()一样,可以加参数实现不同轴的降维。也就是说,可以通过axis参数的控制,实现对各行各列的平均值计算。

  • 点积(A的转置乘以B)torch.dot(A,B),按照点积的定义,也可以使用这个来实现:sum(A * B)(先相乘后求和),其中A * B又叫A和B的哈达玛积(元素之间的乘法)。
  • • 向量积(矩阵与向量之积,注意矩阵和向量形状的约束)可以使⽤向量积来描述在给定前⼀层的值时,求解神经⽹络每⼀层所需的复杂计算。Torch.mv(A,x)
  • • 矩阵乘法(前行乘后列):有点想法,每一次都是进行的行乘列,然后相乘元素求和,那么就可以转换成一个递归问题,通过向量积和求和来完成每一个子问题的过程。Torch.mm(A , B)
  • 范数:
    L2范数是向量元素平方和的平方根:Torch.norm(A) 。 在实际应用中,更多的是使用到L2范数的平方,那就再自乘一下就好了。
    L1范数是向量元素绝对值之和:torch.abs(A).sum()。
    对于矩阵的范数叫做弗罗⻉尼乌斯范数,跟L2范数是类似的。
    ###########################################################################
    (待续)
http://www.dtcms.com/a/494518.html

相关文章:

  • 小米开源端到端语音模型 MiMo-Audio-7B-Instruct 语音智能与音频理解达 SOTA
  • 深度学习进阶(六)——世界模型与具身智能:AI的下一次跃迁
  • RV1106+es8388音频采集和播放调试
  • 【图像超分】论文复现:轻量化超分 | FMEN的Pytorch源码复现,跑通源码,整合到EDSR-PyTorch中进行训练、重参数化、测试
  • 网站设计的公司排名无极电影网首页
  • vue3引入海康监控视频组件并实现非分屏需求一个页面同时预览多个监控视频(3)-接口分页篇(最终版)
  • 新华三H3CNE网络工程师认证—OSPF多区域概念与配置
  • 软件开发商网站html网站用什么空间
  • 免费炫酷网站模板wordpress 模板 破解版
  • Linux1017 shell:awk print printf
  • 服务器对网站的作用有哪些?
  • linux系统编程(十③)RK3568 socket之 TCP 服务器的实现
  • 29、构建可视化日志管理服务器
  • 代码解析:《AGENTREVIEW: Exploring Peer Review Dynamics with LLM Agents》
  • 嵌入式软件面试
  • 安卓前后端连接教程
  • linux系统编程(十③)RK3568 socket之 TCP 服务器的实现【更新客户端断开重连依旧可以收发】
  • Windows系统错误6118全面解决方案:修复此工作组的服务器列表当前无法使用
  • 衡阳网站页面设计公司昆明抖音代运营
  • 昆明网站建设是什么意思WordPress添加PHP代码
  • 前端基础——HTML练习项目:填写简历信息
  • Python实现的服务器日志监控脚本
  • Git合并冲突解决方法
  • 计算机毕业设计选题推荐:基于SpringBoot和Vue的爱心公益网站
  • 解密Anthropic的MCP Inspector:从协议调试到AI应用开发的全栈架构之旅
  • 数据结构——二十一、哈夫曼树(王道408)
  • Amazon ElastiCache 全解析:打造高性能的智能缓存架构
  • Set数据结构【ES6】
  • 【算法与数据结构】图的遍历与生成树实战:从顶点3出发,DFS/BFS生成树完整代码+流程拆解
  • AI游戏素材创作全攻略