资源 | 详解帝国理工集成工具TensorLayer:控制深度学习开发复杂度

选自NextPlatform

机器之心编译

对于开发者而言,深度学习系统的交互性和复杂度正在增加。从建立不断迭代强化的可扩展性数据集,到更多动态模型,再到神经网络内部更加连续的学习,这使得通过轻量级工具全面管理深度学习开发的需求也越发强大。而 TensorLayer 正是这样一种可管理深度学习开发复杂度的工具。

「甚至在部署之后,新的训练样本、人类的见解以及操作经验会不断出现,因此升级模型并跟踪其变化的能力变得不可或缺。」伦敦帝国理工学院的一个团队说,他们开发了一个库,用来管理深度学习开发者在复杂的多项目上做的迭代。「开发者必须用大量的开发周期整合构建神经网络的组件、管理模型生命周期、组织数据,以及调整系统并行性。」

为了更好地管理开发,该团队借助一个通用的 Python 库打造了 TensorLayer,这是一种集成的开发方法,其中所有的元素(操作、模型生命周期、并行计算、失败)被抽象为模块化格式。这些模块中的一个用于管理神经网络层,一个用于管理模型及其生命周期,一个通过为所有系统的训练数据提供统一的表征来管理数据集,另外还有一个工作流模块用于处理容错。顾名思义,TensorFlow 是进行训练和推断的核心平台,数据存储在 MongoDB 中,这是深度学习研究机构的常见设置。

深度学习开发人员利用 TensorLayer 功能写了一个多媒体应用。这些功能包括提供和输入层实现、构建神经网络、管理模型生命周期、构建在线或离线数据集,以及撰写训练计划等,分为四个模块:层、模型、数据集和工作流。

该团队说,尽管 Keras 和 TFLearn 等现有工具很有用,但扩展性不强,不足以应对越来越复杂和不断迭代的网络。它们提供必要的抽象化以降低采用壁垒(adoption barrier),但这样做也对用户掩盖了底层引擎(underlying engine)。尽管从底层调整和修改对 bootstrap 有益,且对于解决很多现实问题很有必要,但这是非常困难的。

与 Keras 和 TFLearn 相比,TensorLayer 不仅提供高水平的抽象化,还提供端到端的工作流,包括数据预处理、训练、后处理、服务模块和数据库管理,这些都是开发者构建整个系统的关键。

TensorLayer 提倡灵活性和可组合性更强的范式:神经网络库可以和私有引擎(native engine)互换。这使得用户可在不丢失可见性的情况下轻松使用预构建模块。该非侵入式本质也使得合并其他 TF 包装器,如 TF-Slim 和 Keras 变得可行。但是,该团队认为灵活性不能以性能为代价。

此团队在以下论文中重点强调了许多应用,也详细介绍了每一个模块、整体架构和发展现状。这些应用包括生成对抗网络(generative adversarial network)、深度强化学习(deep reinforcement learning),以及终端用户环境的超参数调节。TensorLayer,自去年从 GitHub 发布后,还被用于多模型研究、图像变换和医学信号处理。

TensorLayer 正处在一个主动发展的阶段,而且已经从开放社区接收到大量的贡献性工作。它已经被帝国理工学院、卡内基梅隆大学、斯坦福大学、清华大学、加州大学洛杉矶分校、瑞典林雪平大学等高校的研究人员,以及谷歌、微软、阿里巴巴、腾讯、ReFULE4、彭博等公司的工程师广泛使用。

论文:TensorLayer: A Versatile Library for Efficient Deep Learning Development

论文地址:https://arxiv.org/abs/1707.08551

项目地址:https://github.com/zsdonghao/tensorlayer

深度学习强力地推动了计算机视觉、自然语言处理和多媒体等领域的发展。然而开发一个深度学习系统通常十分困难和复杂,因为它经常涉及到构建神经网络架构、管理正在训练或已训练的模型、调整优化过程、预处理和组织数据等过程。TensorLayer 是一个通用型的 Python 库,旨在帮助研究者和工程师高效地开发深度学习系统。它为神经网络、模型和数据管理、并行工作流机制提供了丰富的抽象化方法。TensorLayer 在提升效率的同时,它还保留性能和可扩展性。TensorLayer 先前已经发布在 Github 上,并且已经帮助很多学术研究员和工业应用者开发深度学习现实应用。

