免费建靓号网站,html5 国内网站建设,著名的wordpress主题,开发工具控件怎么用本文章来源于对李沐动手深度学习代码以及原理的理解#xff0c;并且由于李沐老师的代码能力很强#xff0c;以及视频中讲解代码的部分较少#xff0c;所以这里将代码进行尽量逐行详细解释 并且由于pytorch的语法有些小伙伴可能并不熟悉#xff0c;所以我们会采用逐行解释小…本文章来源于对李沐动手深度学习代码以及原理的理解并且由于李沐老师的代码能力很强以及视频中讲解代码的部分较少所以这里将代码进行尽量逐行详细解释 并且由于pytorch的语法有些小伙伴可能并不熟悉所以我们会采用逐行解释小实验的方式来给大家解释代码
可能听说过深度学习的小伙伴们都知道在如今的年代深度学习早就是几乎人人都可以使用的玩意不再是以前只有世界顶级的高端实验室才有机会使用的有钱人的游戏。这几乎全部得益于我们GPU的问世
查看自己的CUDA版本
windows系统
我们可以了解到看李沐老师的课有很多人使用的并不是云服务器而是自己的本地开发环境所以我们专门分出windows版本的使用教程
第一步打开cmd
我们可以先按住winR键然后输入cmd接着就会出现下面这样的一个黑框
输入指令查询
我们在黑框中输入nvidia-smi。这个指令需要注意的地方是一定不要自己自作主张去添加空格 接着我们就可以看到如下的环境这里我们的Driver Version为528.92CUDA的版本为12.0
Jupyter Notebook查询
用这个查询就比较简单我们只需要在代码界面输入
!nvidia-smi同样需要注意的是不要自己加一些空格
导入模块以及查看CPU和GPU
import torch
from torch import nn
torch.device(cpu),torch.cuda.device(cuda)如果这里出现了报错或者其他的警告我们可以先暂时不管文章下面会继续解决
查看GPU个数以及修复BUG
torch.cuda.device_count()这段代码输入后大部分人会得到两种答案一种是确实返回了自己CUDA的个数还有一种就是自己原本有GPU的电脑但是这里返回的是0 如果小伙伴们是第一种情况的话那么问题不算特别大我们可以继续下面的操作这里我们会针对第二种情况提出解决办法
device_count()为0解决办法
在这种情况下大概率是pytorch的安装出现了问题我们可以重新安装一次pytorch pytorch下载地址pytorch的下载地址这个界面可能需要较长的时间打开如果显示连接失败的话可以多试几次或者进行科学上网 进入到官网后我们可以找到类似于下面的一个界面 我们一般选择Stable的Pytorch Build 然后根据你自己的系统选择Your OS 在安装包的选择上我们选择pip和conda都可以但是我个人建议选择pip因为pip可以使用一些其他的源例如清华源等等 我们这里需要讲解的是我们的Compute Platform的选择这里我们一定要选择CUDA版本的那么我们应该如何选择呢 还是回到上面我们查看CUDA版本的那个地方 我们可以看到我这里的CUDA的版本是12.0我们只可以选择Pytorch对应CUDA版本小于等于自己本地版本的 所以这里我们只能选择CUDA11.8版本 接着复制下面的Command然后到自己的环境下进行pip安装即可 安装完成之后在自己的环境下输入下面代码
torch.cuda.is_available()如果返回的是True说明安装成功cuda可以使用
寻找电脑的GPU
def try_gpu(i0):# 如果存在GPU就返回gpu(i)否则返回cpuif torch.cuda.device_count() i1:return torch.device(fcuda:{i})return torch.device(cpu)def try_all_gpus():# 返回所有的GPU如果不存在GPU就返回CPUdevices [torch.device(fcuda:{i}) for i in range(torch.cuda.device_count())]return devices if devices else [torch.device(cpu)]try_gpu(),try_gpu(10),try_all_gpus()这一段代码李沐老师的主要目的是为了看看自己计算机或者云服务器中是否存在GPU环境如果存在GPU环境的话就返回GPU如果不存在的话就返回CPU 我这边的运行结果为
(device(typecuda, index0),device(typecpu),[device(typecuda, index0)])可能让初学者有疑惑的是为什么我这里try_gpu(10)返回的是一个CPU那是因为我本地电脑只有一块3050的GPUtry_gpu(10)的意思是寻找第10块GPU而我电脑并没有10块GPU所以就默认返回CPU
数据转存到GPU
x torch.tensor([1,2,3])
x.device device(typecpu)这一段代码我们可以看出我们一般普通创建的变量都会优先创建在CPU的内存上那么如果我们需要将它们创建在我们的GPU上我们应该怎么做呢
X torch.ones(2,3,devicetry_gpu())
Xtensor([[1., 1., 1.],[1., 1., 1.]], devicecuda:0)我们修改device参数成功的将X存放在了GPU上面
神经网络与GPU
这一块将是我们后面的重点因为后面我们讲解卷积神经网络的时候需要进行大量的GPU的并行运算
net nn.Sequential(nn.Linear(3,1))
net net.to(devicetry_gpu())
net(X)
tensor([[0.7873],[0.7873]], devicecuda:0, grad_fnAddmmBackward0)net[0].weight.data.device
device(typecuda, index0)