PyTorch基础-Tensors属性、Tensor的运算

news2025/2/1 16:59:48

PyTorch的基本概念

Tensor的基本概念

张量高于标量、向量、矩阵
标量说零维的张量,向量是一维的张量,矩阵是二维的张量

Tensor与机器学习的关系

image.png

Tensor的创建

函数功能
Tensor(*size)基础构造函数
Tensor(data)类似np.array
ones(*size)全1Tensor
zeros(*size)全0Tensor
eye(*size)对角线为1,其他为0
arange(s,e,step)从s到e,步长为step
linspace(s,e,steps)从s到e,均匀切分成steps份
rand/randn(*size)均匀/标准分布
normal(mean,std)/uniform_(from,to)正态分布/均匀分布
randperm(m)随机排列

实例
image.png
随机数 正态分布 标准分布
image.png
序列
image.png

Tensor的属性

  • 每一个Tensor有torch.dtype、torch.device、torch.layout三种属性
  • torch.device 标识了torch.Tensor对象在创建之后所存储在的设备名称
  • torch.layout表示torch.Tensor内存布局的对象
torch.tensor([1,2,3],dtype=torch.float32,device=torch.device('cpu'))

稀疏的张量

  • torch.sparse_coo_tensor
  • coo类型表示了非零元素的坐标形式
indices = torch.tensor([0,1,1],[2,0,2]])
values = torch.tensor([3,4,5],dtype=torch.float32)
x = torch.sparse_coo_tensor(i,v,[2,4])
dev = torch.device("cpu")
torch.tensor([2,2],device=dev)
torch.tensor([2,2],dtype=torch.float32,device=dev)

image.png
稀疏的张量

i=torch.tensor([[0,1,2],[0,1,2]])
v=torch.tensor([1,2,3])
torch.sparse_coo_tensor(i,v,(4,4))

image.png
转成稠密的张量

torch.sparse_coo_tensor(i,v,(4,4)).to_dense()

image.png

Tensor的算术运算

加法运算

c=a+b
c=torch.add(a,b)
a.add(b)
a.add_(b)#会修改a的值

image.png

减法运算

c=a-b
c=torch.sub(a,b)
a.sub(b)
a.sub_(b)#会修改a的值

image.png

乘法运算

  • 哈达玛积(element wise,对应元素相乘)
c=a*b
c=torch.mul(a,b)
a.mul(b)
a.mul_(b)

image.png

除法运算

c=a/b
c=torch.div(a,b)
a.div(b)
a.div_(b)

image.png

矩阵运算

  • 二维矩阵乘法运算操作包括torch.mm()、torch.matmul()、@
a=torch.ones(2,1)
b=torch.ones(1,2)
print(torch.mm(a,b))
print(torch.matmul(a,b))
print(a@b)
print(a.matmul(b))
print(a.mm(b))

image.png

  • 对于高维的Tensor(dim>2),定义其矩阵乘法仅在最后的两个维度上,要求前面的维度必须保持一致,就像矩阵的索引一样并且运算操作只有torch.matmul()
a=torch.ones(1,2,3,4)
b=torch.ones(1,2,4,3)
print(a.matmul(b))
print(torch.matmul(a,b))

image.png

幂运算

print(torch.pow(a,2))
print(a.pow(2))
print(a**2)
print(a.pow_(2))

image.png
e的n次方

print(torch.exp(a))
b=a.exp_()

image.png

开方运算

a.sqrt()
a.sqrt_()

image.png

对数

torch.log2(a)
torch.log10(a)
torch.log(a)
torch.log_(a)

image.png

Tensor的取整/取余运算

  • .floor()向下取整数
  • .ceil()向上取整数
  • .round()四舍五入
  • .trunc()裁剪,只取整数部分
  • .frac()只取小数部分
  • %取余

image.png

Tensor的比较运算

torch.eq(input,other, out=None) #按成员进行等式操作,相同返回True
torch.equal(tensor1,tensor2) #如果tensor1和tensor2有相同的size和elements,则为true
torch.ge(input, other, out=None) #input>= other
torch.gt(input, other, out=None) #input>other
torch.le(input, other, out=None) #input=<other
torch.lt(input, other, out=None) #input<other
torch.ne(input, other, out=None) #input != other 不等于

