加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

发布时间:2020-07-16 03:52:51 所属栏目:创业 来源:站长网
导读:本文经AI新媒体量子位(公家号ID:QbitAI)授权转载,转载请接洽出处。 一向以来,PyTorch就以简朴又好用的特点,广受AI研究者的喜欢。 可是,一旦使命伟大化,就也许会产生一系列错误,耗费的时刻更长。 于是,就降生了这样一个友爱的PyTorch Lightning。

本文经AI新媒体量子位(公家号ID:QbitAI)授权转载,转载请接洽出处。

一向以来,PyTorch就以简朴又好用的特点,广受AI研究者的喜欢。

可是,一旦使命伟大化,就也许会产生一系列错误,耗费的时刻更长。

于是,就降生了这样一个“友爱”的PyTorch Lightning。

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

直接在GitHub上斩获6.6k星。

起首,它把研究代码与工程代码相疏散,还将PyTorch代码布局化,越发直观的揭示数据操纵进程。

这样,越发易于领略,不易堕落,原来很冗长的代码一下子就变得精练了,对AI研究者异常的友爱。

话不多说,我们就来看看这个轻量版的“PyTorch”。

关于Lightning

Lightning将DL/ML代码分为三种范例:研究代码、工程代码、非须要代码。

针对差异的代码,Lightning有差异的处理赏罚方法。

这里的研究代码指的是特定体系及其实习方法,好比GAN、VAE,这类的代码将由LightningModule直接抽象出来。

我们以MNIST天生为例。

l1 = nn.Linear(...) l2 = nn.Linear(...) decoder = Decoder()  x1 = l1(x) x2 = l2(x2) out = decoder(features, x)  loss = perceptual_loss(x1, x2, x) + CE(out, x) 

而工程代码是与培训此体系相干的全部代码,好比提前遏制、通过GPU分派、16位精度等。

我们知道,这些代码在大大都项目中都沟通,以是在这里,直接由Trainer抽象出来。

model.cuda(0) x = x.cuda(0)  distributed = DistributedParallel(model)  with gpu_zero: download_data()  dist.barrier() 

剩下的就长短须要代码,有助于研究项目,可是与研究项目无关,也许是搜查梯度、记录到张量板。此代码由Callbacks抽象出来。

# log samples z = Q.rsample() generated = decoder(z) self.experiment.log('images', generated) 

另外,它尚有一些的附加成果,好比你可以在CPU,GPU,多个GPU或TPU上实习模子,而无需变动PyTorch代码的一行;你可以举办16位精度实习,可以行使Tensorboard的五种方法举办记录。

这样说,也许不太明明,我们就来直观的较量一下PyTorch与PyTorch Lightning之间的不同吧。

PyTorch与PyTorch Lightning较量

直接上图。

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

我们就以构建一个简朴的MNIST分类器为例,从模子、数据、丧失函数、优化这四个要害部门入手。

模子

起首是构建模子,本次计一律个3层全毗连神经收集,以28×28的图像作为输入,将其转换为数字0-9的10类的概率漫衍。

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

两者的代码完全沟通。意味着,如果要将PyTorch模子转换为PyTorch Lightning,我们只需将nn.Module替代为pl.LightningModule

大概这时辰,你还看不出这个Lightning的神奇之处。不着急,我们接着看。

数据

接下来是数据的筹备部门,代码也是完全沟通的,只不外Lightning做了这样的处理赏罚。

它将PyTorch代码组织成了4个函数,prepare_data、train_dataloader、val_dataloader、test_dataloader

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

prepare_data

这个成果可以确保在你行使多个GPU的时辰,不会下载多个数据集可能对数据举办多重操纵。这样全部代码都确保要害部门只从一个GPU挪用。

这样就办理了PyTorch总是一再处理赏罚数据的题目,这样速率也就提上来了。

train_dataloader, val_dataloader, test_dataloader

每一个都认真返回响应的数据支解,这样就能很清晰的知道数据是怎样被操纵的,在以往的教程里,都险些看不到它们的是怎样操纵数据的。

另外,Lightning还应承行使多个dataloaders来测试或验证。

优化

接着就是优化。

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

差异的是,Lightning被组织到设置优化器的成果中。假如你想要行使多个优化器,则可同时返回两者。

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星丧失函数

对付n项分类,我们要计较交错熵丧失。两者的代码是完全一样的。

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

另外,尚有更为直观的——验证和实习轮回。

让PyTorch更精练,这款深度进修框架你值得拥有!GitHub 6.6k星

在PyTorch中,我们知道,必要你本身去构建for轮回,也许简朴的项目还好,可是一碰着越发伟大高级的项目就很轻易翻车了。

而Lightning里这些抽象化的代码,其背后就是由Lightning里强盛的trainer团队认真了。

PyTorch Lightning安装教程

看到这里,是不是也想安装下来试一试。

PyTorch Lightning安装异常简朴。

代码如下:

conda activate my_env pip install pytorch-lightning 

或在没有conda情形的环境下,可以在任那里所行使pip。

代码如下:

pip install pytorch-lightning  建设者也有大来头

William Falcon,PyTorch Lightning 的建设者,此刻在纽约大学的人工智能专业攻读博士学位,在《福布斯》接受AI特约作者。

2018年,从哥伦比亚大学计较机科学与统计学专业结业,本科时代,他还曾辅修数学。

此刻已得到Google Deepmind扶助攻读博士学位的奖学金,客岁还收到Facebook AI Research演习约请。

另外,他还曾是一个水师军官,接管过美国水师海豹突击队的实习。

 他们正在研究呼吸体系疾病与呼吸模式之间的接洽。也许会应用到的场景,是通过电话在诊断新冠症状。今朝,该团队还处在数据网络阶段。

公然,优越的人,干什么都是优越的。太息……

怎么样,是不是想试一试?赶忙戳下方链接下载来看看吧!

上手传送门

https://github.com/PyTorchLightning/pytorch-lightning

https://pytorch-lightning.readthedocs.io/en/latest/index.html

 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读