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

第二章 预备知识(线性代数)

2.3 线性代数

2.3.1标量

只有一个元素的张量表示标量

import torch
x=torch.tensor(3)
print(x)
tensor(3)

2.3.2向量

一维张量表示向量,可以被视为标量值组成的列表

import torch
x=torch.arange(3)
print(x)
tensor([0, 1, 2])

通过索引来访问元素

print(x[2])
tensor(2)

向量的长度=维度

可以用len()或.shape属性访问

print(len(x))
print(x.shape)
3
torch.Size([3])

2.3.3矩阵

具有两个轴的张量

import torch
x=torch.arange(20).reshape(5,4)
print(x)
tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11],[12, 13, 14, 15],[16, 17, 18, 19]])

矩阵的转置

print(x.T)
tensor([[ 0,  4,  8, 12, 16],[ 1,  5,  9, 13, 17],[ 2,  6, 10, 14, 18],[ 3,  7, 11, 15, 19]])

对称矩阵的转置等于其本身

2.3.4张量

具有任意数量轴的n维数组

import torch
x=torch.arange(24).reshape(2,3,4)
print(x)
tensor([[[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]])

2.3.5张量算法的基本性质

任何按元素的一元运算不会改变其形状

import torch
x=torch.arange(24).reshape(2,3,4)
y=x.clone()
z=2
print(x+y)#加法
print(x*y)#乘法Hadamard积
print(x+2)#标量的运算
tensor([[[ 0,  2,  4,  6],[ 8, 10, 12, 14],[16, 18, 20, 22]],[[24, 26, 28, 30],[32, 34, 36, 38],[40, 42, 44, 46]]])tensor([[[  0,   1,   4,   9],[ 16,  25,  36,  49],[ 64,  81, 100, 121]],[[144, 169, 196, 225],[256, 289, 324, 361],[400, 441, 484, 529]]])tensor([[[ 2,  3,  4,  5],[ 6,  7,  8,  9],[10, 11, 12, 13]],[[14, 15, 16, 17],[18, 19, 20, 21],[22, 23, 24, 25]]])

2.3.6降维求和

可以通过设置axis来进行行求和或列求和

import torch
x=torch.arange(12).reshape(3,4)
print(x)
print(x.sum())
print(x.sum(axis=0))
print(x.sum(axis=1))
tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])
tensor(66)
tensor([12, 15, 18, 21])
tensor([ 6, 22, 38])

也可以设置keepdims保持轴数不变

import torch
x=torch.arange(12).reshape(3,4)
print(x.sum(axis=0))
print(x.sum(axis=0,keepdim=True))
tensor([12, 15, 18, 21])
tensor([[12, 15, 18, 21]])

同样,计算平均值也可以指定轴降维

import torch
x=torch.arange(12,dtype=torch.float32).reshape(3,4)
print(x.mean())
tensor(5.5000)

2.3.7向量的点积

即相同位置元素乘积之和,只能用于向量(一维张量)

import torch
x=torch.arange(4,dtype=torch.float32)
y=torch.ones(4,dtype=torch.float32)
print(torch.dot(x,y))
tensor(6.)

2.3.8矩阵乘法

n行m列矩阵与m行l列矩阵相乘会得到n行l列矩阵

import torch
x=torch.arange(20,dtype=torch.float32).reshape(5,4)
y=torch.ones(4,3)
print(torch.mm(x,y))
tensor([[ 6.,  6.,  6.],[22., 22., 22.],[38., 38., 38.],[54., 54., 54.],[70., 70., 70.]])

2.3.9范数

向量的范数表示一个向量的大小

L2范数

向量元素平方和的平方根

import torch
x=torch.tensor([3.0,-4.0])
print(torch.norm(x))
tensor(5.)

L1范数

表示为向量元素绝对值之和

import torch
x=torch.tensor([3.0,-4.0])
print(torch.abs(x).sum())
tensor(7.)

Frobenius范数

矩阵元素平方和的平方根,满足向量范数的所有性质,像是矩阵型向量的L2范数

import torch
x=torch.ones(4,9)
print(torch.norm(x))
tensor(6.)
http://www.dtcms.com/a/456626.html

相关文章:

  • 建设网站服务器的方式有自营方式山楂树建站公司
  • 10.8 树形dp
  • Java中第三方日志库-Log4J
  • Redis 键(Key)详解
  • 用AI帮忙,开发刷题小程序:软考真经微信小程序API接口文档(更新版)
  • soular入门到实战(5) - Kanass、sward、soular实现sso单点登录
  • 优秀平面设计作品网站wordpress 多人
  • Django5 与 Vue3 表单交互全解析:从基础到实战
  • 《UE5_C++多人TPS完整教程》学习笔记62 ——《P63 多人游戏中的开火特效(Fire Effects in Multiplayer)》
  • [特殊字符] 芋道项目中的参数校验机制详解:以 AppProductActivityListReqVO 为例
  • 网站发的文章如何优化抖音代运营协议模板
  • 三次B样条曲线在参数u(u 不是原始节点向量中的节点)处打断成两条B样条曲线的方法
  • 清华字节开源HuMo: 打造多模态可控的人物视频,输入文字、图片、音频,生成电影级的视频,Demo、代码、模型、数据全开源。
  • Python私教FastAPI+React构建Web应用03 FARM技术栈介绍
  • win11+4060安装cuda,cuda toolkit,cudnn
  • Python小说图片PDF生成器开发详解
  • 一款小巧的绿色内存自动清理软件
  • 开源 C++ QT QML 开发(十一)通讯--TCP服务器端
  • 计算机毕业设计java共享茶室预约微信小程序 微信小程序中的共享茶室预订平台 茶室共享预约小程序的设计与开发
  • 《投资-104》价值投资者的认知升级与交易规则重构 - 如何从投资的角度选择创业的方向?
  • 网站底部素材临沂市平邑县建设局网站
  • 光通信|OAM-波长可控交叉连接
  • Redshift中锁定表的查询与处理
  • 利用AI+大数据的方式分析恶意样本(四十六)
  • 解码Linux环境搭建
  • 第8章:定时任务与触发器——让 Bot 主动服务
  • Javaweb--Vue
  • 大数据模糊计算
  • 2021年408真题易错知识点整理
  • 【金仓数据库】ksql 指南(二) —— 创建与管理本地数据库