排序

torch.sort(input, dim=None, descending=False, out=None) 
#对目标input进行排序
torch.topk(input, k,dim=None, largest=True, sorted=Trueout=None)
#沿着指定维度返回最大k个数值及其索引值
torch.kthvalue(input, k, dim=None, out=None)
#沿着指定维度返回第k个最小值及其索引值

Tensor判定是否为finite/inf/nan

torch.isfinite(tensor)/torch.isinf(tensor)/torch.isnan(tensor)
返回一个标记元素是否为 finite/inf/nan 的mask 张量

Tensor的三角函数

  • torch.abs(input, out=None)
  • torch.acos(input, out=None)
  • torch.asin(input, out=None)
  • torch.atan(input, out=None)
  • torch.atan2(input, inpu2out=None)
  • torch.cos(input, out=None)
  • torch.cosh(input, out=None)
  • torch.sin(input, out=None)
  • torch.sinh(input, out=None)
  • torch.tan(input, out=None)
  • torch.tanh(input, out=None)

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

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

相关文章

举个栗子!Tableau 技巧(263):按需突出显示文本表的 N 个行

我们分享过 &#x1f330; &#xff1a;突出显示文本表的行或列&#xff0c;可以突出显示文本表中的某一行或某一列。有数据粉提出新的问题&#xff1a;如果想突出显示多行数据&#xff0c;该如何实现呢&#xff1f; 在 Tableau 中是可以实现的&#xff08;如上图&#xff09;&…

代码随想录刷题第23天

今天是二叉树的终章&#xff0c;不知不觉已经刷题23天了&#xff0c;先给自己点个赞&#x1f604;&#x1f44d; 第一题是修剪二叉搜索树&#xff0c;要注意修剪时被删除节点的子树可能符合要求&#xff0c;因此还需向下遍历。最后用root->left与right接住返回值。 迭代法先…

PHP漏洞查询

CVE - Search CVE List (mitre.org) 美国国家漏洞数据库&#xff08;需要梯子&#xff09; NATIONAL VULNERABILITY DATABASE NVD - Search and Statistics (nist.gov) 基本都能查询到&#xff0c;传结果详情页里面会有一些解决方案的连接 PHP的官方网站 PHP :: Bugs :: Se…

大模型实践笔记(1)——GLM-6B实践

目录 在Ubuntu上的配置Git Large File Storage 安装Git LFS&#xff1a; 设置Git LFS&#xff1a; 使用Git LFS&#xff1a; 安装GLM-6B 环境依赖 ChatGLM2-6B介绍 配置GLM 下载代码 构建环境 安装依赖 本地部署 网页UI 很多模型在hugging face上面&#xff0c;…

【Linux】 Linux编译器-gcc/g++使用

&#x1f497;个人主页&#x1f497; ⭐个人专栏——Linux学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读1. Linux编译器-gcc/g使用1.1 引入1.2 初识gcc/g1.3 程序运行的四个阶段1.3.1 预处理1.3.2 编译1.3.3 汇编1.3.4 链接 1.…

【Python】一个简单的小案例:实现批量修改图片格式

1.代码 import os from tkinter import Tk, Button from PIL import Imagedef check_and_create_folders():# 获取当前目录current_directory os.getcwd()# 定义文件夹名称folders_to_check ["JPG", "PNG"]for folder_name in folders_to_check:folder_…

Java/Python/Go不同开发语言基础数据结构和相关操作总结-Map篇

Java/Python/Go不同开发语言基础数据结构和相关操作总结 1. Java1.1 基础操作1.1.1 数据结构和定义方式1.1.2 增加1.1.3 修改1.1.4 查询1.1.5 删除1.1.6 获取总长度1.1.7 按key排序1.1.8 按value排序1.1.9 遍历 1.2 常用其他方法1.2.1 几种数据结构的对比 2. Go2.1基础操作2.1.…

代码随想录算法训练营第二十四天| 77. 组合。

77. 组合 题目链接&#xff1a;组合 题目描述&#xff1a; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 解题思路&#xff1a; 本题是经典的回溯法解决的组合问题&#xff0c;回溯问题搞清楚纵向递归横向遍历即…

