浅析pytorch中的常见函数和方法

一、背景

        pytorch是深度学习的重要建模工具,也几乎是人工智能工程师必须掌握的一大法宝。在建模的过程中,pytorch提供了很多高效的函数以及方法便于我们对数据、模型进行处理。为了避免重复造轮子,我们来盘点下pytorch常用的函数及方法。

二、常见函数及方法

1、张量操作

  • torch.tensor(data):创建一个新的张量。
  • tensor.numpy():将PyTorch张量转换为NumPy数组。
  • tensor.detach():返回一个新的张量,与当前计算图断开连接,不会在梯度传播中跟踪。例如,在模型评估阶段,我们需要对模型的输出进行一些操作,但不希望这些操作影响模型的梯度时,使用detach()可以确保评估过程中的计算不会影响训练过程。此外,当我们需要将张量从一个设备(如GPU)移动到另一个设备(如CPU)时,detach()可以避免不必要的梯度计算。
import torch

# 创建一个需要梯度的张量
x = torch.randn(2, 2, requires_grad=True)
# 执行一些操作
y = x * x
# 将y从计算图中分离
z = y.detach()
z.requires_grad_()
# 对z进行操作不会影响x的梯度
z.sum().backward()  # 这不会在x上产生梯度
# 检查x的梯度
print(x.grad)  # None,因为没有对x进行需要梯度的计算
  • tensor.requires_grad_():设置张量,使其在计算图中跟踪梯度。
import torch

# 创建一个张量,默认不跟踪梯度
x = torch.randn(2, 2)
print(x.requires_grad)  # 输出: False

# 开启梯度跟踪
x.requires_grad_()  # 现在x将跟踪梯度
print(x.requires_grad)  # 输出: True
  • tensor.grad:获取或设置张量的梯度。
  • torch.no_grad()ÿ
PyTorch源码解读是一个系列文章,从底层的Tensor库开始,逐步解析神经网络算符、自动微分引擎Python扩展等核心源码。这个系列共有五篇文章,每篇都有大量的代码解析。如果在阅读过程中发现理解不当或表达不准确的地方,可以在评论区指出。\[1\] 在PyTorch框架中,有一个非常重要且实用的包叫做torchvision。该包由三个子包组成:torchvision.datasets、torchvision.modelstorchvision.transforms。这三个子包的具体介绍可以参考PyTorch官方文档中的链接:https://pytorch.org/docs/master/torchvision/datasets.html。\[2\] 最后一篇博客介绍了如何在Python中调用C++代码进行高效计算,以及如何与前面的C++代码进行交互。首先简单介绍了Python的C扩展通常的写法,然后以核心数据结构TensorStorage为例,展示了它们如何转换为Python类型。最后还稍微介绍了一下Python自动微分函数的实现。\[3\] 整个PyTorch源码的目录结构如下: - aten: C++ Tensor库 - c10: 包含一些Tensor实现 - caffe2: caffe2 - tools: 包含自动微分相关函数生成工具等 - torch: Python模块,包含了C++相关源码Python模块的实现 这个系列文章对PyTorch源码进行了详细解读,可以帮助读者更好地理解PyTorch的内部实现工作原理。 #### 引用[.reference_title] - *1* *3* [PyTorch源码浅析:简介](https://blog.youkuaiyun.com/Xixo0628/article/details/112602624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PyTorch源码解读(四)torchvision.models](https://blog.youkuaiyun.com/sinat_42239797/article/details/94329987)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值