TensorLayer 帮助我们管理和提高开发效率的方法主要是通过以下四个模块来实现,这四个模块也即整个系统的架构。TensorLayer 可以基于这些模块实现整个开发过程和相应的功能,因此我们可以在这基础上利用编程语言实现各种不同的应用,如 GAN、超参数精调等。

2.1 层模块

层是神经网络的核心基元,TensorLayer 提供了一个包含大量参考层实现(比如 CNN、RNN、dropout、dropconnect、批归一化及其他)的层模块。该模块通过类似于 Lasagne [12] 那样的声明式方式堆叠层级而构建神经网络。每个层给定唯一的键值,帮助开发者在层之间实现细粒度参数共享。

2.2 模型模块

模型是独立功能单元的逻辑表示,可以在生产过程中被训练、评估和部署。每个模型都有独立的架构,具有可被保存、缓存和重新加载的不同版本或状态(即权重)。

2.3 数据集模块

数据集模块用于管理训练样本和预测结果。样本和结果以文档的形式存储在 MongoDB 中。每个文档包含一个单独的主键(key)、样本、标注和用户自定义标签。

2.4 工作流模块

工作流模块提供任务抽象,以启用容错异步训练。一个训练任务由 3 个元组分别识别:输入数据集键值(key)、模型键值和输出数据集键值。

原文链接:https://www.nextplatform.com/2017/08/01/managing-deep-learning-development-complexity/

本文为机器之心编译,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2017-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

2017图灵奖得主:通用芯片每年仅提升3%,神经专用架构才是未来

作者:Norman P. Jouppi, Cliff Young, Nishant Patil, David Patterson

13420
来自专栏云时之间

JD数据比赛的一些思路

1:题目要求 参赛者需要使用京东多个品类下商品的历史销售数据,构建算法模型,预测用户在未来5天内,对某个目标品类下商品的购买意向。对于训练集中出现的每一个用户,...

366110
来自专栏人工智能

机器学习并不难

在这篇文章中,我们将讨论一般情况下的机器学习的方法以及其与数据库之间的交互途径。如果你是一个不知从何开始学起的初学者,有兴趣知道到底为何我们需要机器学习,并且疑...

24890
来自专栏技术翻译

人工智能的10个最佳框架和库

人工智能已经存在了很长时间。然而,由于该领域的巨大改进,近年来它已成为流行语。人工智能曾经被称为总体书呆子和天才的领域,但由于各种图书馆和框架的发展,它已成为一...

1.3K20
来自专栏目标检测和深度学习

九大深度学习框架

开源的深度学习神经网络正步入成熟,而现在有许多框架具备为个性化方案提供先进的机器学习和人工智能的能力。那么如何决定哪个开源框架最适合你呢?本文试图通过对比深度学...

39360
来自专栏人工智能LeadAI

关于Deep Neural Networks for YouTube Recommendations的一些思考和实现

论文 Deep Neural Networks for YouTube Recommendations 来自google的YouTube团队,发表在16年9月的...

1.2K30
来自专栏灯塔大数据

对比深度学习十大框架:TensorFlow最流行但并不是最好

引 言 2016 年已经过去,BEEVA Labs 数据分析师 Ricardo Guerrero Gomez-Ol 近日在 Medium 上发表了一篇文章,盘...

38360
来自专栏新智元

盘点 | TOP49人工智能常用 API

【新智元导读】作者Geethika Bhavya Peddibhotla列出了49个人工智能领域常用的API,包括机器学习和预测、人脸和图像识别、文本和情感分析...

49790
来自专栏机器之心

观点 | TensorFlow sucks,有人吐槽TensorFlow晦涩难用

选自nicodjimenez 机器之心编译 参与:李泽南、刘晓坤 作为当今最流行的深度学习框架,TensorFlow 已经出现了两年之久。尽管其背后有着谷歌这样...

349100
来自专栏机器之心

业界 | 深度学习芯片公司Graphcore初探:颠覆GPU、FPGA和CPU的新一代处理器IPU

选自Nextplatform 作者:Nicole Hemsoth 机器之心编译 参与:朱朝阳、侯韵楚、李亚洲、黄小天 ? 作为思维锻炼,让我们将神经网络视为大量...

28640

扫码关注云+社区

领取腾讯云代金券