PyTorch基础知识(1)— PyTorch框架介绍和安装步骤

news2024/10/2 20:28:27

前言:Hello大家好,我是小哥谈。PyTorch是一个开源的深度学习框架,它基于Python语言,并提供了高级的神经网络接口,可以用于构建和训练各种深度学习模型。它的设计理念是灵活性和易用性,并且提供了动态图的特性,使得用户可以根据需要自由地定义和修改计算图。Come on! 从本节课开始,让我们一起进入PyTorch的世界吧!🌈 

     目录

🚀1.PyTorch介绍

🚀2.PyTorch主要模块

🚀3.PyTorch安装步骤 

💥💥步骤1:下载和安装nvidia显卡驱动

💥💥步骤2:下载CUDA

💥💥步骤3:下载cuDNN

💥💥步骤4:安装cuda

💥💥步骤5:安装cuDNN

💥💥步骤6:CUDA安装测试

💥💥步骤7:安装Anaconda

💥💥步骤8:安装pyTorch

🚀1.PyTorch介绍

PyTorch是一个开源的Python机器学习库,其前身是2002年诞生于纽约大学的Torch。它是美国Facebook公司使用Python语言开发的一个深度学习的框架,2017年1月,Facebook人工智能研究院(FAIR)在GitHub上开源了PyTorch。PyTorch不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的

PyTorch基于Python语言,并提供了高级的神经网络接口,可以用于构建和训练各种深度学习模型。它的设计理念是灵活性易用性,并且提供了动态图的特性,使得用户可以根据需要自由地定义和修改计算图。在PyTorch中,计算图由张量(Tensor)函数(Function)组成。张量是一种多维数组,类似于NumPy的数组,可以在GPU上进行加速计算。函数则表示张量之间的操作,当张量通过函数进行计算时,会构建一个计算图。这个计算图可以自动求导,即计算张量对于某个变量的导数,这对于训练神经网络非常重要

PyTorch还提供了丰富的工具和库,用于数据加载、模型构建、优化器、损失函数等等,使得用户可以快速地构建和训练各种深度学习模型。此外,PyTorch也支持分布式训练和部署到生产环境中。

PyTorch提供了两个高级功能:

🍀(1)具有强大 的GPU加速的张量计算(如Numpy);

🍀(2)包含自动求导系统的深度神经网络。

目前,很多知名公司都在使用PyTorch,除了Facebook之外,Twitter、GMU和Salesforce等机构也都采用了PyTorch。TensorFlow和Caffe都是命令式的编程语言,而且是静态的,即首先必须构建一个神经网络,然后一次又一次地使用相同的结构,如果想要改变网络的结构,就必须从头开始。但是对于PyTorch,通过反向求导技术,可以让你零延迟地任意改变神经网络的行为,而且其实现速度快。正是这一灵活性是PyTorch对比TensorFlow的最大优势。另外,PyTorch的代码对比TensorFlow而言,更加简洁直观,底层代码也更容易看懂,这对于使用它的人来说肯定是一件令人激动的事。

PyTorch特点:

(1)简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子,简洁的设计带来的另外一个好处就是代码易于理解。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。

(2)速度:PyTorch的灵活性不以牺牲速度为代价,在许多评测中,PyTorch 的速度表现胜过 TensorFlow和Keras 等框架。

(3)易用:PyTorch是所有的框架中面向对象设计的最优雅的一个。PyTorch的面向对象的接口设计来源于Torch,而Torch的接口设计以灵活易用而著称,Keras作者最初就是受Torch的启发才开发了Keras。PyTorch继承了Torch的衣钵,尤其是API的设计和模块的接口都与Torch高度一致。PyTorch的设计最符合人们的思维,它让用户尽可能地专注于实现自己的想法,即所思即所得,不需要考虑太多关于框架本身的束缚。

PyTorch优势:

(1)支持GPU

(2)灵活,支持动态神经网络

(3)底层代码易于理解

(4)命令式体验

(5)自定义扩展

当然,现今任何一个深度学习框架都有其缺点,PyTorch也不例外,对比TensorFlow,其全面性处于劣势,目前PyTorch还不支持快速傅里叶、沿维翻转张量和检查无穷与非数值张量;针对移动端、嵌入式部署以及高性能服务器端的部署,其性能表现有待提升;其次因为这个框架较新,使得他的社区没有那么强大,在文档方面其C库大多数没有文档

总的来说,PyTorch是一个功能强大、灵活易用的深度学习框架,被广泛应用于学术界和工业界。它提供了丰富的功能和接口,使得用户可以更加方便地进行深度学习研究和应用开发。

解释:♨️♨️♨️

动态图:编好程序即可执行。

