深度学习-线性代数

目录

  • 标量
  • 向量
  • 矩阵
    • 特殊矩阵
    • 特征向量和特征值
  • 标量由只有一个元素的张量表示
  • 将向量视为标量值组成的列表
  • 通过张量的索引来访问任一元素
  • 访问张量的长度
  • 只有一个轴的张量,形状只有一个元素
  • 通过指定两个分量m和n来创建一个形状为m×n的矩阵
  • 矩阵的转置
  • 对称矩阵的转置逻辑运算
  • clone()复制一个有相同形状的张量
  • 两个矩阵的按元素乘法称为:哈达玛积⊙
  • 计算元素的和
  • 表示任意形状张量的元素和
    • 参数axis=0求和
    • 参数axis=1求和
    • axis=[0,1] 必须满足三个维度以上
  • 平均值(mean或average)
  • 计算总和或均值时保持轴数不变(即维度不丢失)使用keepdim=True
    • keepdim=True保持唯一,不丢失求和的维度,然后才能使用广播机制
  • 某个轴计算A元素的累积和(即前缀和)
  • 点积dot(参数1,参数2)
  • 矩阵向量积torch.mv(参数1,参数2)
  • 矩阵乘法
  • norm()函数
  • 向量元素的绝对值之和
  • F范式:矩阵元素的平方和的平方根

标量

在这里插入图片描述




向量

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

矩阵

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

特殊矩阵

在这里插入图片描述
在这里插入图片描述

特征向量和特征值

在这里插入图片描述




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

import torch
x = torch.tensor([3.0])
y = torch.tensor([2.0])
print(x + y)
print(x * y)
print(x / y)
print(x ** y)

结果:在这里插入图片描述




将向量视为标量值组成的列表

import torch
x = torch.arange(4)
print(x)

结果:在这里插入图片描述




通过张量的索引来访问任一元素

import torch
x = torch.arange(4)
print(x[3])

结果:在这里插入图片描述




访问张量的长度

import torch
x = torch.arange(4)
print(len(x))

结果:在这里插入图片描述




只有一个轴的张量,形状只有一个元素

import torch
x = torch.arange(4)
print(x.shape)

结果:在这里插入图片描述
一个长为1的列表




通过指定两个分量m和n来创建一个形状为m×n的矩阵

import torch
A = torch.arange(20).reshape((5, 4))
print(A)

结果:在这里插入图片描述




矩阵的转置

import torch
A = torch.arange(20).reshape((5, 4))
print(A.T)

结果:在这里插入图片描述




对称矩阵的转置逻辑运算

import torch
B = torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]])
print(B == B.T)

结果:
在这里插入图片描述




clone()复制一个有相同形状的张量

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()
print(A)
print(A + B)

结果:
在这里插入图片描述




两个矩阵的按元素乘法称为:哈达玛积⊙

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = A.clone()
print(A*B)

结果:
在这里插入图片描述

import torch
a = 2 #对矩阵中的每个元素+2
x = torch.arange(24).reshape(2, 3, 4) #reshape第一个参数可以看作是“块”或“层”的数量
print(x)
print(a + x)
print((a * x).shape)

结果:
在这里插入图片描述

print(a * x)

在这里插入图片描述




计算元素的和

import torch
x = torch.arange(4, dtype=torch.float32)
print(x)
print(x.sum())

结果:
在这里插入图片描述




表示任意形状张量的元素和

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
print(A.shape)
print(A.sum())

结果:

在这里插入图片描述

参数axis=0求和

如果是二维则代表沿着行的方向(第一维)进行操作(从上到下)

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
A_sum_axis0 = A.sum(axis=0) 
print(A)
print(A_sum_axis0)
print(A_sum_axis0.shape)

结果:
在这里插入图片描述


参数axis=1求和

如果是二维则代表沿着列的方向(第二维)进行操作(从左到右)

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
A_sum_axis1 = A.sum(axis=1) 
print(A)
print(A_sum_axis1)
print(A_sum_axis1.shape)

结果:
在这里插入图片描述


axis=[0,1] 必须满足三个维度以上

对于三维及三维以上的,三个参数分别代表块/层方向(第一维度)、行方向(第二维度)、列方向(第三维度)
此时,就跟二维的有所区别

二维的:axis=0即第一维度------按行方向操作
        axis=1即第二维度------按列方向操作


三维即三维以上的:
         axis=0 即第一维度------按块/层方向操作
         axis=1 即第二维度------按行方向操作
         axis=2 即第三维度------按列方向操作

示例说明:
在这里插入图片描述





import torch
A = torch.arange(20*2, dtype=torch.float32).reshape(2, 5, 4)
print(A)
print(A.sum(axis=[0, 1]))

结果:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
然后,第一层和第二层求和可得:
在这里插入图片描述

平均值(mean或average)

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
print(A.mean())
print(A.sum()/A.numel())

结果:
在这里插入图片描述




