当前位置:实例文章 » 其他实例» [文章]【AI】《动手学-深度学习-PyTorch版》笔记(三):PyTorch常用函数

【AI】《动手学-深度学习-PyTorch版》笔记(三):PyTorch常用函数

发布人:shili8 发布时间:2025-03-15 00:47 阅读次数:0

**《动手学-深度学习-PyTorch版》笔记(三)**

在前两篇笔记中,我们已经了解了PyTorch的基本概念、数据加载和预处理、模型定义等内容。在本篇笔记中,我们将重点介绍PyTorch常用函数,帮助你更好地掌握PyTorch的使用。

###1. PyTorch常用函数####1.1 `torch.tensor()`

`torch.tensor()` 是创建张量(Tensor)的基本方法。它可以从多种数据类型中创建张量,如 NumPy 数组、Python 列表等。

import torch# 从 NumPy 数组创建张量np_array = np.array([1,2,3])
tensor = torch.tensor(np_array)
print(tensor) # tensor([1,2,3])

# 从 Python 列表创建张量list_ = [4,5,6]
tensor = torch.tensor(list_)
print(tensor) # tensor([4,5,6])

####1.2 `torch.zeros()` 和 `torch.ones()`

`torch.zeros()` 和 `torch.ones()` 分别用于创建全零张量和全一张量。
import torch# 创建全零张量zero_tensor = torch.zeros(3)
print(zero_tensor) # tensor([0.,0.,0.])

# 创建全一张量one_tensor = torch.ones(4)
print(one_tensor) # tensor([1.,1.,1.,1.])

####1.3 `torch.randn()` 和 `torch.normal()`

`torch.randn()` 和 `torch.normal()` 分别用于创建标准正态分布和均值为μ、方差为σ2的正态分布。
import torch# 创建标准正态分布张量randn_tensor = torch.randn(2,3)
print(randn_tensor)

# 创建均值为0、方差为1的正态分布张量normal_tensor = torch.normal(mean=0, std=1, size=(2,3))
print(normal_tensor)

####1.4 `torch.cat()` 和 `torch.stack()`

`torch.cat()` 和 `torch.stack()` 分别用于沿着维度拼接张量。
import torch# 创建两个张量tensor1 = torch.tensor([1,2])
tensor2 = torch.tensor([3,4])

# 使用 torch.cat() 拼接张量cat_tensor = torch.cat((tensor1, tensor2), dim=0)
print(cat_tensor) # tensor([1,2,3,4])

# 使用 torch.stack() 拼接张量stack_tensor = torch.stack((tensor1, tensor2))
print(stack_tensor) # tensor([[1,2], [3,4]])

####1.5 `torch.index_select()` 和 `torch.gather()`

`torch.index_select()` 和 `torch.gather()` 分别用于根据索引选择张量中的元素。
import torch# 创建一个张量tensor = torch.tensor([[1,2], [3,4]])

# 使用 torch.index_select() 根据索引选择元素index_tensor = torch.tensor([0,1])
select_tensor = torch.index_select(tensor, dim=0, index=index_tensor)
print(select_tensor) # tensor([[1,2], [3,4]])

# 使用 torch.gather() 根据索引选择元素gather_tensor = torch.gather(tensor, dim=0, index=index_tensor)
print(gather_tensor) # tensor([[1,2], [3,4]])

####1.6 `torch.matmul()` 和 `torch.mm()`

`torch.matmul()` 和 `torch.mm()` 分别用于计算张量的矩阵乘法。
import torch# 创建两个张量tensor1 = torch.tensor([[1,2], [3,4]])
tensor2 = torch.tensor([[5,6], [7,8]])

# 使用 torch.matmul() 计算矩阵乘法matmul_tensor = torch.matmul(tensor1, tensor2)
print(matmul_tensor)

# 使用 torch.mm() 计算矩阵乘法mm_tensor = torch.mm(tensor1, tensor2)
print(mm_tensor)

####1.7 `torch.t()` 和 `torch.transpose()`