静态图:先搭建计算图,后运行;允许编译器进行优化,另外静态图代码编程复杂,调试不乐观。

说明:♨️♨️♨️

PyTorch官网:PyTorch

PyTorch文档:主页 - PyTorch中文文档 


🚀2.PyTorch主要模块

torch模块 包含激活函数和主要的张量操作          
torch.Tensor模块 定义了张量的数据类型(整型、浮点型等),另外张量的某个类方法会返回新的张量,如果方法后缀带下划线,就会修改张量本身。比如Tensor.add是当前张量和别的张量做加法,返回新的张量。如果是ensor.add_就是将加和的张量结果赋值给当前张量。
torch.cuda定义了CUDA运算相关的函数。如检查CUDA是否可用及序号,清除其缓存、设置GPU计算流stream等。
torch.nn 神经网络模块化的核心,包括卷积神经网络nn.ConvNd和全连接层(线性层)nn.Linear等,以及一系列的损失函数。
torch,nn.functional定义神经网络相关的函数,例如卷积函数、池化函数、log_softmax函数等部分激活函数。torch.nn模块一般会调用torch.nn.functional的函数。
torch.nn.init权重初始化模块。包括均匀初始化torch.nn.init.uniform_和正态分布归一化torch.nn.init.normal_(_表示直接修改原张量的数值并返回)
torch.optim定义一系列优化器,如optim.SGD、optim.Adam、optim.AdamW等。以及学习率调度器torch.optim.lr_scheduler,并可以实现多种学习率衰减方法等。具体参考官方教程。
torch.autograd自动微分算法模块。定义一系列自动微分函数,例如torch.autograd.backward反向传播函数和torch.autograd.grad求导函数(一个标量张量对另一个张量求导),以及设置不求导部分。
torch.distributed分布式计算模块,设定并行运算环境。
torch.distributions强化学习等需要的策略梯度法(概率采样计算图) 无法直接对离散采样结果求导,这个模块可以解决这个问题
torch.hub提供一系列预训练模型给用户使用。torch.hub.list获取模型的checkpoint,torch.hub.load来加载对应模型。
torch.random保存和设置随机数生成器。manual_seed设置随机数种子,initial_seed设置程序初始化种子。set_rng_state设置当前随机数生成器状态,get_rng_state获取前随机数生成器状态。设置统一的随机数种子,可以测试不同神经网络的表现,方便进行调试。
torch.jit动态图转静态图,保存后被其他前端支持(C++等)。关联的还有torch.onnx(深度学习模型描述文件,用于和其它深度学习框架进行模型交换)
torch.utils.benchmark记录深度学习模型中各模块运行时间,通过优化运行时间,来优化模型性能
torch.utils.checkpoint以计算时间换空间,优化模型性能。因为反向传播时,需要保存中间数据,大大增加内存消耗。此模块可以记录中间数据计算过程,然后丢弃中间数据,用的时候再重新计算。这样可以提高batch_size,使模型性能和优化更稳定。
torch.utils.data主要是Dataset和DataLoader。
torch.utils.tensorboardpytorch对tensorboard的数据可视化支持工具。显示模型训练过程中的损失函数和张量权重的直方图,以及中间输出的文本、视频等。方便调试程序。

🚀3.PyTorch安装步骤 

💥💥步骤1:下载和安装nvidia显卡驱动

首先要在设备管理器中查看你的显卡型号,比如在这里可以看到我的显卡型号为Titan XP。

NVIDIA 驱动下载:官方驱动 | NVIDIA

下载对应你的英伟达显卡驱动。

下载之后就是简单的下一步直到完成。

完成之后,在cmd中输入执行:👇

nvidia-smi

如果有错误: 'nvidia-smi' 不是内部或外部命令,也不是可运行的程序 或批处理文件

把C:\Program Files\NVIDIA Corporation\NVSMI添加到环境变量的path中。再重新打开cmd窗口。

如果输出下图所示的显卡信息,说明你的驱动安装成功。👇

💥💥步骤2:下载CUDA

CUDA下载链接:CUDA Toolkit 12.2 Update 2 Downloads | NVIDIA Developer

下载后得到文件:cuda_10.2.89_441.22_win10.exe

💥💥步骤3:下载cuDNN

cudnn下载地址:CUDA Deep Neural Network (cuDNN) | NVIDIA Developer

需要有账号

下载后得到文件:cudnn-10.2-windows10-x64-v7.6.5.32.zip

💥💥步骤4:安装cuda

(1) 将cuda运行安装,建议默认路径

安装时可以勾选Visual Studio Integration

(2) 安装完成后设置环境变量

