Pytorch学习系列教程:入门简介

简介: 新的一年还是要肝起来啊,这个公众号节前节后沉寂了快两个月了,许久没更新原创推文,自己感觉不能再这样堕落下去了。所以最近一直在思考写些什么推文:既要符合当下工作所需,倒逼成长;也要于广大读者有益,而非单纯的推销运营。于是,终于决定“染指”深度学习方向,并打算先更新一波Pytorch学习教程。当然,这会是一个系列。

640.jpg


                                    torch,原意“火炬”


提及Pytorch就不得不先从深度学习开始讲起。从事数据相关岗位的都知道,深度学习是机器学习的一个子方向,其主要以神经网络为基础模块,通过灵活组合一定层数的网络实现特定的模型功能,尤其擅长于计算机视觉(CV)和自然语言处理(NLP)方向。其发展历史上,在经历了两次高潮和两次低谷之后,目前处于第三次高速发展的蓬勃期。


640.png


网图,侵删

这里,深度学习的深度主要体现为构建的模型层数较多,故称之为“深”;但其实这里隐藏着一个重要假设,就是构建的模型都以神经元作为网络的最小单元,所以严谨的讲应叫做基于神经网络的深度学习。自然,也可以不基于神经网络,比如周志华团队前几年探索提出了深度随机森林模型,可谓是提出了深度学习的一个新的研究思路。


从理论研究到工业应用,其中必然少不了成熟的工业级实现。对于经典的机器学习模型,那么必然人人皆知scikit-learn;而若提及深度学习,则相应的工具包则不那么“集中和统一”,甚至称得上是大厂纷争之地。其中,最具代表性和广泛使用的当属TensorFlow和Pytorch,前者源于google,后者发于Facebook;前者以工业应用居多,后者则流行于学术界。当然,单论学术界还是工业界而言,二者也没有明确的界限。


起初,在了解到TensorFlow广泛应用工业界,而自己早已远离院校所以就直接入坑了TensorFlow,当了一段时间的TF boy,尤其是了解到TensorFlow2.0克服了早期1.0版本饱受诟病的静态图问题,所以也不认为TensorFlow有啥缺点。但后来,随着学习的深入,加之通过周边同事的了解,发现Pytorch有着更为优秀的特点:比如与Numpy的设计更为接近,语法风格更加Pythonic等等。所以,个人也就果断转投Pytorch阵营。


本文作为第一篇,仅用来介绍Pytorch能干什么,以及对为什么这么设计的个人理解。


Torch是一个老牌的深度学习框架,最早是基于lua语言开发的,由于其开发语言的小众性,所以其发展和应用也是受到了很多限制。自从Facebook开源了Python生态圈的Torch工具包——Pytroch之后,其就一直是匹敌TensorFlow的一个重量级工具。目前Pytroch在GitHub上获得54k star(TensorFlow目前在GitGHub上获得163k star,差距还是比较大的,大概有3倍之多)。


也正是由于深度学习最广泛的舞台在于图像和语音以及文本等应用方向,所以与Pytorch配套的三个工具包以及一个模型服务工具包:

  • torchvision
  • torchtext
  • torchaudio


640.png

 当然,Pytorch仍然是基础和核心


作为一个深度学习工具包,Pytorch能用来干什么呢?这里引用官方文档对其定位的描述,广义来说有两方面功能:


640.png


即:

  • 支持GPU加速的Tensor计算能力
  • 支持自动求导的深度神经网络构建

那么问题来了:都说Pytorch是一个深度学习工具,为什么其核心功能设计为如上两点?对此,个人理解如下:


其一:Tensor是深度学习模型构建和训练的基础,其地位就好比是array之于Numpy、DataFrame之于Pandas,其本身是一种数据结构,但却构成了Pytorch的灵魂所在。这里,Tensor英文原义为“张量”,其实就是对应一个多维数组,本质上跟numpy的ndarray是一致的。


从这一角度来看,Pytorch可视作是numpy的升级版,这里的升级主要体现为可以利用GPU的强力并行计算能力。如果有Numpy基础,学习Pytorch其实可以很简单;另一方面,学Pytorch也完全可以作为是对Numpy的一个补充,而不去考虑构建深度学习模型的用途。

