🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹
1、代码
PyTorch 为每个张量封装很多实用的计算函数,例如计算均值、平方根、求和等等
torch.mean(input, dim=None, keepdim=False, *, dtype=None)
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、数学
张量运算
- 张量加法和减法:
- 张量乘法:
-
逐元素乘法(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]
- 也称为Hadamard乘积,仅适用于维度相同的张量,逐元素相乘。
-
点积(Dot Product):
- 适用于两个向量,产生一个标量: [ c = ∑ i = 1 n a i ⋅ b i ] [ c = \sum_{i=1}^{n} a_i \cdot b_i ] [c=∑i=1nai⋅bi]
-
矩阵乘法(Matrix Multiplication):
- 适用于两个矩阵 ( A ∈ R m × n ) 和 ( B ∈ R n × p ) (A \in \mathbb{R}{m \times n}) 和 (B \in \mathbb{R}{n \times p}) (A∈Rm×n)和(B∈Rn×p),产生一个新的矩阵 ( C ∈ R m × p ) (C \in \mathbb{R}^{m \times p}) (C∈Rm×p):
-
张量积(Tensor Product):
- 两个张量的乘积,结果的维度是原始两个张量维度的和。例如, ( A ∈ R d 1 × d 2 ) ( A \in \mathbb{R}{d_1 \times d_2} ) (A∈Rd1×d2)和 ( B ∈ R d 3 × d 4 ) ( B \in \mathbb{R}{d_3 \times d_4} ) (B∈Rd3×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} ) (C∈Rd1×d2×d3×d4): [ C i j k l = A i j ⋅ B k l ] [ C_{ijkl} = A_{ij} \cdot B_{kl} ] [Cijkl=Aij⋅Bkl]
-
- 张量缩并(Tensor Contraction):
- 张量转置(Tensor Transpose):