计算机上点右键,打开属性->高级系统设置->环境变量,可以看到系统中多了CUDA_PATHCUDA_PATH_V10_2两个环境变量。

接下来,还要在系统中添加以下几个环境变量: 这是默认安装位置的路径: C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2 CUDA_LIB_PATH = %CUDA_PATH%\lib\x64 CUDA_BIN_PATH = %CUDA_PATH%\bin CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64 CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

在系统变量 Path 的末尾添加:

%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;

再添加如下5条(默认安装路径):

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64 C:\Program Files\NVIDIA

GPU Computing Toolkit\CUDA\v10.2\include C:\Program Files\NVIDIA GPU Computing

Toolkit\CUDA\v10.2\extras\CUPTI\lib64 C:\ProgramData\NVIDIA Corporation\CUDA

Samples\v10.2\bin\win64 C:\ProgramData\NVIDIA Corporation\CUDA

Samples\v10.2\common\lib\x64

💥💥步骤5:安装cuDNN

复制cudnn文件

对于cudnn直接将其解开压缩包,然后需要将bin、include、lib中的文件复制粘贴到cuda的文件夹下👇

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2

💥💥步骤6:CUDA安装测试

最后测试cuda是否配置成功:

打开cmd执行:

nvcc -V

即可看到cuda的信息

💥💥步骤7:安装Anaconda

Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux、Mac、Windows,包含了众多流行的科学计算、数据分析的 Python 包。

(1)下载安装包

Anaconda下载Windows版:Free Download | Anaconda

(2)然后安装Anaconda

(3)添加Aanaconda国内镜像配置

清华TUNA提供了 Anaconda 仓库的镜像,运行以下命令:

conda config --add channels 
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels 
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

💥💥步骤8:安装pyTorch

如果使用YOLOv5版本v4.0以上的代码,PyTorch1.6 改为 PyTorch1.7。

注意:需要安装PyTorch1.7以上的版本

创建虚拟环境,环境名字可自己确定,这里本人使用 pytorch1.7作为环境名:

conda create -n pytorch1.7 python=3.8

安装成功后激活PyTorch1.7环境:

conda activate pytorch1.7

在所创建的 PyTorch环境下安装 PyTorch的1.7版本, 执行命令:

conda install pytorch torchvision cudatoolkit=10.2 -c pytorch

注意:10.2处应为自己电脑上的cuda版本号


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/983174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++入门介绍之“栈”

1.1栈的定义 栈(stack)是一种只能在一端进行插入或删除的线性表 下面是一些基础概念 栈顶(top) : 表中允许进行插入、删除操作的线性表栈底(bottom):表的另一端空栈 :栈中没有数据元素进栈/入栈&#xf…

如何统计网站的访问量

本文介绍的是使用redis的HyperLoglog实现uv的统计功能。 背景 首先我们先明确一下uv这个名词代表的实际意义。uv代表的是通过网页访问浏览的人数,和文章的阅读量差不多,但是需要注意的是,一个人即使是多次访问,也只算一次。 所…

开发一个android应用需要哪些库?

目录 开发应用常用库 沉浸式体验 下拉刷新 数据库 网络访问 升级 开发应用常用库 随着手机普及,应用无处不在,我们生活也离不开应用了。 那么,如果你想从零开始做一个应用,我们一般会经过哪些阶段,用到哪些库呢…

揭秘外卖平台的附近公里设计

背景 相信大家都有点外卖的时候去按照附近公里排序的习惯,那附近的公里是怎么设计的呢?今天shigen带你一起揭秘。 分析 我们先明确一下需求,每个商家都有一个地址对吧,我们也有一个地址,我们点餐的时候,…

【Spring 事务和事务传播机制】

目录 1 事务概述 1.1 为什么需要事务 1.2 事务的特性 1.3 Spring 中事务的实现 2 Spring 声明式事务 2.1 Transactional 2.2 Transactional 的作用范围 2.3 Transactional 的各种参数 2.3.1 ioslation 2.4 事务发生了异常,也不回滚的情况 异常被捕获时 3 事务的传…

运维Shell脚本小试牛刀(七):在函数文脚本件中调用另外一个脚本文件中函数|函数递归调用|函数后台执行

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0); pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

手写Spring:第8章-初始化和销毁方法

文章目录 一、目标:初始化和销毁方法二、设计:初始化和销毁方法三、实现:初始化和销毁方法3.1 工程结构3.2 Spring应用上下文和Bean对象扩展初始化和销毁类图3.3 定义初始化和销毁方法的接口3.3.1 定义初始化接口3.3.2 定义销毁接口3.3.3 定义…

【 OpenGauss源码学习 —— 列存储(analyze)(三)】

