首页 > 其他分享 >PyTorch 中常用的函数方法

PyTorch 中常用的函数方法

时间:2024-10-28 20:48:40浏览次数:8  
标签:常用 tensor torch 张量 维度 PyTorch print 函数

文章目录


PyTorch是一个广泛使用的深度学习框架,它提供了丰富的函数和方法来处理张量、构建和训练神经网络。以下是一些PyTorch中常用的函数和方法:

一、张量操作

  1. 创建张量

    • torch.tensor(): 从数据(如列表或NumPy数组)创建张量。
    • torch.full(): 用指定值填充指定大小的张量。
    • torch.zeros(): 创建全零张量。
    • torch.ones(): 创建全一张量。
    • torch.randn(): 创建符合标准正态分布的随机张量。
  2. 张量形状和维度变换

    • view(): 改变张量的形状,不改变其数据。
    • t(): 对二维张量进行转置。
    • permute(): 重新排列张量的维度。
    • unsqueeze(): 增加张量的维度。
    • squeeze(): 去除张量中维度为1的维度。
    • transpose(): 交换张量的两个维度。
  3. 张量连接和分割

    • cat(): 沿指定维度连接张量。
    • stack(): 沿新维度连接张量。
    • chunk(): 将张量均匀分割成若干小块。
    • split(): 根据给定的分割大小或索引列表分割张量。
  4. 索引和切片

    • 使用索引和切片操作来访问张量的元素或子张量。
  5. 数学运算

    • 张量支持基本的数学运算,如加法、减法、乘法、除法等。
    • torch.sum(): 计算张量的元素和。
    • torch.mean(): 计算张量的平均值。
    • torch.max(): 返回张量中的最大值及其索引。
    • torch.min(): 返回张量中的最小值及其索引。
    • torch.topk(): 返回张量中指定维度上前k个最大的元素。

二、神经网络构建和训练

  1. 参数初始化

    • 使用nn.init模块中的函数(如normal_)来初始化神经网络的参数。
  2. 激活函数

    • ReLU(): 线性整流函数。
    • sigmoid(): S型函数,将输入映射到(0,1)之间。
    • tanh(): 双曲正切函数,将输入映射到(-1,1)之间。
  3. 损失函数

    • nn.MSELoss(): 均方误差损失。
    • nn.CrossEntropyLoss(): 交叉熵损失,常用于分类任务。
    • nn.CTCLoss(): 连接时序分类损失,用于处理序列数据。
  4. 优化器

    • optim.SGD(): 随机梯度下降优化器。
    • optim.Adam(): Adam优化器,一种基于一阶和二阶矩估计的自适应学习率优化算法。
  5. 训练过程

    • 使用model.train()model.eval()来切换模型的训练模式和评估模式。
    • 使用optimizer.zero_grad()来清除之前的梯度。
    • 使用loss.backward()来计算损失函数的梯度。
    • 使用optimizer.step()来更新模型的参数。
  6. 数据加载和预处理

    • 使用torchvision.transforms模块中的函数(如ToTensor()Normalize()等)来预处理图像数据。
    • 使用DataLoader来加载数据集,支持批量处理、打乱数据顺序等功能。

三、其他常用函数和方法

  1. 设备管理

    • torch.device(): 指定张量或模型所在的设备(CPU或GPU)。
    • torch.cuda.is_available(): 检查CUDA是否可用。
  2. 随机数和种子

    • torch.manual_seed(seed): 为CPU设置随机数种子。
    • torch.cuda.manual_seed_all(seed): 为所有GPU设置随机数种子。
  3. 梯度管理

    • tensor.detach(): 返回一个从当前计算图中分离的新张量,不再需要计算梯度。
    • tensor.requires_grad_(): 就地设置张量是否需要计算梯度。
    • with torch.no_grad(): 临时禁用梯度计算,用于推理或评估模式。
  4. 模型保存和加载

    • 使用torch.save()torch.load()来保存和加载模型参数。

PyTorch的函数和方法非常丰富,上述列举的只是一些常用的部分。在实际应用中,根据具体需求选择合适的函数和方法是非常重要的。

示例代码

一、张量操作

import torch


print("----------创建张量----------")

# 从列表创建张量
tensor_from_list = torch.tensor([1, 2, 3, 4])
print(tensor_from_list)

# 创建全零张量
zeros_tensor = torch.zeros((2, 3))
print(zeros_tensor)

# 创建符合标准正态分布的随机张量
randn_tensor = torch.randn(2, 3)
print(randn_tensor)

print("----------张量形状和维度变换----------")

# 改变张量的形状
reshaped_tensor = tensor_from_list.view(-1, 2)  # -1表示自动计算该维度大小
print(reshaped_tensor)

# 转置二维张量
transposed_tensor = reshaped_tensor.t()
print(transposed_tensor)

# 增加张量的维度
unsqueeze_tensor = tensor_from_list.unsqueeze(0)  # 在第0维增加一个维度
print(unsqueeze_tensor.shape)

# 重新排列张量的维度
permute_1 = unsqueeze_tensor.permute(1, 0)
print(permute_1)

# 去除维度为1的维度
squeeze_tensor = unsqueeze_tensor.squeeze(0)
print(squeeze_tensor.shape)

print("----------张量连接----------")

# 沿第0维连接两个张量
tensor1 = torch.tensor([[1, 2], [3, 4]])
tensor2 = torch.tensor([[5, 6], [7, 8]])
concatenated_tensor = torch.cat((tensor1, tensor2), dim=0)
print(concatenated_tensor)

二、神经网络构建和训练

import torch.nn as nn  
import torch.nn.functional as F  

print("----------激活函数----------")

