当前位置: 首页 > news >正文

PyTorch 1.6、TensorFlow 2.3、Pandas 1.1同日发布!都有哪些新特性?

作者 | 肖智清

出品 | AI科技大本营(ID:rgznai100)

7月29日,PyTorch 1.6、TenorFlow 2.3、Pandas 1.1恰巧同时发布。这三个库都是定期滚动更新,大约每个季度更新一次小版本。

在AI内卷化达到“灰飞烟灭”的今日,仅仅会对PyTorch或TensorFlow进行调用已经不具有竞争力。所有深度学习研发者都需要同时了解PyTorch和TensorFlow,并精通其中一种,需要同时了解PyTorch和TensorFlow的原因在于:(1) 绝大多数情况下研发人员并没有太多选择框架的自由。选择PyTorch还是TensorFlow主要取决于团队积累和项目基础设施情况;(2) 如果你已经达到可以为团体选框架的程度,那在做选择时则需要同时熟悉PyTorch和TensorFlow的生态,才能做出最佳选择。

精通PyTorch或是TensorFlow,则要求不仅仅会掉包调参,并且 (1) 具有较为丰富的分布式训练和调参经验,这个是目前大型研究必备技能;(2) 了解框架的内部实现,可以对框架的功能扩展或错误定位,能参与工程部署。而这两者都可以通过为PyTorch或TensorFlow贡献源码来积累经验(虽然前者可能需要依托实验室或大型企业的基础设施)。

说到PyTorch 1.6,它的最新特性也涉及到分布式训练、部署等内容。PyTorch 1.6相比于上一稳定版本的更新包括:


(1) 原生支持GPU混合精度训练(Automatic mixed precision,AMP),据说这个特性是NVIDIA团队加持的。

(2) 分布式训练和RPC通信:TensorPipe原生的支持张量。TensorPipe是PyTorch分布式训练的通信工具,详情可参阅GitHub:pytorch/tensorpipe。还有其他分布式并行训练(Distributed Data Parallel,DDP)和(Remote Procedural Call,RPC)包的改进。

(3) 复数张量运算和其他新的运算,如torch.logcumsumexp()、torch.logaddexp()、torch.rad2deg()、torch.deg2rad()、torch.arccosh()、torch.arcsinh()、torch.arctanh()等,新的激活层torch.nn.Hardswish。

(4) 从张量层面分析内存消耗。

 

PyTorch内存消耗分析示例

import torch

import torchvision.models as models

import torch.autograd.profiler as profiler

 

model = models.resnet18()

inputs = torch.randn(5, 3, 224, 224)

with profiler.profile(profile_memory=True, record_shapes=True) as prof:

    model(inputs)

 

# NOTE: some columns were removed for brevity

print(prof.key_averages().table(sort_by="self_cpu_memory_usage", row_limit=10))

# ---------------------------  ---------------  ---------------  ---------------

# Name                         CPU Mem          Self CPU Mem     Number of Calls

# ---------------------------  ---------------  ---------------  ---------------

# empty                        94.79 Mb         94.79 Mb         123

# resize_                      11.48 Mb         11.48 Mb         2

# addmm                        19.53 Kb         19.53 Kb         1

# empty_strided                4 b              4 b              1

# conv2d                       47.37 Mb         0 b              20

# ---------------------------  ---------------  ---------------  ---------------

 

PyTorch 1.6也有一些和之前版本不兼容的改进。在数值方面主要包括整数除法的运算结果的改变。

 

PyTorch除法行为变化示例

PyTorch 1.5.1行为

>>> torch.tensor(3) / torch.tensor(2)

../aten/src/ATen/native/BinaryOps.cpp:81: UserWarning: Integer

division of tensors using div or/ is deprecated, and in a future

release div will perform true division asinPython3.Use true_divide

