PyTorch源码学习系列 - 1.初识

本系列文章会优先发布于微信公众号和知乎,欢迎大家关注

微信公众号:小飞怪兽屋

知乎: PyTorch源码学习系列 - 1.初识 - 知乎 (zhihu.com)


目录

本系列的目的

PyTorch是什么?

我理解的PyTorch架构

PyTorch目录结构

第一次动手编译

如何调试程序


本系列的目的

平时工作中经常会用到PyTorch, 但由于工作性质,往往只停留在PyTorch的应用层面。某天突发奇想想研究学习下PyTorch的架构以及底层源码,毕竟做为一名算法工程师,算法能力和工程能力相辅相成,缺少工程能力的算法能力如空中楼阁,华而不实。无意中发现网上关于PyTorch源码的相关介绍非常少,很多都浅尝辄止,有的也仅仅介绍了部分Python源码。于是就创建了这一系列来记录自己的学习过程,同时也鞭策自己可以将这个系列一直写下去。哈哈~ 磨刀不误砍柴工,学习的目的也是为了更多的工作产出。

PyTorch是什么?

PyTorch是当下最流行的开源深度学习框架之一。由于其简单易用性,深受广大科研工作者的喜爱。其前身是一个以Lua语言为主的Torch项目。在2016年,Meta(原Facebook)公司基于Torch开发了基于Python的PyTorch框架,并于2017年1月将其开源。在2022年9月12日,Meta公司宣布将PyTorch项目归入Linux基金会旗下的PyTorch基金会管理。

PyTorch本身是一个Python扩展包,按照官方说法它主要具有以下两种特色:

  • 支持GPU加速的张量(Tensor)计算

  • 在一个类似磁带(前向和反向)的梯度自动计算(Autograd)系统上搭建深度神经网络

Tensor其实本质上就是一个多维数组。在数学上单个数据我们称之为标量,一维数据我们称之为向量,二维数据我们称之为矩阵。GPU就是图形处理单元,也就是我们平时说的显卡。它的优势在于它比CPU具有更快的浮点数运算能力,在游戏,科学计算,深度学习领域都有广泛的应用场景。

如果PyTorch仅是支持GPU加速的Tensor计算框架,那它也就是NumPy的替代品而已。其最核心的功能就是Autograd系统,目前深度学习就是基于梯度反向传播理论来达到网络的自我训练。PyTorch的Autograd系统是创建了一个动态的计算图,用户只需要关注前向计算网络搭建,PyTorch会自动根据动态计算图去反向计算梯度并更新网络权重。

在设计之初PyTorch并没打算仅成为一个绑定C++框架的Python包,它紧密地将C++框架集成到python中。你可以在使用PyTorch的同时也结合使用NumPy/SciPy/scikit-learn这些优秀的科学计算包,同时你也可以用Python编写你自己的神经网络层(PyTorch神经网络相关的代码基本上都是Python编写)。

基于以上特性,你可以很容易地通过PyTorch来快速实现自己的深度学习网络,并且PyTorch的代码调试也非常直观。正如前面所说,PyTorch的计算图是动态的,当你写下一行Python代码的时候你就可以直接运行得到结果。对用户来说࿰

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值