0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow 2.0将专注于简单性和易用性

电子工程师 来源:lq 2019-01-18 10:44 次阅读

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 提供了对 CPUGPU 和 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 针对移动和嵌入式设备的轻量级解决方案提供了在 AndroidiOS 和 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 社区,它不仅帮您了解最新内容,还帮助每个人都可以使用机器学习 !

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8132

    浏览量

    130577
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83476
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60242

原文标题:TensorFlow 2.0新特性解读,Keras API成核心

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    简单易用的TPS84320RUQ集成式电源解决方案

    TPS84320RUQ 是一款简单易用的集成式电源解决方案,它在一个小外形尺寸的 BQFN 封装内整合了一个带有功率金属氧化物半导体场效应管 (MOSFET) 的 3A DC/DC 转换器、一个电感器以及无源元件。
    发表于 04-24 14:28 0次下载
    <b class='flag-5'>简单</b><b class='flag-5'>易用</b>的TPS84320RUQ集成式电源解决方案

    SOLIDWORKS 2024:专注于设计 提高工作效率

    在当今高度竞争的制造业环境中,设计工程师需要一款强大且有效的设计工具,以快速、准确地实现产品设计。SOLIDWORKS正是这样一款满足这一需求的CAD软件。它不仅提供了丰富的设计工具,还通过其强大的功能和易用性,帮助工程师专注于设计,提高工作效率。
    的头像 发表于 01-29 14:19 189次阅读
    SOLIDWORKS 2024:<b class='flag-5'>专注</b>于设计 提高工作效率

    如何使用TensorFlow构建机器学习模型

    在这篇文章中,我将逐步讲解如何使用 TensorFlow 创建一个简单的机器学习模型。
    的头像 发表于 01-08 09:25 362次阅读
    如何使用<b class='flag-5'>TensorFlow</b>构建机器学习模型

    简单易用的TVS如何在发展

    保护的选择,低成本和易用性让TVS在绝大多数保护里成为了第一选择。   稳定易用的TVS   TVS瞬态电压抑制管,也叫瞬态电压抑制二极管,是一种高效能保护元器件,其作用是在两极受到反向瞬态高能量时候能够吸收浪涌,对后级电路形成有效
    的头像 发表于 12-26 00:24 1006次阅读

    简单易用,设计灵活!LPC800微控制器,加速实现从8位到32位的平稳升级!

    , LPC800系列微控制器 不仅显著提升了性能,还极大地降低了功耗,提高了能效,加之广泛的伙伴生态合作体系支持,为嵌入式开发者提供了一个简单易用、设计灵活的解决方案。 LPC800系列MCU的简单
    的头像 发表于 11-10 08:15 233次阅读
    <b class='flag-5'>简单</b><b class='flag-5'>易用</b>,设计灵活!LPC800微控制器,加速实现从8位到32位的平稳升级!

    STM32F2独立看门狗和窗口看门狗

    结合安全度、计时精确度和易用性·监测软件跑飞,或未按预想地运行的情况 ·触发系统复位或产生中断(中断仅针对窗口看门狗)独立看门狗 ·专用时钟LSl ·低功耗模式仍可运行对定时的控制比较松 不同时钟源,不同生存周期 窗口看门狗 ·总线时钟APB1·对定时控制比较严 ·要求主应用程序在规定时间窗口内喂狗
    发表于 09-13 07:15

    8/16位平替升级首选低成本32位单片机MM32G0001

    目前32位MCU已逐步覆盖应用市场的方方面面,但不容忽视的是8/16位MCU因其价格便宜、简单易用、小封装丰富等特点,依然牢牢占据着入门级MCU市场的主力位置。虽然很多32位MCU厂商都推出了其8/16位的替换产品,但始终因为价格和易用
    的头像 发表于 08-30 15:30 520次阅读

    什么叫人机交互?人机交互是什么意思?

    界面设计:设计人机交互界面的结构、布局、内容和控件,以实现直观、易用性、反馈等要求。界面设计需要兼顾美观性、实用性和易用性,简洁、明了的界面布局可以让用户快速定位需求和完成任务。
    的头像 发表于 08-26 11:39 2595次阅读

    Arm Cortex-M7处理器产品介绍

    架构的卓越响应和易用性。 凭借内置的指令和数据高速缓存以及紧密耦合的存储器(TCM),这款超标量处理器即使在终端要求最苛刻的处理应用程序中也不会变慢
    发表于 08-25 06:25

    深度学习框架tensorflow介绍

    是一个简单而灵活的数据流图模型,其中节点表示数学操作,而边缘表示数据流。这使得TensorFlow极其灵活,可以轻松地
    的头像 发表于 08-17 16:11 1473次阅读

    TensorFlow神经网络量化为8位

    据类型,使用TensorFlow 1.9或更高版本中提供的功能。 设备可以比32位浮点模型更快地执行8位整数模型,因为需要移动的数据更少,并且可以使用更简单的整数算术运算进行乘法和累加。 如果您使用CoreML部署
    发表于 08-10 06:01

    Amisco专注汽车线圈缔造者60年家族企业

    Amisco专注根据特定需求开发定制产品,并结合我们的标准产品系列 气动阀 多年来,我们拥有广泛的产品,从单线圈到完整的气动阀,根据客户的特定需求共同开发。液压线圈 Amisco 为液压行业定制
    发表于 08-03 08:38

    如何在Cortex-M处理器中实现的Armv8-M异常模型

    ”体系结构旨在提供以下特性: •简单性,在成本敏感的微控制器目标市场中最大限度地降低给定性能水平的成本•易用性,使非常广泛的最终用户能够为不同的使用情况对设备进行编程,而无需在Arm架构和Arm汇编代码
    发表于 08-02 13:14

    如何使用TensorFlow神经网络模型部署到移动或嵌入式设备上

    有很多方法可以经过训练的神经网络模型部署到移动或嵌入式设备上。不同的框架在各种平台上支持Arm,包括TensorFlow、PyTorch、Caffe2、MxNet和CNTK,如Android
    发表于 08-02 06:43

    NVIDIA Omniverse让AI训练变得更加简单易用

    Rendered.ai 将 NVIDIA Omniverse Replicator 集成到其合成数据生成平台,使 AI 训练变得更加简单易用
    的头像 发表于 07-24 09:14 836次阅读
    NVIDIA Omniverse让AI训练变得更加<b class='flag-5'>简单</b><b class='flag-5'>易用</b>