`torch.t()` 和 `torch.transpose()` 分别用于计算张量的转置。
import torch# 创建一个张量tensor = torch.tensor([[1,2], [3,4]])

# 使用 torch.t() 计算转置t_tensor = torch.t(tensor)
print(t_tensor) # tensor([[1,3], [2,4]])

# 使用 torch.transpose() 计算转置transpose_tensor = torch.transpose(tensor, dim0=0, dim1=1)
print(transpose_tensor) # tensor([[1,3], [2,4]])

####1.8 `torch.sum()` 和 `torch.prod()`

`torch.sum()` 和 `torch.prod()` 分别用于计算张量的和和积。
import torch# 创建一个张量tensor = torch.tensor([1,2,3])

# 使用 torch.sum() 计算和sum_tensor = torch.sum(tensor)
print(sum_tensor) # tensor(6)

# 使用 torch.prod() 计算积prod_tensor = torch.prod(tensor)
print(prod_tensor) # tensor(6)

####1.9 `torch.mean()` 和 `torch.median()`

`torch.mean()` 和 `torch.median()` 分别用于计算张量的平均值和中位数。
import torch# 创建一个张量tensor = torch.tensor([1,2,3])

# 使用 torch.mean() 计算平均值mean_tensor = torch.mean(tensor)
print(mean_tensor) # tensor(2.)

# 使用 torch.median() 计算中位数median_tensor = torch.median(tensor)
print(median_tensor) # tensor(2.)

####1.10 `torch.std()` 和 `torch.var()`

`torch.std()` 和 `torch.var()` 分别用于计算张量的标准差和方差。
import torch# 创建一个张量tensor = torch.tensor([1,2,3])

# 使用 torch.std() 计算标准差std_tensor = torch.std(tensor)
print(std_tensor) # tensor(0.8165)

# 使用 torch.var() 计算方差var_tensor = torch.var(tensor)
print(var_tensor) # tensor(0.6667)

####1.11 `torch.max()` 和 `torch.min()`

`torch.max()` 和 `torch.min()` 分别用于计算张量的最大值和最小值。
import torch# 创建一个张量tensor = torch.tensor([1,2,3])

# 使用 torch.max() 计算最大值max_tensor = torch.max(tensor)
print(max_tensor) # tensor(3)

# 使用 torch.min() 计算最小值min_tensor = torch.min(tensor)
print(min_tensor) # tensor(1)

####1.12 `torch.argmin()` 和 `torch.argmax()`

`torch.argmin()` 和 `torch.argmax()` 分别用于计算张量的索引最大值和最小值。
import torch# 创建一个张量tensor = torch.tensor([1,2,3])

# 使用 torch.argmin() 计算索引最大值argmin_tensor = torch.argmin(tensor)
print(argmin_tensor) # tensor(0)

# 使用 torch.argmax() 计算索引最小值argmax_tensor = torch.argmax(tensor)
print(argmax_tensor) # tensor(2)

####1.13 `torch.allclose()` 和 `torch.isclose()`

`torch.allclose()` 和 `torch.isclose()` 分别用于检查两个张量是否相等。
import torch# 创建两个张量tensor1 = torch.tensor([1,2])
tensor2 = torch.tensor([1.000001,2])

# 使用 torch.allclose() 检查是否相等allclose_tensor = torch.allclose(tensor1, tensor2)
print(allclose_tensor) # tensor(True)

# 使用 torch.isclose() 检查是否相等isclose_tensor = torch.isclose(tensor1, tensor2)
print(isclose_tensor) # tensor(True)

####1.14 `torch.any()` 和 `torch.all()`

`torch.any()` 和 `torch.all()` 分别用于检查张量中是否有元素为True或所有元素都为True。
import torch# 创建一个张量tensor = torch.tensor([True, False])

# 使用 torch.any() 检查是否有元素为Trueany_tensor = torch.any(tensor)
print(any_tensor) # tensor(True)

# 使用 torch.all() 检查所有元素都为Trueall_tensor = torch.all(tensor)
print(all_tensor) # tensor(False)

####1.15 `torch.isnan()` 和

其他信息

其他资源

Top