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论文十余篇,多个顶级期刊和会议审稿人。在国内外多项程序设计和数据科学竞赛上获得冠军。
推荐阅读
一键实现图像、视频卡通化,GAN又进化了
为什么说机器学习是预防欺诈的最佳工具?
Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码
程序员必备基础:Git 命令全方位学习
微软直播马上开始,近百岗位等你来,快戳进直播间
PyTorch 1.6、TensorFlow 2.3、Pandas 1.1同日发布!都有哪些新特性?相关推荐
- PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日发布!都有哪些新特性?
作者 | 肖智清 出品 | AI科技大本营(ID:rgznai100) 7月29日,PyTorch 1.6.TenorFlow 2.3.Pandas 1.1恰巧同时发布.这三个库都是定期滚动更新,大约 ...
- TensorFlow 1.0 正式发布 你需要知道的都在这里
谷歌表示,仅仅在发布的第一年里,TensorFlow 就帮助研究人员.工程师.艺术家.学生以及其他行业人员取得了巨大研究进展.这包括机器翻译.早期皮肤癌检测.防止糖尿病失明并发症等诸多领域.如今,Te ...
- 2020,PyTorch真的赶上TensorFlow了吗?
机器之心报道 参与:张倩.杜伟 几天前,OpenAI 通过官方博客宣布了「全面转向 PyTorch」的消息,计划将自家平台的所有框架统一为 PyPyTorch.这一消息再次引发了社区关于两个框架优劣的 ...
- Tensorflow 2.0的新特性
Tensorflow 2.0的新特性 几天前,Tensorflow刚度过自己的3岁生日,作为当前最受欢迎的机器学习框架,Tensorflow在这个宝座上已经盘踞了近三年.无论是成熟的Keras,还是风 ...
- 你一定不能错过的pandas 1.0.0四大新特性
文章来源于Python大数据分析,作者费弗里 本文对应脚本及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1. ...
- python索引取值_对pandas的层次索引与取值的新方法详解
1.层次索引 1.1 定义 在某一个方向拥有多个(两个及两个以上)索引级别,就叫做层次索引. 通过层次化索引,pandas能够以较低维度形式处理高纬度的数据 通过层次化索引,可以按照层次统计数据 层次 ...
- 【Pandas】对比两列取最大值生成新的一列
[Pandas]对比两列取最大值生成新的一列 问题: 假设 dataframe 中有如下两列,如何生成第三列 best,其值取scheme1与scheme2 对应的最大值 解决方法: df['best ...
- 为什么机器学习工程师用PyTorch的多于TensorFlow?
在机器学习领域,面对各类复杂多变的业务问题,构建灵活易调整的模型是高阶机器学习工程师必备的工作能力.然而,许多工程师还是有一个想法上的误区,以为只要掌握了一种深度学习的框架就能走遍天下了. 事实上,在 ...
- 学术前沿 | Texar-PyTorch:在PyTorch里重现TensorFlow的最佳特性
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟 报道 | 公众号 CVLianMeng 转载于 :https://gith ...
最新文章
- Spark RDD/Core 编程 API入门系列之动手实战和调试Spark文件操作、动手实战操作搜狗日志文件、搜狗日志文件深入实战(二)...
- 100c之31:哥德巴赫猜想
- BZOJ3262: 陌上花开(cdq分治)
- jQuery源码解读
- html是什么型语言,HTML笔记
- 网络信息如此庞杂,人工智能助你验明真伪
- zxr10交换机配置手册vlan_中兴ZXR10 G系列交换机SVLAN使用指导
- centos7yum安装VirtualBox
- 【Gym 102134-E】Kth subtree【权值树状数组、二分统计第k大+dfs离线操作】
- [软件工程] 形式化说明技术
- matlab2017安装完提示编译器,matlab2017a/b 编译器设置之无语神坑
- μVision5界面常用单词解释
- android 屏幕分辨率获取,Android获取屏幕分辨率的三种方法
- 移动硬盘损坏怎么恢复?找到原因再解决
- 蓝牙耳机电脑玩游戏进入没声音设置
- linux使用指定网卡ping,LINUX ping 指定网卡
- springboot整合POI导出word(文字加图片)
- 【WINDOWS / DOS 批处理】for命令详解(八)
- 10年新年计划与愿望
- OTFS从零开始(一)