or floor_divide (// in Python) instead.

tensor(1)

 

PyTorch 1.6行为

>>># NB: the following is equivalent to

>>># torch.floor_divide(torch.tensor(3), torch.tensor(2))

>>> torch.tensor(3) // torch.tensor(2)

tensor(1)

 

TF团队和PyTorch团队的更新侧重点大同小异,更新也主要在分布式、性能监控等方面。tf.distribute.TPUStrategy在TF2.3成为了稳定API,性能监控也不约而同的增强了对内存的监控。在部署方面,tf.lite大大增强,针对Android和iOS的CPU/GPU性能都有优化。

Pandas 1.1增加了许多方便的小函数。小编觉得最有用的两组更新是:(1) DataFrame.compare() 函数和Series.compare() 函数,可以很方便地比较两个DataFrame或是两个Series。(2) DataFrame排序可以基于关键字key了,排序灵活了不少。

TensorFlow、PyTorch、Pandas这三个库作为AI开发者的必备库,目前都较为稳定,更新内容也基本在预料之中。它们的更新也充分体现了目前AI发展的趋势。在可预见的未来,这两个库都会继续成为AI开发的主力库。

作者:肖智清,清华大学工学博士。著有《神经网络与PyTorch实战》《强化学习:原理与Python实战》。scipy、sklearn等开源项目源码贡献者。近7年发表SCI/EI论文十余篇,多个顶级期刊和会议审稿人。在国内外多项程序设计和数据科学竞赛上获得冠军。


RECOMMEND
推荐阅读01

《强化学习:原理与Python实现》

作者:肖智清

读者对象:

(1)强化学习算法和研发人员 

(2)深度学习研发和算法工程师 

(3)大数据架构师 

(4)其他爱好者。

 

推荐理由:

(1)理论完备,涵盖主流经典强化学习算法和深度强化学习算法,并配套理论基础和性能分析。

(2)逐章配套Python代码,深度强化学习配套代码基于TensorFlow 2实现。在GitHub上展示全部代码和运行结果。

(3)环境丰富,包括Gym库内置环境、对Gym库自定义扩展环境和Gym库以外的环境,并全面兼容Windows、macOS和Linux三大操作系统,书中给出环境配置方法。

(4)多个综合案例,涵盖AlphaGo改进版算法AlphaZero、基于仿真环境的自动驾驶等。

(5)对硬件配置要求低,理论讲解部分代码不需要GPU即可运行,综合案例代码只需要普通的GPU即可运行。  

02

《PyTorch深度学习实战

推荐理由:本书是一本深度学习实践指南,聚焦于PyTorch深度学习各场景的动手实现,不涉及模型层面的原理剖析。书中通过大量示例及代码,详细展示如何使用PyTorch构建深度学习模型原型、构建深度学习工作流和将原型用于生产。 


03

《边做边学深度强化学习:PyTorch程序设计实践

推荐理由:本书面向普通大众,指导读者以PyTorch为工具,在Python中实践深度强化学习。读者只需要具备一些基本的编程经验和基本的线性代数知识即可读懂书中内容,通过实现具体程序来掌握深度强化学习的相关知识。


04

《深度学习之PyTorch物体检测实战

推荐理由:百度自动驾驶高级算法工程师力作!长江学者特聘教授王田苗、百度自动驾驶技术总监陶吉等7位大咖力荐!详解物体检测的概念、发展、经典实现方法及三大经典检测器。


05

《Python深度学习:基于PyTorch

推荐理由:豆瓣评分9.2!资深AI专家20余年工作经验总结,从工具、技术、算法、实战4个维度全面讲解深度学习,重点突出、循序渐进、用图说话。

点击阅读原文了解更多PyTorch、TensorFlow、Pandas好书

更多精彩回顾

书讯 | 华章计算机拍了拍你,并送来了8月书单(上)

书讯 | 华章计算机拍了拍你,并送来了8月书单(下)

上新 | 迁移学习:迈向真正的人工智能
书单 | Effective系列图书大赏

干货 | 阿里巴巴B2B电商算法首次对外公开

收藏 | Java 发展简史:初生遇低谷,崛起于互联网

相关文章:

  • TIOBE 8 月编程语言:C、Java 差距拉大,R 语言盛行
  • 架构师技术领导力成长之路
  • ClickHouse王炸功能即将来袭?
  • DB-Engines 8 月数据库排名:Redis悄悄拔高,猛超Elasticsearch
  • 读完这本书打通了“数据化运营”的任督二脉
  • 那些年玩过的超级玛丽,竟然还隐藏了强化学习的这些原理
  • 一文看懂Python的控制结构:for、while、if…都有了
  • 马太效应和幂律分布是怎么回事?终于有人讲明白了
  • 【第16期】世界顶级架构师和你聊聊微服务
  • 附代码 |详解R语言的高级数据结构
  • 阿里巴巴、微软推出的云原生管理工具与理念
  • 机器学习没前途了?6本书,给你一个突破瓶颈的学习路径
  • 揭秘阿里巴巴的客群画像
  • 《天才引导的历程》| 西安交通大学送给准大一新生的礼物
  • 会议:2020年CCF全国计算机体系结构学术年会
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • const let
  • fetch 从初识到应用
  • Javascript编码规范
  • Java到底能干嘛?
  • Shell编程
  • webpack项目中使用grunt监听文件变动自动打包编译
  • yii2中session跨域名的问题
  • 爱情 北京女病人
  • 前端设计模式
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何利用MongoDB打造TOP榜小程序
  • 手写双向链表LinkedList的几个常用功能
  • 听说你叫Java(二)–Servlet请求
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 网页视频流m3u8/ts视频下载
  • 学习笔记:对象,原型和继承(1)
  • 正则表达式-基础知识Review
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (八)Spring源码解析:Spring MVC
  • (附源码)计算机毕业设计大学生兼职系统
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .naturalWidth 和naturalHeight属性,
  • .NET 设计一套高性能的弱事件机制
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET4.0并行计算技术基础(1)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET建议使用的大小写命名原则
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /boot 内存空间不够
  • @Transactional 竟也能解决分布式事务?
  • [AX]AX2012 R2 出差申请和支出报告
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [CF226E]Noble Knight's Path
  • [hdu2196]Computer树的直径