TensorFlow 2.0新特性解读,Keras API成核心
来源 | Google TensorFlow 团队
2018 年 11 月,TensorFlow 迎来了它的 3 岁生日,我们回顾了几年来它增加的功能,进而对另一个重要里程碑 TensorFlow 2.0 感到兴奋 !
TensorFlow 2.0 将专注于 简单性 和 易用性,具有以下更新:
使用 Keras 和 eager execution,轻松构建模型
在任意平台上实现生产环境的稳健模型部署
为研究提供强大的实验工具
通过清理废弃的 API 和减少重复来简化 API
在过去的几年里,我们为 TensorFlow 添加了许多组件。在 TensorFlow 2.0 中,它们将被打包成一个全面的平台,支持从训练到部署的机器学习工作流程。让我们使用如下所示的简化概念图来了解 TensorFlow 2.0 的新架构:
注:上图的训练部分虽然侧重于 Python API,但 TensorFlow.js 也支持训练模型。也支持其他语言,包括 Swift,R 和 Julia
简单的模型构建
在最近的 文章 中,我们宣布 Keras API 将成为 TensorFlow 中构建和训练模型的核心高级 API。Keras API 使得使用 TensorFlow 开启项目变得简单。重要的是,Keras 提供了几个模型构建 API ( Sequential, Functional, 和 Subclassing ),因此您可以选择适合的抽象级别。TensorFlow 的实现包含多项增强功能,包括即时迭代和直观调试,以及 tf.data,用于构建可扩展的输入管道。
下面是一个工作流程示例 ( 在接下来的几个月里,我们将更新下面所述内容的指南 ):
使用 tf.data 加载数据。使用输入管道读取训练数据,用 tf.data 创建的输入线程读取训练数据。使用 tf.feature_column 描述特征,例如嵌套和特征交叉。还支持从内存数据(例如 NumPy)中方便地输入
使用 tf. Keras 或 Premade Estimators 构建、训练和验证模型。Keras 与 TensorFlow 的其余部分紧密集成,因此您可以随时访问 TensorFlow 的功能。一组标准的打包模型 ( 例如,线性或逻辑回归、梯度增强树、随机森林 ) 也可以直接使用 ( 利用 tf.estimator API 实现 )。如果你不想从头开始训练一个模型,你很快就能通过 TensorFlow Hub 的模块利用迁移学习来训练 Keras 或 Estimator 模型
使用 eager execution 运行和调试,然后在图形上使用 tf.function。TensorFlow 2.0 在默认情况下以 eager execution 方式运行,以便于使用和顺利调试。此外,tf.functionannotation 透明地将 Python 程序转换成 TensorFlow 图。这个过程保留了 1.x TensorFlow 基于图形执行的所有优点:性能优化、远程执行以及轻松序列化、导出和部署的能力,同时增加了使用简单的 Python 表达程序的灵活性和易用性
使用分布策略进行分布式训练。对于大型机器学习训练任务来讲,Distribution Strategy API 使得在不更改模型定义的情况下,在不同硬件配置上分布和训练模型变得很容易。由于 TensorFlow 提供了对 CPU、GPU 和 TPU 等一系列硬件加速器的支持,因此可以将训练工作负载分布到单节点 / 多加速器以及多节点 / 多加速器配置,包括 TPU Pods。虽然此 API 支持各种集群配置,但还提供了在本地或云环境中部署 Kubernetes 集群训练的模板
导出到 SavedModel。TensorFlow 将在 SavedModel 上标准化,作为 TensorFlowServing、TensorFlow Lite、TensorFlow.js、TensorFlow Hub 等的交换格式
在任何平台上的生产环境中进行稳健的模型部署
TensorFlow 始终为生产提供了直接途径。无论是在服务器、边缘设备或者 web上,无论您使用哪种语言或平台,TensorFlow 都可以让您轻松地训练和部署模型。在 TensorFlow 2.0 中,我们通过标准化交换格式和调整 API 来提高平台和组件之间的兼容性和一致性。
一旦您训练并保存了模型,就可以直接在应用程序中执行它,或者使用以下部署库之一为它提供服务:
TensorFlow Serving:TensorFlow 库允许模型通过 HTTP / REST 或 gRPC / 协议缓冲区提供服务
TensorFlow Lite:TensorFlow 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和 Raspberry Pi 和 Edge tpu 等嵌入式系统上部署模型的能力
TensorFlow.js:支持在 JavaScript 环境中部署模型,例如通过 Node.js 在 web 浏览器或服务器端部署模型。TensorFlow.js 还支持用 JavaScript 定义模型,并使用类似于 keras 的 API 直接在 web 浏览器中进行训练
TensorFlow 还支持其他语言 ( 一些由更广泛的社区维护 ),包括 C, Java, Go, C#, Rust, Julia, R 等。
为研究提供强大的实验工具
TensorFlow 使从概念到代码、从模型到发布的新思想变得容易。TensorFlow 2.0 集成了许多功能,可以在不牺牲速度或性能的情况下定义和训练最新模型:
Keras Functional API 和 Model Subclassing API:允许创建复杂的拓扑,包括使用剩余层、自定义的多输入 / 输出模型和强制写入的正向传递
自定义训练逻辑:使用 tf.GradientTape 和 tf.custom_gradient 对梯度计算进行细粒度控制
为了获得更大的灵活性和更好的控制,低级别 TensorFlow API 始终可用,并与高级别抽象结合在一起,以实现完全可定制的逻辑
TensorFlow 2.0 带来了一些新功能,允许研究人员和高级用户使用丰富的扩展 ( 如 Ragged Tensors, TensorFlow Probability, Tensor2Tensor 等) 进行实验。
除了这些功能外,TensorFlow 提供 eager excution,便于原型制作和调试,Distribution Strategy API 和 AutoGraph进行规模化训练, 以及对 TPU 的支持, 使 TensorFlow 2.0 成为一个易于使用、可定制和高度可扩展的平台,用于进行最先进的机器学习研究并将研究转化为生产流水线。
TensorFlow 1.x 和 2.0 的区别
自从我们最初开源 TensorFlow 以来,已经有了许多版本和 API 迭代。随着机器学习的快速发展,该平台得到了极大的发展,现在支持具有不同需求的不同用户组合。使用 TensorFlow 2.0,我们有机会清理和模块化基于语义版本控制的平台。
以下是一些较大的变化:
删除 queue runner 以支持 tf.data
删除图形集合
改变变量的处理方式
符号的移动和重命名
此外,tf_contrib 将从 TensorFlow 核心存储库和构建流程中删除。TensorFlow 的 contrib 模块已经超出了单个存储库所能维护和支持的范围。较大的项目最好单独维护,而较小的扩展将逐步过渡到核心 TensorFlow 代码。一个特别兴趣小组 ( SIG ) 已经成立,以维持和进一步发展未来一些更重要的 contrib 项目。
如果您有兴趣贡献,请回复此贴:
https://github.com/tensorflow/community/pull/37
兼容性和连续性
为了简化向 TensorFlow 2.0 的过渡,将有一个转换工具,它可以更新 TensorFlow 1.x Python 代码以使用 TensorFlow 2.0 兼容 API,或者标记代码无法自动转换的情况。
并非所有更改都可以完全自动完成。例如,某些已弃用的 API 没有直接等效项。这就是我们引入 tensorflow.compat.v1 兼容性模块的原因,该模块保留了对完整 TensorFlow 1.x API(不包括 tf.contrib)的支持。 该模块将在 TensorFlow 2.x 的生命周期内维护,并允许使用 TensorFlow 1.x 编写的代码保持功能。
此外,SavedModels 或存储的 GraphDefs 将向后兼容。 使用 1.x 保存的 SavedModels 将继续在 2.x 中加载和执行。 但是,2.0 中的更改将意味着原始检查点中的变量名称可能会更改,因此使用 2.0 之前的检查点而具有已转换为 2.0 的代码时可能无法保证正常工作。
有关详细信息,请参阅 TensorFlow 2.0 指南:
https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md
我们相信 TensorFlow 2.0 将为应用开发带来巨大的益处,我们已投入大量精力使转换变得尽可能简单。但是,我们也认识到迁过渡当前的线程需要时间,我们非常关心社区目前对学习和使用 TensorFlow 的投资。 我们将在最后的 1.x 版本中提供 12 个月的安全补丁,以便为现有用户提供充足的时间进行过渡并获得 TensorFlow 2.0 的所有优势。
TensorFlow 2.0 的时间表
TensorFlow 2.0 预览版将于今年年初发布。
何必要等? 您已经可以通过使用 tf.keras 和 eager execution,预打包模型和部署库来开发 TensorFlow 2.0 了。Distribution Strategy API 目前已部分可用。
我们对 TensorFlow 2.0 以及即将到来的变化感到非常兴奋。TensorFlow 已经从一个用于深度学习的软件库成长为一个适用于所有机器学习类型的完整生态系统。TensorFlow 2.0 将简单易用,适用于所有平台上的所有用户。
欢迎加入 TensorFlow 社区,它不仅帮您了解最新内容,还帮助每个人都可以使用机器学习 !
(*本文仅代表作者观点,转载请联系原作者)
公开课预告
◆
全双工语音
◆
本期课程中,微软小冰全球首席架构师及研发总监周力博士将介绍微软小冰在全双工语音对话方面的最新成果,及其在智能硬件上的应用和未来将面临的更多技术产品挑战。
推荐阅读
Python的P图大法,你值得拥有!
维基百科联手谷歌翻译,结果“惨不忍睹”!
AI删库,程序员背锅?
刚刚!程序员集体荣获2个冠军,这份2018 IT报告还说这些!
边缘计算精华问答 | 为什么需要边缘计算?
吃亏的程序员,是如何拿到了 9 个月的年终奖?
Grin带火的MinbleWimble技术,到底是个什么鬼?
相关文章:

