专栏首页AI研习社如何用TensorFlow快速搭建神经网络?来看看DeepMind新开源工具Sonnet!

如何用TensorFlow快速搭建神经网络?来看看DeepMind新开源工具Sonnet!

去年 DeepMind 作出决定,将全部研究搬到 TensorFlow 框架上进行。

近一年时间过去,回头来看,DeepMind 认为这项选择十分正确——许多模型的学习过程大幅加速;TensorFlow 内置的分布式训练功能,还帮助工程师们极大得精简了代码。

在这过程中,DeepMind 发现:TensorFlow 的灵活性和可适性,使得以它为基础、为特定任务开发专用高级框架变得十分可行。

DeepMind 就开发了一个能在 TensorFlow 上快速创建神经网络模块的高级框架,名为 Sonnet。

两天前,其代码被上传到 GitHub(地址:https://github.com/deepmind/sonnet)。昨夜,DeepMind 在官方博客宣布了这一消息:Sonnet 正式开源。

对于 TensorFlow 而言,自从其在 2015 年末开源,一个由众多高级算法库组成的多样生态系统,便已围绕着它迅速发展起来。这些高级工具,允许常用任务以更简便、更快的方式完成,极大节省了开发者的时间精力。

作为该生态的新成员,Sonnet 也是如此。它与现有的神经网络算法库有许多共同点,但部分功能专为 DeepMind 的研究需要而设计。

这并不是 Sonnet 的源代码头一回被公开——几个月前 DeepMind 开源的算法库 “Learning to learn”,以及去年 6月发表的论文 《Learning to learn by gradient descent by gradient descent》,就包含了早期的 Sonnet 代码。现在,该算法库的完全版本以 “Sonnet” 新名称重新包装。

Learning to learn GitHub 地址:https://github.com/deepmind/learning-to-learn

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

DeepMind 在博客上表示:

“我们仍在不断开发这一代码库,但当前版本已经对我们的研究贡献巨大。接下来的代码发布,将以今日发布的版本为基础。 向公众开源 Sonnet,能方便 DeepMind 与深度学习社区分享我们的算法模型。当然,我们也殷切希望,Sonnet 能够帮助社区同仁将研究更进一步。最近几个月,我们已经开源了公司的旗舰平台 DeepMind Lab,并正在和动视暴雪合作,针对《星际争霸 2 》的AI 研究开发开源 API 。更多工具的发布正在路上,我们将会在官网开源页面与大家分享,敬请期待。”

技术特点

Sonnet 走的是面向对象(object-oriented)的路子,与 Torch/NN 类似,使得定义某些运算前馈通路(forward pass)的模块能够被创建出来。模块使用输入 Tensor 来调用,这向计算图(Graph)添加任务,并返回输出 Tensor。其中一项设计目标,是确保以透明的方式进行变量分享。这是通过对同个模块接下来的调用,自动重复使用变量来实现。

DeepMind 认为,许多深度学习文献中的模型,可被看做是一个等级结构(hierarchy)。比方说,一个 Differentiable Neural Computer (可微分神经计算机)包含一个控制器,这有可能是一个 LSTM,后者可按照包含标准线性层的形式来执行。DeepMind 发现,编写明确代表了子模块的代码,使得代码重复使用变得更容易,试验变得更快。因此,对于能在内部 declare 其他子模块的模块,Sonnet 支持鼓励其编写;或者在模型创建期间传递给其他模块。

DeepMind 认为十分有用的另外一项技术,是允许特定模块在随机聚集的 Tensor 群组上运行。RNN 的状态,最适合于以异构 Tensor 集合来表示,用扁平列表来表示它们很容易会导致错误。Sonnet 提供了处理这些随机等级结构的功能,所以改变你的试验,使用另一种 RNN,并不需要繁冗地修改代码。DeepMind 已经对核心 TensorFlow 做了修改,以更好地支持这一使用情况。

Sonnet 专为 TensorFlow 而设计,因此并不会导致用户无法访问底层细节,比如 Tensors 和 variable_scopes。在 Sonnet 中编写的模型,可与原始 TensorFlow 代码自由地混在一起,和其他高级算法库也可以。

最后,DeepMind 在博客上表示将会不断更新 Sonnet,使开源版本与公司内部使用版本相吻合。

via deepmind

本文分享自微信公众号 - AI研习社(okweiwu),作者:三川

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-04-08

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Github 项目推荐 | 用 Python 实现的基础机器学习算法

    本库包含了用 Python (3.6 版本及以上)实现的基本的机器学习算法,所有的算法都是从头开始写并且没有用到其他的机器学习库。该库旨在让开发者对这些基本的机...

    AI研习社
  • GitHub 学生大礼包开放申请:近 50 种专业工具随便用

    据了解,这个项目构建的初衷是帮助学生利用真实的工具进行实验,提高学生对雇主的吸引力。通过验证的学生在学校期间可免费获得 Github Pro,Github 教育...

    AI研习社
  • 看过10万个视频 AI才能识别你的脑残操作 | 2分钟读论文

    来源 / Two Minute Papers 翻译 / 朱婷 校对 / 李宇琛 整理 / 雷锋字幕组 AI 研习社出品系列短视频《 2 分钟论文 》,带大家用...

    AI研习社
  • DeepMind发布Sonnet,帮你用TensorFlow快速搭建神经网络

    去年 DeepMind 作出决定,将全部研究搬到 TensorFlow 框架上进行。 近一年时间过去,回头来看,DeepMind 认为这项选择十分正确——许多模...

    AI科技评论
  • DeepMind开源面向对象的神经网络库Sonnet

    信息技术新闻网站techcrunch发布消息称,谷歌旗下的DeepMind科技公司公开了Sonnet的源代码,使得人们可以更快地在人工智能系统TensorFlo...

    人工智能快报
  • DeepMind盈利时间或再延后:新报告质疑其医疗数据垄断

    新智元
  • 软件工程期末考试复习(十) 简答题汇总:

    1、能力成熟度的5个等级从低到高依次是:初始级(又称为1级),可重复级(又称为2级),已定义级(又称为3级),已管理级(又称为4级)和优化级(又称为5级)。

    用户2417870
  • 如何在 ASP.NET MVC 中集成 AngularJS(1)

    介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术。例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API...

    葡萄城控件
  • 梅宏院士:软件定义的未来,万物皆可互联,一切均可编程

    大数据文摘
  • 我的第一个 60k+ Star开源项目—JavaGuide

    人生总有各种各样的巧合发生。在 1 年多前,换句话说就是我还是大三的一名学生的时候。我开源了 JavaGuide ,直接到今天 JavaGuide 已经达到现在...

    macrozheng

扫码关注云+社区

领取腾讯云代金券