其二:Pytorch定位为一个深度学习工具,其更为主体的功能在于支持深度学习模型的构建和训练。与此同时,与经典机器学习中有成熟模型不同的是,深度学习网络大多没有固定的模型或范式,而一般由使用者将多个基础模块灵活搭配来组成(当然,其实也有一些成熟的模型,例如LeNet-5、AlexNet和VGGNet等,但更普遍的仍然需要使用者自己去定制),所以Pytorch对深度学习的支持不在于集成了多少成熟的模型,而在于提供了基础的深度学习模块,这些就好似脚手架一般,可以任意组合搭配,从而实现更为自由定制化的功能。


Pytorch功能还是比较丰富和繁杂的,最好的学习平台是查阅其官方文档,https://pytorch.org/。源于Pytroch群体的广泛性,目前其文档支持多种语言,包括中文文档在内,这也为自学者快速入门提供了更多渠道。我个人也是受益其中,后续的推文也将以此作为重要参考框架。


640.png


本篇推文就写这么多,对标从工具入门到模型建模,后续将每周更新一篇Pytorch学习系列推文。


640.png

目录
相关文章
|
1月前
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
158 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
2月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
314 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
1月前
|
并行计算 监控 搜索推荐
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
当处理大规模图数据时,复杂性难以避免。PyTorch-BigGraph (PBG) 是一款专为此设计的工具,能够高效处理数十亿节点和边的图数据。PBG通过多GPU或节点无缝扩展,利用高效的分区技术,生成准确的嵌入表示,适用于社交网络、推荐系统和知识图谱等领域。本文详细介绍PBG的设置、训练和优化方法,涵盖环境配置、数据准备、模型训练、性能优化和实际应用案例,帮助读者高效处理大规模图数据。
48 5
|
6月前
|
机器学习/深度学习 自然语言处理 算法
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
|
2月前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
477 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
|
6月前
|
机器学习/深度学习 算法 PyTorch
【从零开始学习深度学习】43. 算法优化之Adam算法【RMSProp算法与动量法的结合】介绍及其Pytorch实现
【从零开始学习深度学习】43. 算法优化之Adam算法【RMSProp算法与动量法的结合】介绍及其Pytorch实现
|
4月前
|
并行计算 Ubuntu PyTorch
Ubuntu下CUDA、Conda、Pytorch联合教程
本文是一份Ubuntu系统下安装和配置CUDA、Conda和Pytorch的教程,涵盖了查看显卡驱动、下载安装CUDA、添加环境变量、卸载CUDA、Anaconda的下载安装、环境管理以及Pytorch的安装和验证等步骤。
754 1
Ubuntu下CUDA、Conda、Pytorch联合教程
|
4月前
|
机器学习/深度学习 并行计算 PyTorch
PyTorch与DistributedDataParallel:分布式训练入门指南
【8月更文第27天】随着深度学习模型变得越来越复杂,单一GPU已经无法满足训练大规模模型的需求。分布式训练成为了加速模型训练的关键技术之一。PyTorch 提供了多种工具来支持分布式训练,其中 DistributedDataParallel (DDP) 是一个非常受欢迎且易用的选择。本文将详细介绍如何使用 PyTorch 的 DDP 模块来进行分布式训练,并通过一个简单的示例来演示其使用方法。
495 2
|
4月前
|
机器学习/深度学习 PyTorch 测试技术
深度学习入门:使用 PyTorch 构建和训练你的第一个神经网络
【8月更文第29天】深度学习是机器学习的一个分支,它利用多层非线性处理单元(即神经网络)来解决复杂的模式识别问题。PyTorch 是一个强大的深度学习框架,它提供了灵活的 API 和动态计算图,非常适合初学者和研究者使用。
57 0
|
5月前
|
机器学习/深度学习 并行计算 数据挖掘
🎓PyTorch深度学习入门课:编程小白也能玩转的高级数据分析术
【7月更文挑战第29天】踏入深度学习世界,新手也能用PyTorch解锁高级数据分析。
47 2