列选主元guass消去法
200701020110 07计算机 王再#include <iostream.h>#include <iomanip.h>#include <stdlib.h>void main(){ int flag1;input(); //输入方程 while(flag){ print_menu(); //打印主菜单}void print_menu(){ system("cls");cout<…

Mac 下 IDEA 启动慢的问题
转自: http://blog.csdn.net/KingBoyWorld/article/details/73440717 从控制台来看,每次都会连接本地地址(127.0.0.1),问题可能就出在这里。 修改本地/etc/hosts文件,添加以下内容: 127.0.0.1 localhost <hostname&g…

研发投入超876亿的华为,将如何进击云+AI?
人工智能作为下一轮科技革命的关键元素,正在进入越来越多的行业,用 AI 的技术和理念去解决现在和未来的问题,将是企业构建竞争力的关键。在去年 10 月召开的华为全联接大会上,华为轮值董事长徐直军详细阐述了华为的 AI 战略&#…

Bash脚本: 根据关键字做替换
根据某个文件的关键字做替换 #!/bin/bashkvawk -F "" { if(NF2) print $1""$2 } ./zuanshi_servic_test.propertiesfor kv in ${kv[]};dokecho $kv | awk -F "" {print $1}vecho $kv | awk -F "" {print $2} | awk -F "\r" …