import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
print(A)
print(A.mean(axis=0))

结果:
在这里插入图片描述




import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
print(A)
print(A.sum(axis=0)/A.shape[0]) #求和的那个维度丢掉了,即按行方向的维度丢掉了

结果:
在这里插入图片描述
A.shape[0]表示第一个维度(行方向)的元素数
所以用A.shape[1]测试一下是不是元素数

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
print(A)
print(A.sum(axis=1)/A.shape[1]) #求和的那个维度丢掉了,即按列方向的维度丢掉了

在这里插入图片描述




计算总和或均值时保持轴数不变(即维度不丢失)使用keepdim=True

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
sum_A = A.sum(axis=1, keepdim=True)
print(sum_A)

结果:

在这里插入图片描述
当调用.sum()方法(或类似的聚合方法,如.mean()、.max()等)时,你可以选择是否保持被聚合维度的形状。keepdim=True是一个参数,当设置为True时,它会使得聚合操作后的张量在被聚合的维度上仍然保持一个大小为1的维度,而不是完全去除这个维度。

keepdim=True保持唯一,不丢失求和的维度,然后才能使用广播机制

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
sum_A = A.sum(axis=1, keepdim=True)
print(A)
print(sum_A)
print(A/sum_A)

在这里插入图片描述




某个轴计算A元素的累积和(即前缀和)

累积和的意思是,对于每个位置,你会将该位置及其之前所有位置上的元素相加。第一个位置的元素保持不变(因为没有之前的元素可以相加),之后的每个位置的元素都是它自身和它之前所有元素的和。

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
print(A.cumsum(axis=0))

结果:
在这里插入图片描述




点积dot(参数1,参数2)

torch.dot只能对一维向量做点积

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

结果:
在这里插入图片描述




矩阵向量积torch.mv(参数1,参数2)

在这里插入图片描述
A是一个m×n的矩阵,x是一个n×1的一列,所以得到一个m的列向量。
m列中第i个元素是点积 a i T a_i^T aiTx

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
x = torch.arange(4, dtype=torch.float32)
print(A.shape)
print(x.shape)
print(torch.mv(A, x))

结果:
在这里插入图片描述




矩阵乘法

矩阵乘法可以看作执行n次矩阵的向量积,然后拼接在一块,形成一个m×n的矩阵。
A:m×q的矩阵
B:q×n的矩阵
AB:m×n的矩阵

import torch
A = torch.arange(20, dtype=torch.float32).reshape(5, 4)
B = torch.ones(4, 3)
print(torch.mm(A, B))

结果:
在这里插入图片描述




norm()函数

第二范数是向量元素平方和的平方根
在这里插入图片描述

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

结果:在这里插入图片描述




向量元素的绝对值之和

在这里插入图片描述

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

结果:在这里插入图片描述




F范式:矩阵元素的平方和的平方根

在这里插入图片描述

import torch
print(torch.norm(torch.ones((4, 9))))

结果:在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03-JAVA设计模式-访问者模式

访问者模式 什么是访问者模式 访问者模式(Visitor Pattern)是软件设计模式中的一种行为模式,它用于将数据结构中的元素与操作这些元素的操作解耦。这种模式使得可以在不修改数据结构的情况下添加新的操作。 在访问者模式中,我们…

图文教程 | Git安装配置、常用命令大全以及常见问题

前言 因为多了一台电脑,平时写一些代码,改一些文件,用U盘存着转来转去特别麻烦。于是打算用Git管理我的文件,方便在两个终端之间传输数据啥的。也正好给新电脑装好Git。 📢博客主页:程序源⠀-CSDN博客 &…

HFSS端口介绍2---波端口

前面我们讨论了Lumped Port设定相关的内容,这节我们继续讨论Wave Port(波端口)使用相关的问题。 波端口使用范围 封闭结构:如波导、同轴电缆等 包含多个传播模式的模型 端口平面在求解区域外的模型 模型中包含均匀的波导或者传输线结构 波端口的大小 对于封闭的传输线结构:边…

视频教程下载:用ChatGPT的 API 开发AI应用指南

通过这门关于 OpenAI API 和 ChatGPT API 的全面课程,在您的应用中释放人工智能的力量。随着人工智能技术的快速发展,比以往任何时候都更重要的是保持领先地位,并为您的项目利用这些尖端工具。在本课程中,您将深入了解人工智能驱动…

物联网硬件设计开发全攻略:十大关键阶段深度解析

为物联网应用设计开发高效稳定的硬件系统本身是一项既复杂又精细的艰巨任务。看似小巧的物联网设备一般由软件、固件和硬件组件组成,其中,硬件组件更是占据了约80%的成本与开发挑战。那么,为何硬件部分如此棘手?在这篇文章中&…

x汽车登陆网站登陆rsa加密逆向

声明: 本文章内容仅供学习交流,不用于其他其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关, 各位看官好哇,今天给大家带来一篇web自动化逆向的文章,如下图当前我…