列存储(analyze) acquire_sample_rows 函数RelationGetNumberOfBlocks 函数BlockSampler_Init 函数anl_init_selection_state 函数BlockSampler_GetBlock 函数ReadBufferExtendedPageGetMaxOffsetNumber 函数HeapTupleSatisfiesVacuum 函数heapCopyTuple…

微软8月系统更新引发问题:虚拟内存分页文件出现错误

微软的八月系统更新引发了一系列问题,其中包括“UNSUPPORTED_PROCESSOR”蓝屏错误和文件管理器故障。尽管微软已经修复了前者,但据国外科技媒体Windows Latest报道,仍有用户反馈在非微星设备上出现“fault in nonpaged area”蓝屏错误。 如果…

信息技术 安全技术 信息安全管理测量

声明 本文是学习信息技术 安全技术 信息安全管理 测量. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 范围 为了评估按照GB/T 22080-2008规定实施的信息安全管理体系(Information Security Management System,简称ISMS&#…

STM32移植FAT文件系统

所谓“移植”,就是打通FAT源码和物理设备之间的软件接口。 FAT源码早就被公益组织给写好了,直接下载源码。但是FAT作为顶层应用程序,它需要面对的底层物理设备是不确定的,那么底层的物理设备驱动程序就需要程序员来自己写。物理设…

VMware虚拟机挂起后再关机出现问题,连接不上外网解决方法,ifconfig无ens33

原文地址 Centos7 重启后ens33消失(外部连接不上)Centos7 重启后ens33消失(外部连接不上)_ens33不见了_瘦身小蚂蚁的博客-CSDN博客 解决方法:执行以下4个命令。 systemctl stop NetworkManager # 关闭NetworkManage…

《DevOps实践指南》- 读书笔记(二)

DevOps实践指南 Part 2 从何处开始5. 选择合适的价值流作为切入点5.1 绿地项目与棕地项目5.2 兼顾记录型系统和交互型系统5.3 从最乐于创新的团队开始5.4 扩大 DevOps 的范围5.5 小结 6. 理解、可视化和运用价值流6.1 确定创造客户价值所需的团队6.2 针对团队工作绘制价值流图6…

优思学院|精益生产与柔性制造:现代制造业的双重理念

现代制造业正不断演进,出现了许多新的生产理念和方法。在这其中,精益生产和柔性制造是两个引人注目且重要的理念。这两者不仅对企业的生产流程产生了深远的影响,还在提高效率、适应市场需求方面发挥着关键作用。 理念背景和核心原则 精益生…

pcd格式转ot/bt

1.具体实现可以看高博的bloghttps://www.cnblogs.com/gaoxiang12/p/5041142.html 2.问题:在编译octomap_tutor 源码时会报错。 修改方法:把cmakelists.txt里的c11改成c14

Android 文字转语音播放实现

1,TextToSpeech类是android自带的,但是部分设备需要支持TTS需要增加语音库,我使用的是讯飞语音(离线的哦)。请自行下载并安装讯飞语音APK,然后到系统设置中设置TTS功能默认使用该选项。有自带TTS库的可以省…

数字图像处理-图像压缩

数字图像处理-图像压缩 一、图像压缩1.1 图像压缩的意义1.2 图像的冗余信息1.2.1 编码冗余1.2.2 空间冗余1.2.3 时间冗余 二、一些基本的压缩方法2.1 霍夫曼编码2.2 行程编码2.3 算术编码2.4 LZW编码 三、数字图像水印3.1 简单的可见水印3.2LSB不可见水印 一、图像压缩 1.1 图…

亚马逊美国站干粉灭火器UL安全测试标准要求UL299测试报告

UL299干粉灭火器是一种常见的灭火设备,外观一般为红色罐体,装有干粉灭火剂。它主要以高速喷射干粉灭火剂来抑制火灾并起到灭火作用。该灭火器采用压力容器和喷射装置,具有紧凑结构、方便携带等特点。对于想要在亚马逊美国站上架干粉灭火器的卖…

SpingBoot整合Sa-Token框架(1)

一、文档参考:框架介绍 (sa-token.cc) 框架生态——开源项目 (sa-token.cc) 二、与SpingBoot整合 1、创建项目 在 IDE 中新建一个 SpringBoot 项目,例如:sa-token-demo-springboot(不会的同学请自行百度或者参考:Sp…

在EC2上对SELinux故障进行紧急恢复以及排查的思路及方法

概述 SELinux,全称Security-Enhanced Linux,是一个为系统提供强制访问控制机制的安全模块,安装并启用SELinux模块的操作系统会为每个进程和系统资源打上一个特殊的安全标记,称为SELinux上下文,并根据SELinux上下文信息…