Git学习系列之一些常用的Git命令收录更新ing
不多说,直接上干货! 前言 对于Git工具,有必要整理和总结一些常用实用的命令。 http://p.primeton.com/articles/53cce3a3e138236138000026 https://www.zhihu.com/question/22932048 http://blog.csdn.net/w410589502/article/details/536063…

普通域账号客户端计算无关机选项
组策略-》计算机配置-》安全设置-》本地策略-》用户权限分配-》关闭系统把DOMIAN USERS 组加进去我是在Default Domain Policy 里面加的转载于:https://blog.51cto.com/zhangjunjie/219613

罗永浩“咬定”微信不放松
作者 | 胡巍巍来源 | CSDN(CSDNnews)昨天,1月15日,听起来是很普通的一天。但是,历史上的这一天——公元8年1月15日,是王莽建立新朝、西汉结束的日子。2011年后的这一天,有一个八岁的国民社交软件…

Windows Ruby使用Mysql环境配置
windows下Ruby使用mysql时候报错: Incorrect MySQL client library version! This gem was compile d for 6.0.0 but the client library is 5.1.45 经过查找找到了解决方案: 1. 下载mysql-connector-c-noinstall-6.0.2-win32.zip http://dev.mysql.c…

Node.js与Sails~方法拦截器policies
policies sails的方法拦截器类似于.net mvc里的Filter,即它可以作用在controller的action上,在服务器响应指定action之前,对这个action进行拦截,先执行policies的策略,当条件通过,会next()它,继…

MySQL性能与磁盘读写的关系及优化策略
作者:kider出处:MySQLpub.com转贴请表明作者和出处并不能用于商业目的。这些天,对一个场地服务器慢的情况,进行了监控跟踪,也得出一些好的结论。现在记录一些过程,列出可以供参考的部分,同时有一…

今晚8点直播 | 详解微软小冰全双工语音对话技术
微软小冰第六代发布会上正式宣布上线全新的共感模型,同时也开始公测一种融合了文本、全双工语音与实时视觉的新感官。这项新技术可以实时预测人类即将说出的内容,实时生成回应,并控制对话节奏,从而使长程语音交互成为可能。而采用…

httpd.2.4虚拟主机配置测试
测试目标:三个虚拟主机,要求如下vhost1: phpMyAdmin, 同时提供https服务;vhost2: wordpress配置过程:一、配置vhost11、首先配置vhost1,先搭建私有CA在172.16.20.242上搭建私有CA: (1) 创建私钥…

视频批量转换为FLV的软件开发总结(1)——思想总结篇
视频批量转换为FLV的工作中,完全是因为项目中用到流媒体服务器管理发布视频。原始的数据可能是.mpg、.avi等格式的,这就需要大量的转换工作量,批量转换工具的需求很明显了。 原始准备使用外面的专门的视频转换软件Total Video Converter&…

