• 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代码的时候你就可以直接运行得到结果。对用户来说,PyT

  • 相关阅读:
    Java 基础 | Java 中引用与指针的关系
    MongoDB JAVA 管道聚合查询 aggregate
    开发工具——gcc/g++
    Android按钮 button
    关于EEGLAB安装时报错“未定义函数或者变量‘EEGLAB’”
    docker部署redis
    每日一道Java面试题:Java是值传递还是引用传递?
    git rebase master
    java毕业设计—— 基于java+JavaEE+jsp的售后服务管理系统设计与实现(毕业论文+程序源码)——售后服务管理系统
    Redis 7.0 源码环境搭建与阅读技巧
  • 原文地址:https://blog.csdn.net/flydreamforever/article/details/127043152