Redis核心技术与实战【学习笔记】 - 12.Redis删除数据后,为什么内存占用率还是很高?

前言 在使用 Redis 是&#xff0c;经常会遇到一个问题&#xff1a;明明做了数据删除&#xff0c;数据量不大&#xff0c;但是 使用 top 命令查看时&#xff0c;发现 Redis 还是占用了很多内存。 这是因为&#xff0c;当删除数据后&#xff0c;Redis 释放的内存空间会由内存分…

Vivado编译介绍

Vivado编译介绍 合成是将寄存器传输级别&#xff08;RTL&#xff09;指定的设计转换为门级表示。AMD Vivado™ 合成是定时驱动的&#xff0c;并针对内存进行优化使用和性能。Vivado合成支持以下的可合成子集&#xff1a; •SystemVerilog&#xff1a;IEEE标准SystemVerilog统…

UniMSE: Towards Unified Multimodal Sentiment Analysis and Emotion Recognition

文章目录 UniMSE&#xff1a;实现统一的多模态情感分析和情绪识别文章信息研究目的研究内容研究方法1.总体架构2.Task Formalization3.Pre-trained Modality Fusion (PMF)4.Inter-modality Contrastive Learning5.总体损失函数6.Decoding Algorithm 结果与讨论代码和数据集符号…

博客网站系统测试报告

一、项目背景 博客网站系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;同时将其部署到云服务器上。前端主要有个页面构成&#xff1a;注册页、登录页、个人博客列表页、博客详情页、编辑博客页、修改博客页以及博客系统主页&#xf…

【项目实践02】【优先级阻塞队列】

文章目录 一、前言二、项目背景三、实现方案四、思路延伸1. 优先级队列1.1 concurrent 包下的 PriorityBlockingQueue1.2 Redisson 的优先级阻塞队列 2. jvisualvm 远程连接3. Jstack 高 CPU 排查 五、参考内容 一、前言 本系列用来记录一些在实际项目中的小东西&#xff0c;并…

【算法分析与设计】交换两个节点

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本…

实习日志11

1.文件上传报错 1.1.报错信息Invalid typed array length: -2 1.2.查看源码找出错误 定位到检查代码上传是否成功的代码出错&#xff0c;rDataArr[3] 0x03 var pData new Uint8Array(pDataLen);的pDataLen4 说明rDataArr只有0-3&#xff0c;其他数据都没有上传上来 说明…

DoubleEnsemble:基于样本重加权和特征选择的金融数据分析方法

现代机器学习模型&#xff08;如深度神经网络和梯度提升决策树&#xff09;由于其提取复杂非线性模式的优越能力&#xff0c;在金融市场预测中越来越受欢迎。然而&#xff0c;由于金融数据集的信噪比非常低&#xff0c;并且是非平稳的&#xff0c;复杂的模型往往很容易过拟合。…

leetcode189.轮转数组|超简单易于理解方法

题目 https://leetcode.cn/problems/rotate-array/description/https://leetcode.cn/problems/rotate-array/description/ 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输…

基于uniapp+vue酒店宾馆客房民宿管理系统设计 微信小程序_54ybz

APP性能需求 &#xff08;1&#xff09;顾客在安卓APP页面各种操作可及时得到反馈。 &#xff08;2&#xff09;该平台是提供给多个用户使用的平台&#xff0c;用户使用之前需要注册登录。登录验证后&#xff0c;用户才可进行各种操作[10]。 &#xff08;3&#xff09;管理员、…

Java 集合 04 综合练习-查找用户是否存在

练习、 代码&#xff1a; public class User{private String id;private String username;private int password;public User() {}public User(String id, String username, int password) {this.id id;this.username username;this.password password;}public String getI…

舟山长寿医学中心:引领生命科技前沿

在浩瀚的东海之滨&#xff0c;舟山群岛如一颗璀璨的明珠&#xff0c;镶嵌在碧波荡漾的大海之中。这里不仅拥有得天独厚的自然美景&#xff0c;更是一块充满生机与活力的健康宝地。舟山长寿医学中心&#xff0c;正是这片神奇的土地上的一颗璀璨明珠&#xff0c;致力于为全球人士…