PyTorch张量运算函数

server/2024/10/22 12:33:00/

文章目录

🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹

1、代码

PyTorch 为每个张量封装很多实用的计算函数,例如计算均值、平方根、求和等等

torch.mean(input, dim=None, keepdim=False, *, dtype=None)

  • input:输入的张量
  • dim:要计算均值的维度。如果没有指定,则计算整个张量的均值。
  • keepdim:是否保持原有维度,默认为 False。如果设为 True,输出张量将保持输入张量的维度。
  • dtype:指定返回张量的数据类型。
python"># -*- coding: utf-8 -*-
# @Author: CSDN@逐梦苍穹
# @Time: 2024/7/19 2:16
import torchdef test():data = torch.randint(0, 10, [2, 3], dtype=torch.float64)print(data)print('-' * 50)# 1. 计算均值# 注意: tensor 必须为 Float 或者 Double 类型print(data.mean())print(data.mean(dim=0))  # 按列计算均值print(data.mean(dim=1))  # 按行计算均值print('-' * 50)# 2. 计算总和print(data.sum())print(data.sum(dim=0))print(data.sum(dim=1))print('-' * 50)# 3. 计算平方print(data.pow(2))print('-' * 50)# 4. 计算平方根print(data.sqrt())print('-' * 50)# 5. 指数计算, e^n 次方print(data.exp())print('-' * 50)# 6. 对数计算print(data.log())  # 以 e 为底print(data.log2())print(data.log10())if __name__ == '__main__':test()

程序运行结果:

E:\anaconda3\python.exe D:\Python\AI\PyTorch\14-张量计算.py 
tensor([[3., 2., 6.],[2., 5., 5.]], dtype=torch.float64)
--------------------------------------------------
tensor(3.8333, dtype=torch.float64)
tensor([2.5000, 3.5000, 5.5000], dtype=torch.float64)
tensor([3.6667, 4.0000], dtype=torch.float64)
--------------------------------------------------
tensor(23., dtype=torch.float64)
tensor([ 5.,  7., 11.], dtype=torch.float64)
tensor([11., 12.], dtype=torch.float64)
--------------------------------------------------
tensor([[ 9.,  4., 36.],[ 4., 25., 25.]], dtype=torch.float64)
--------------------------------------------------
tensor([[1.7321, 1.4142, 2.4495],[1.4142, 2.2361, 2.2361]], dtype=torch.float64)
--------------------------------------------------
tensor([[ 20.0855,   7.3891, 403.4288],[  7.3891, 148.4132, 148.4132]], dtype=torch.float64)
--------------------------------------------------
tensor([[1.0986, 0.6931, 1.7918],[0.6931, 1.6094, 1.6094]], dtype=torch.float64)
tensor([[1.5850, 1.0000, 2.5850],[1.0000, 2.3219, 2.3219]], dtype=torch.float64)
tensor([[0.4771, 0.3010, 0.7782],[0.3010, 0.6990, 0.6990]], dtype=torch.float64)Process finished with exit code 0

2、数学

  1. 张量(Tensor)
    • 张量是一种多维数组,可以看作是标量(0阶张量)、向量(1阶张量)、矩阵(2阶张量)的高阶推广。
    • 一个 ( n ) (n) (n)维的张量可以表示为 ( T ∈ R d 1 × d 2 × ⋯ × d n ) ( T \in \mathbb{R}^{d_1 \times d_2 \times \cdots \times d_n} ) (TRd1×d2××dn),其中 ( d i ) (d_i) (di)是第 ( i ) (i) (i) 维的大小。
  2. 张量维度(Rank)
    • 张量的维度也称为它的阶(Rank)。一个标量是0阶张量,一个向量是1阶张量,一个矩阵是2阶张量,依此类推。