芯科科技大大简化面向无电池物联网的能量采集产品的开发

芯科科技推出其迄今最高能量效率且支持能量采集功能的无线SoC 中国,北京 – 2024年4月22日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)…

超星图书转成PDF格式

转为pdf 为避免浪费您的时间,本篇转载文章不值得花费您的宝贵时间阅读 方法一 感谢医学插画动画杜鹏 Roison An两位提供的方法,经试验后简化了一下,得出以下方法:1、使用超星打开你想要转换的图书2、依次打开本书的所有页面,不要…

Property ‘auth‘ does not exist on type ‘AGCApi‘.

Property ‘auth’ does not exist on type ‘AGCApi’. 解决 清理项目重新运行模拟器就可以了

CentOS-7安装clickhouse并允许其他主机登录

一、通用设置 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入: 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服务器之间时间同步 yum install -y ntpdate &…

Java | Leetcode Java题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution {public int trap(int[] height) {int n height.length;if (n 0) {return 0;}int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i]);}int[] …

云南旅游攻略

丽江景点 Day1 ——丽江古城 丽江古城是一个充满文化和历史的地方&#xff0c;拥有丰富的景点和活动。 推荐游玩&#xff1a; 参观标志性建筑&#xff1a;大水车是丽江古城的标志性建筑&#xff0c;可以在这里拍照留念。 探索中心广场&#xff1a;四方街是古城的中心&#xf…

【第6节】Lagent AgentLego 智能体应用搭建

目录 1 基础课程2 安装环境2.1 教程要求2.2 安装 Lagent 和 AgentLego 3 实践操作3.1 Lagent&#xff1a;轻量级智能体框架3.1.1 Lagent Web Demo 使用3.1.2 用 Lagent 自定义工具 3.2 AgentLego&#xff1a;组装智能体“乐高”3.2.1 AgentLego 直接使用部分3.2.2 AgentLego We…

C++笔记:类和对象(一)->封装

类和对象 认识类和对象 先来回忆一下C语言中的类型和变量&#xff0c;类型就像是定义了数据的规则&#xff0c;而变量则是根据这些规则来实际存储数据的容器。类是我们自己定义的一种数据类型&#xff0c;而对象则是这种数据类型的一个具体实例。类就可以理解为类型&#xff0c…

二维码存储图片如何实现?相册二维码的制作技巧

如何将照片生成二维码后存储展示&#xff1f;现在很多人会将图片生成二维码以后&#xff0c;用于分享或者储存的用途&#xff0c;减少个人内存的占用量&#xff0c;而且分享照片也会更加的方便&#xff0c;只需要扫描二维码就可以让其他人查看图片。 想要制作图片二维码的步骤…

CLHLS交叉滞后模型和广义估计方程一起用发文2区 | 公共数据库周报(4.10)

零基础CHARLS发论文&#xff0c;不容错过&#xff01; 长期回放更新指导&#xff01;适合零基础&#xff0c;毕业论文&#xff0c;赠送2011-2020年CHARLS清洗后的数据全套代码 CHARLS公共数据库 CHARLS数据库简介中国健康与养老追踪调查(China Health and Retirement Longitudi…

C. Inhabitant of the Deep Sea

本题链接&#xff1a;Problem - C - Codeforces 题目&#xff1a; 样例&#xff1a; 输入 6 4 5 1 2 4 3 4 6 1 2 4 3 5 20 2 7 1 8 2 2 2 3 2 2 15 1 5 2 7 5 2输出 2 3 5 0 2 2 思路&#xff1a; 数学模拟。 根据题意&#xff0c;一前一后的攻击&#xff0c;攻击k次后&…

Mysql联合索引和最左匹配例子说明

文章目录 前言联合索引最左匹配原则举例说明 前言 是什么是索引&#xff1f; 索引是一种数据结构&#xff0c;用于加速数据库查询。 当没有索引时&#xff0c;数据库系统需要执行全表逐行扫描来满足查询需求。这意味着它会逐行读取整个表中的数据&#xff0c;并在内存中进行比…

设计模式-状态模式在Java中的使用示例-信用卡业务系统

场景 在软件系统中&#xff0c;有些对象也像水一样具有多种状态&#xff0c;这些状态在某些情况下能够相互转换&#xff0c;而且对象在不同的状态下也将具有不同的行为。 为了更好地对这些具有多种状态的对象进行设计&#xff0c;我们可以使用一种被称之为状态模式的设计模式…

【提示学习论文】BlackVIP: Black-Box Visual Prompting for Robust Transfer Learning论文原理

BlackVIP: Black-Box Visual Prompting for Robust Transfer Learning BlackVIP:稳健迁移学习的黑盒视觉提示 问题 黑盒白盒&#xff1f; 黑盒和白盒的概念与对预训练模型内部参数的了解程度相关。黑盒指的是对预训练模型的参数和结构缺乏详细了解&#xff0c;通常只能通过使…