当前位置:网站首页>TensorFlow2.0 问世,Pytorch还能否撼动老大哥地位?
TensorFlow2.0 问世,Pytorch还能否撼动老大哥地位?
2020-11-06 01:28:02 【IT界的小小小学生】
文章目录
TensorFlow 2.0 preview
关于TensorFlow 2.0 preview,在谷歌开源战略师 Edd Wilder-James 曾将公开的一封邮件就有介绍,TensorFlow 2.0 预览版将在今年正式发布,并称其是一个重大的里程碑。将会把重点放在易用性上,而 Eager Execution 将会是 TensorFlow 2.0 的核心功能。
注:“Eager Execution”是一个命令式、由运行定义的接口,一旦从 Python 被调用可立即执行操作,这使得
TensorFlow 的入门变得更简单,也使得研发工作变得更直观。
TensorFlow 2.0 上线
TensorFlow 2.0 preview终于上线了,看来稳定版距离我们也不会太远——按照官方说法会是今年的第一个季度。
谷歌表示,在过去几年里,TensorFlow 增加了很多组件。通过 TensorFlow 2.0 版本的大幅度重建,这些功能将被打包成为一个综合平台,支持从训练到部署的整个机器学习工作流程。下图简要展示了 TensorFlow 2.0 的新架构:
Note:虽然上图的训练部分侧重 Python API,但是 TensorFlow.js 也支持训练模型。TensorFlow 2.0 对其他语言也有不同程度的支持,包括 Swift、R 语言和 Julia。
市场占有率
全球情况
2.0发布会还把TensorFlow目前的家底透露了一遍:目前TF在全球已经有超过4100万的下载次数,社区有超过1800多个贡献者。
发布会现场展示一张全球地图,但是没有透露中国社区的情况,这怎么可以?
官方图
中国概览
下面是我用中文搜索引擎–百度指数统计通过搜索量数据来侧面观察下两个主流深度学习框架tensorflow 与pytorch的变化,得到的结果如下图:
上图是进一年以来国内的深度学习两个主流框架tensorflow 与pytorch之间的对比,很明显的可以看出
tensorflow远胜于pytorch.尤其在有TF2.0消息公布后,搜索指数差距拉大了。
从人群属性上来说20~29以及 30-39之间的人群来说,年轻化的人群更倾向于pytorch,老程序员更倾向于tensorflow。
TensorFlow与PyTorch区别
-
安装环境
首先在系统上的支持:all in . 不过值得注意的是在2018Pytorch v0.4.0支持windows平台的。 -
CPU和GPU
TensorFlow 有针对的CPU和GPU安装模块,而 PyTorch并不像TensorFlow一样已经指定好CPU和GPU,如果在项目中想要同时支持GPU和CPU,将会产生更多代码。 -
安装过程
基于Anaconda 的两个深度学习模块都可以直接通过Pip来安装。 -
是否适合新手
TensorFlow 1.x与 PyTorch对比来说,个人认为PyTorch好些,但是在tensorflow 2.0发布后根据其新特性,Tensorflow 2.0 将于PyTorch不相上下。
下面是具体一些方面的对比:
PyTorch与TensorFlow 1
例如要计算 1 + ½ + ¼ + ⅛ + … ,使用 PyTorch 的代码明显比 TensorFlow 简单:
后来从 TensorFlow 1.4 开始,可以选择启动 eager 模式。
在 TensorFlow 2.0, eager execution 是默认的,不需要启用它:
可以发现eager 模式和 PyTorch 一样简单.
- 效果上
个人认为针对不同需求、不同算法选择不同,没有绝对的好与不好。
TensorFlow2.0新特性
下面我们具体来看下2.0版本的新特性:2.0版本具有简易性、更清晰、扩展性三大特征,大大简化API;提高了TensorFlow Lite和TensorFlow.js部署模型的能力;
TensorFlow2.0 Alpha概括一下即:
- 更易用:
诸如tf.keras等高级API将更易于使用;并且Eager execution将成为默认设置。
- 更清晰:
删除了重复的功能;不同API的调用语法更加一致、直观;兼容性更加完善。
- 更灵活:
提供完整的低级API;可在tf.raw_ops中访问内部操作;提供变量、checkpoint和层的可继承接口。
主要变化简要总结
-
API清理
许多API 在TF 2.0中消失或移动。一些主要的变化包括删除tf.app,tf.flags与 tf.logging,支持开源的 absl-py(Google自己的Python代码库)。 -
Eager Execution 将成为核心功能
可能 TensorFlow 2.0 最明显的改变就是将 Eager execution 作为默认优先模式。这表明任何运算在调用后就会立即运行,我们不再需要预先定义静态图,再通过「tf.Session.run()」执行图的各个部分。
# TensorFlow 1.X
outputs = session.run(f(placeholder), feed_dict={placeholder: input})
# TensorFlow 2.0
outputs = f(input)
- 代码风格以 Keras 为主
很多函数如 optimizer,loss,metrics 会统合到 Keras 中
- 支持更多的平台和语言
1.0到2.0过渡
自动过渡
关于代码转换:从TensorFlow1.0到2.0过渡我们使用 pip 安装 TensorFlow 2.0 时,系统会自动添加 tf_upgrade_v2(项目地址) ,它可将现有的 TensorFlow Python 代码转换为 TensorFlow 2.0 代码。
#使用方法:
!tf_upgrade_v2
# 选择 input file,输出 output file
tf_upgrade_v2 --infile foo.py --outfile foo-upgraded.py
# 将整个目录进行变换
tf_upgrade_v2 --intree coolcode --outtree coolcode-upgraded
兼容方面
为确保TensorFlow 2.0仍支持您的代码,升级脚本包含一个compat.v1模块。该模块替换TF
1.x符号tf.foo,与等效tf.compat.v1.foo参考一样。虽然兼容性模块很好,但我们建议您手动校对替换并将其迁移到tf.命名空间中的新API,而不是tf.compat.v1.。由于TensorFlow
2.x模块已弃用(例如,tf.flags和tf.contrib),因此切换到compat.v1某些无法解决更改。升级此代码可能需要使用其他库(例如absl.flags)或切换到tensorflow
/ addons中的包。
以上来源于官网
小结
TensorFlow 2.0将原有的一个非常强大非常成熟的深度学习库进行了简化,重点是以keras为主,不知大家是否了解keras,根据官方标语,它是“为人类设计,不是为机器设计的API”。因此他在入门方面将大大优化, 如果你有以下需求,那么TensorFlow是一个很好的选择:
- 开发需要部署在移动平台上的模型
- 想要各种形式的丰富的学习资源(TensorFlow开发课程比较多)
- 想要或需要使用Tensorboard
- 需要大规模的分布式模型训练
PyTorch仍然是一个年轻的框架,但其发展速度越来越快。如果你有以下需求,它可能会比较适合你:
- 小规模项目的快速原型开发
- 用于研究
参考文献
https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md
https://tensorflow.google.cn/
https://www.youtube.com/watch?v=WTNH0tcscqo&t=304s
版权声明
本文为[IT界的小小小学生]所创,转载请带上原文链接,感谢
https://vip01.blog.csdn.net/article/details/88664142
边栏推荐
- C++ 数字、string和char*的转换
- C++学习——centos7上部署C++开发环境
- C++学习——一步步学会写Makefile
- C++学习——临时对象的产生与优化
- C++学习——对象的引用的用法
- C++编程经验(6):使用C++风格的类型转换
- Won the CKA + CKS certificate with the highest gold content in kubernetes in 31 days!
- C + + number, string and char * conversion
- C + + Learning -- capacity() and resize() in C + +
- C + + Learning -- about code performance optimization
猜你喜欢
-
C + + programming experience (6): using C + + style type conversion
-
Latest party and government work report ppt - Park ppt
-
在线身份证号码提取生日工具
-
Online ID number extraction birthday tool
-
️野指针?悬空指针?️ 一文带你搞懂!
-
Field pointer? Dangling pointer? This article will help you understand!
-
HCNA Routing&Switching之GVRP
-
GVRP of hcna Routing & Switching
-
Seq2Seq实现闲聊机器人
-
【闲聊机器人】seq2seq模型的原理
随机推荐
- LeetCode 91. 解码方法
- Seq2seq implements chat robot
- [chat robot] principle of seq2seq model
- Leetcode 91. Decoding method
- HCNA Routing&Switching之GVRP
- GVRP of hcna Routing & Switching
- HDU7016 Random Walk 2
- [Code+#1]Yazid 的新生舞会
- CF1548C The Three Little Pigs
- HDU7033 Typing Contest
- HDU7016 Random Walk 2
- [code + 1] Yazid's freshman ball
- CF1548C The Three Little Pigs
- HDU7033 Typing Contest
- Qt Creator 自动补齐变慢的解决
- HALCON 20.11:如何处理标定助手品质问题
- HALCON 20.11:标定助手使用注意事项
- Solution of QT creator's automatic replenishment slowing down
- Halcon 20.11: how to deal with the quality problem of calibration assistant
- Halcon 20.11: precautions for use of calibration assistant
- “十大科学技术问题”揭晓!|青年科学家50²论坛
- "Top ten scientific and technological issues" announced| Young scientists 50 ² forum
- 求反转链表
- Reverse linked list
- js的数据类型
- JS data type
- 记一次文件读写遇到的bug
- Remember the bug encountered in reading and writing a file
- 单例模式
- Singleton mode
- 在这个 N 多编程语言争霸的世界,C++ 究竟还有没有未来?
- In this world of N programming languages, is there a future for C + +?
- es6模板字符
- js Promise
- js 数组方法 回顾
- ES6 template characters
- js Promise
- JS array method review
- 【Golang】️走进 Go 语言️ 第一课 Hello World
- [golang] go into go language lesson 1 Hello World