https简单配置
SSL会话过程(1)客户端发送可供选择的加密方式,并向服务器请求证书(2)服务器端发送证书以及选定的加密方式给客户端(3)客户端取得证书并进行证书验证;如果新人给其发证书的CA…

突破电信3G宽带对网页浏览的上网限制
从上周开始用我189的手机卡插入到我的无线上网卡中就不能正常打开网页了,其它的IM(如QQ、旺旺等)都正常。ping www.sina.com.cn这些网址也是很正常的。foxmail收邮件也很正常。本来还想可能是网络比较忙或者其它的什么原因,但跟踪…

ClassLoader知识收集
阅读提示:全文认真阅读大约需要1个半小时时间,如果你需要在IDE中验证并理解,大约需要3个小时,如果你想自己写个类似的类加载器并调试,估计还需要3个小时。该知识点的掌握检测与否,你可以尝试其回答Java每日…

Linux下PS1设置
在测试机上每次执行命令总要用sudo -u ads开头,比较麻烦。索性用: sudo su ads 就可以直接用ads用户名进行操作了。 但是用这种方式之后,命令的前缀就变成了"bash-3.2$ ",相当不习惯,经过网上搜索࿰…

Android API 中文 (51) —— ZoomButtonsController
一、结构 public class ZoomButtonsController extends View implements View.OnTouchListener java.lang.Object android.widget.ZoomButtonsController 二、概述 ZoomButtonsController处理缩放控件的显示和隐藏并且定位其在相关父视图的位置。他也可以做为缩放控件的…

火爆GitHub的《机器学习100天》,有人把它翻译成了中文版
作者 | 红色石头转载自AI有道(ID:redstonewill)今天给大家介绍一个在 GitHub 上非常火的机器学习实战项目,叫做 100-Days-Of-ML-Code,中文名为《机器学习 100 天》。目前该项目已经收获了 1.7w stars 了。下面是项目地址ÿ…

新浪程序员加班改bug,竟错失77万年会大奖
作者 | 伍杏玲转载自CSDN(CSDNnews)好消息!还有不到二十天就放大假!大伙盼着过年盼着年会盼着抽中大奖!昨天有一位新浪码农真的抽中头等奖了——2000 股新浪股票,价值 77 万人民币啊!然并卵&…

Linux简单的颜色设置
通过alias,在~/.bashrc里配置: alias l.ls -d .* --colortty alias llls -l --colortty alias lsls --colortty alias vivim alias whichalias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde

第106天:Ajax中同步请求和异步请求
同步请求和异步请求的区别 1、同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的。信息错…

排除一例电脑启动故障
晚上一上班,版式组小连来电话,说是排版过程中,电脑突然死机,重启,提示Disk I/O error:status00008036 NTDETECT失败断电,拆机,放电(开机键反复按下松开按下松开几次&…

登陆成功率 99%,云知声携手平安好医生推声纹登录系统
近日,云知声宣布与医疗健康生态平台平安好医生(01833.HK)共同研发的“声纹登录系统”(又称声纹锁)经过多次模型优化和升级迭代后,登录成功率接近 99%,达行业一流水准。 声纹识别(Voiceprint Rec…

知方可补不足~开发人员可以自己定义VS文件模版
团队开发,最重要的是什么? 统一的规范,对于一个团队,在开发项目之前,必须要先告诉大家项目的规范是什么,而开发人员在实际当中再去执行这个规范,对于规范事实上是个很宏观的概念,它可…

sql server日志占用空间过大的问题
一、关于日志的基本知识:在 SQL Server 2000 和 SQL Server 2005 中,每个数据库都至少包含一个数据文件和一个事务日志文件。SQL Server 在该数据文件中以物理方式存储数据。事务日志文件存储您对 SQL Server 数据库执行的所有修改的详细信息,…

svn 回归某一个特定版本
svn回归某一个特定版本: 先用svn log查看回归版本的版本号 version 然后用命令 svn up -r version

NA-NP-IE系列实验7:CDP
实验7:CDP<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. 实验目的通过本实验,读者可以掌握如下技能:(1) 查找CDP 邻居(2) 熟悉CDP 的配置2. 实验拓扑图…

吴恩达“官宣”荣升准爸爸~
整理 | 琥珀 出品 | AI 科技大本营 “我们的最新‘成果’ Baby Ng 即将诞生!2019 年 2 月见面!” 1 月 17 日(北京时间 1 月 18 日凌晨),人生赢家吴恩达冷不丁在推特上晒出了妻子孕期中的照片(如仙子一般漂…

分布式版本控制系统 Git 教程
简介 Git 是什么? Git 是一个开源的分布式版本控制系统。 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 什么是分布式版本控制系统? 介绍分布式版本控制系统前,有…