张量运算

  1. 张量加法和减法
    • 仅当两个张量的维度完全相同时,才能进行加法和减法运算运算是逐元素进行的。
    • 例如,两个3维张量 ( A , B ∈ R d 1 × d 2 × d 3 ) ( A, B \in \mathbb{R}^{d_1 \times d_2 \times d_3} ) (A,BRd1×d2×d3)的加法为: [ C i j k = A i j k + B i j k ] [ C_{ijk} = A_{ijk} + B_{ijk} ] [Cijk=Aijk+Bijk]
  2. 张量乘法
    • 逐元素乘法(Element-wise Multiplication)

      • 也称为Hadamard乘积,仅适用于维度相同的张量,逐元素相乘。
        [ C i j k = A i j k × B i j k ] [ C_{ijk} = A_{ijk} \times B_{ijk} ] [Cijk=Aijk×Bijk]
    • 点积(Dot Product)

      • 适用于两个向量,产生一个标量: [ c = ∑ i = 1 n a i ⋅ b i ] [ c = \sum_{i=1}^{n} a_i \cdot b_i ] [c=i=1naibi]
    • 矩阵乘法(Matrix Multiplication)

      • 适用于两个矩阵 ( A ∈ R m × n ) 和 ( B ∈ R n × p ) (A \in \mathbb{R}{m \times n}) 和 (B \in \mathbb{R}{n \times p}) (ARm×n)(BRn×p),产生一个新的矩阵 ( C ∈ R m × p ) (C \in \mathbb{R}^{m \times p}) (CRm×p)
    • 张量积(Tensor Product)

      • 两个张量的乘积,结果的维度是原始两个张量维度的和。例如, ( A ∈ R d 1 × d 2 ) ( A \in \mathbb{R}{d_1 \times d_2} ) (ARd1×d2) ( B ∈ R d 3 × d 4 ) ( B \in \mathbb{R}{d_3 \times d_4} ) (BRd3×d4)张量 ( C ∈ R d 1 × d 2 × d 3 × d 4 ) ( C \in \mathbb{R}^{d_1 \times d_2 \times d_3 \times d_4} ) (CRd1×d2×d3×d4) [ C i j k l = A i j ⋅ B k l ] [ C_{ijkl} = A_{ij} \cdot B_{kl} ] [Cijkl=AijBkl]
  3. 张量缩并(Tensor Contraction)
    • 也称为张量内积(Inner Product),是一种沿指定维度的求和操作。比如,两个3维张量 ( A ) 和 ( B ) 在维度2上的缩并: [ C i k = ∑ j A i j ⋅ B j k ] [ C_{ik} = \sum_{j} A_{ij} \cdot B_{jk} ] [Cik=jAijBjk]
  4. 张量转置(Tensor Transpose)
    • 类似于矩阵转置,但适用于高维张量。通过改变张量维度的顺序来实现。例如,一个 ( 3 × 4 × 5 ) ( 3 \times 4 \times 5 ) (3×4×5)张量 ( T ) ( T ) (T) 转置为 ( 4 × 3 × 5 ) ( 4 \times 3 \times 5 ) (4×3×5)

数学原理

张量运算的数学原理主要来自线性代数和多重线性代数

  1. 线性代数基础
  2. 多重线性代数

http://www.ppmy.cn/server/65254.html

相关文章

CSS中object-fit: cover;

object-fit: cover; 是CSS中的一个属性值&#xff0c;用于设置替换元素&#xff08;如<img>、<video>等&#xff09;的内容如何适应到其使用的高度和宽度定义的框内。当你使用这个值时&#xff0c;元素的内容&#xff08;比如一张图片&#xff09;会被缩放以完全覆…

Docker构建LNMP环境并运行Wordpress平台

1.准备Nginx 上传文件 Dockerfile FROM centos:7 as firstADD nginx-1.24.0.tar.gz /opt/ COPY CentOS-Base.repo /etc/yum.repos.d/RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make && \useradd -M -s /sbin/nologin nginx && \cd /o…

全面了解不同GPU算力型号的价格!

这两年人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;、深度学习和高性能计算&#xff08;HPC&#xff09;领域的快速发展&#xff0c;GPU算力已成为不可或缺的资源。企业、研究机构乃至个人开发者越来越依赖于GPU加速计算来处理大规模数据集和复杂模…

QT调用VNC并放到一个窗口中

1.VNC资源下载 本例中的这个VNC可以从以下连接中下载&#xff0c;也可以从官网上下载&#xff0c;应该都是类似的。 https://download.csdn.net/download/xiaoding_ding/89549092 下载完成后放到项目的release文件夹中 2.程序中引用 2.1在主界面中放置一个按钮&#xff0c;…

linux进程优先级——优先值、调度算法、进程性质

前言&#xff1a;本篇内容主要讲解linux下进程的优先级。 优先级的内容相对较少&#xff0c; 最重要的内容就是cpu的调度方法。 内容相对容易理解。 ps&#xff1a;本节内容适合了解冯诺依曼和操作系统的管理方式以及进程PCB的友友们进程观看 进程的优先级是什么 进程的优先级…

升级TrinityCore 服务器硬件

升级服务器 原服务器架构&#xff1a;Ubuntu装VirtualBox装Ubuntu虚拟机 原配置&#xff1a; 宿主机 内存4G 内核4 usb外接硬盘 Ubuntu虚拟机 内存1756MB 内核4 ip 192.168.0.12 升级服务器架构&#xff1a;FreeBSD装bhyve装Ubuntu虚拟机 新配置&#xff1a;宿主机 内存…

IDEA创建Java工程、Maven安装与建立工程、Web工程、Tomcat配置

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …

视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案

LntonCVS流媒体平台是一款遵循国家GB28181标准协议的先进视频监控与云服务平台。该平台设计独特&#xff0c;能够同时接入并处理多路设备的视频流&#xff0c;支持包括RTSP、RTMP、FLV、HLS、WebRTC在内的多种视频流格式的分发。其功能丰富多样&#xff0c;涵盖了视频直播监控、…