# 使用ReLU激活函数  
relu = nn.ReLU()  
input_tensor = torch.tensor([-1.0, 0.0, 1.0, 2.0])  
output_tensor = relu(input_tensor)  
print(output_tensor)  
  
# 使用sigmoid激活函数  
sigmoid = nn.Sigmoid()  
output_tensor = sigmoid(input_tensor)  
print(output_tensor)

print("----------损失函数和优化器----------")

# 假设有一个简单的线性模型  
model = nn.Linear(2, 1)  # 输入特征数为2,输出特征数为1  
  
# 损失函数  
criterion = nn.MSELoss()  
  
# 优化器  
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)  
  
# 假设有一些输入和目标数据  
inputs = torch.tensor([[1.0, 2.0], [2.0, 3.0]], requires_grad=True)  
targets = torch.tensor([[2.0], [4.0]])  
  
# 前向传播  
outputs = model(inputs)  
loss = criterion(outputs, targets)  
  
# 反向传播和优化  
optimizer.zero_grad()  
loss.backward()  
optimizer.step()  
  
print(loss.item())  # 打印损失值

三、其他常用函数和方法

import torch

"""   设备管理   """

# 检查CUDA是否可用  
if torch.cuda.is_available():  
    device = torch.device("cuda")  
    print("CUDA is available! Training on GPU.")  
else:  
    device = torch.device("cpu")  
    print("CUDA is not available. Training on CPU.")  
  
# 将模型移动到指定设备  
model.to(device)

""" 模型保存和加载 """

# 保存模型参数  
torch.save(model.state_dict(), "model.pth")  
  
# 加载模型参数  
model = nn.Linear(2, 1)  # 需要先创建一个相同结构的模型  
model.load_state_dict(torch.load("model.pth"))  
model.eval()  # 切换到评估模式

标签:常用,tensor,torch,张量,维度,PyTorch,print,函数
From: https://blog.csdn.net/weixin_73504499/article/details/143312638

相关文章

  • 介绍一下switch函数
    适合对象c语言初学者 总结语言用色,个人强调用红色,注意为易错点,若有问题请告诉我谢谢。(建议通过目录观看)。switch函数是一种用于多分支条件判断的控制语句,通过比较一个表达式和多个可能的值来决定执行哪个代码块。它通常用于取代多个if-else语句,以减少代码的复杂性和提高......
  • 【C++练习】基于函数嵌套调用的点餐流程
    题目:基于函数嵌套调用的点餐系统实现描述:        需要实现一个简化的点餐系统,该系统能够处理多位顾客的点餐、支付以及提供食物的过程。系统的主要流程通过函数嵌套调用来实现,包括展示菜单、点餐、生成账单、支付以及提供食物等功能。具体要求:菜单展示:使用 showMe......
  • Shodan(2)红队常用参数(详情见B站泷羽SEC)
    免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害,包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失等,不承担任何责任。所有使用本教程内容的个人或组织应自行承担全部风险。以CVE-2019-0708漏洞为例漏洞原理:存在......
  • Python小白学习教程从入门到入坑------第十六课 函数进阶 [作用域、匿名函数](语法基础
    一、作用域在Python中,作用域(Scope)指的是变量、函数和类等标识符可以被访问的代码区域。Python主要有四种作用域,分别是:局部作用域、全局作用域、嵌套作用域注意:1、函数间不能共享内部定义的变量格式2、函数内可以使用全局变量1.1局部作用域定义在函数或方法内部的变量和......
  • 测试常用授时NTP服务器与设置ESXI6.7的NTP服务[青锐CC]
    因为自己的ESXI电脑不经常用,不用了就关机,导致它的时间不准,就想让它能连接授时服务器自己校对时间。网上有很多流行的NTP服务器,有的能用有的已经不能用了,挑选了几个测试一下,看看哪些好用。一、挑选与测试NTP服务器1、ping连接NTP服务器网上推荐了很多NTP服务器,有国家的,有公......
  • retinaface模型实现人脸识别(pytorch)
    项目源码获取方式见文章末尾!回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。《------往期经典推荐------》项目名称1.【YOLO模型实现农作物病虫害虫识别带GUI界面】2.【卫星图像道路检测DeepLabV3Plus模型】3.【GAN模型实现二次元头像生成】4.......
  • GaussDB数据库基础函数介绍-上
    ​目录一、函数在数据库中的作用二、GaussDB常用基础函数介绍与示例1、数字操作函数2、时间和日期处理函数3、类型转换函数4、数组函数5、范围函数6、窗口函数7、聚集函数8、安全函数9、系统信息函数10、动态脱敏函数.Tip:由于篇幅缘故,“5.范围函数、6.窗口函数、7.......
  • PostGis函数
    几何构造ST_Collect —从一组几何创建一个GeometryCollection或Multi*几何。ST_LineFromMultiPoint —从MultiPoint几何图形创建LineString。ST_MakeEnvelope —从最小和最大坐标创建一个矩形Polygon。ST_MakeLine —从Point,MultiPoint或LineString几何形状创建线串。ST_Mak......
  • 随机变量是函数
    黄色框:样本空间S注意:样本空间S里面的元素可不是事件右边表格F -域这个集合里面的元素才是事件右边表格F -域这个集合里面的元素是事件,那么事件对应的概率P如何计算?分析:引入累计分布函数计算右边表格F -域这个集合里面的元素是事件,那有多少个元素呢?这个如果罗列发......
  • 在markdown上显示数学函数与数学函数图像
    前言这里分享数学函数与函数图像显示在markdown上的方式markdown编辑器Obsidian和Typora数学函数显示打开编辑器(这里以Typora为例)基础到可以忽略符号html中以'&'开头,以';'结尾的特殊符号是可以直接输入在编辑器上显示的图片上的显示结果即按照html源代码的格......