资讯专栏INFORMATION COLUMN

DeepMind开源Sonnet:可在TensorFlow中快速构建神经网络

lunaticf / 1559人阅读

摘要:距做出决定,在整个研究机构中使用已将近一年。安装请确保你拥有版本的至少为版,如果版本过旧,请遵循以下步骤安装如果你想使用,请在安装时急活你的,或跳过此步骤配置头文件首先复制和的源代码作为一个子模块然后使用你可以在配置期间选择建议的默认值。

距 DeepMind 做出决定,在整个研究机构中使用 TensorFlow(TF) 已将近一年。事实证明这是一个明智的选择——较之以往,我们很多模型的学习速度变得更快,而分布式训练中的嵌入式特征极大地简化了我们的代码。同时,我们发现 TensorFlow 的灵活性和自适应性使得为特定目的构建更高级的框架成为可能,DeepMind 内部已经开发了一个框架来用 TF 快速构建神经网络模块。我们正积极开发的这个代码库以让它更好地满足我们的研究需求,今天我们很高兴宣布今天它已开源化。我们把这个框架命名为 Sonnet。

自从 2015 年 11 月首次推出以来,围绕 TensorFlow 出现了许多更高级的库,使得很多常用任务得以更快实现。除了和现存的一些神经网络库具有许多相似性外,Sonnet 还具有一些根据 DeepMind 的研究需求设计的特性。和我们 Learning to learn 论文一同发布的代码是 Sonnet 的初级版本,其它即将发布的代码则基于我们今天发布的完整库而完成。

将 Sonnet 开源化使其它在 DeepMind 内创建的模型得以在社区中共享,我们也希望社区能使用 Sonnet 将他们的研究向前推进。在最近几个月,我们也将自己的旗舰平台 DeepMind Lab 开源化了,并且正和暴雪一同工作来开发一个开源 API 以支持《星际争霸 2》中的人工智能研究。还有更多的发布版即将到来,并且它们将出现在我们新的开源页面:

https://deepmind.com/research/open-source/

与 Torch/NN 类似,Sonnet 库使用面向对象的方法,允许创建定义一些前向传导计算的模块。模块用一些输入 Tensor 调用,添加操作到图里并返回输出 Tensor。其中一种设计选择是通过在随后调用相同的模块时自动重用变量来确保变量分享被透明化处理。

在各类文献中,很多模型都可以被视为分层形式,如可微分神经计算机可能包含 LSTM 控制器,可以实现为包含标准线性层。我们已经发现,编写明确表示子模块的代码可以轻松实现代码重用和快速实验——Sonnet 可以在内部声明其他子模块的编写模块,或在构建时传递其他模块。

我们发现最有意义的技术是允许某些模块在任意嵌套的 Tensors 组中进行操作。循环神经网络的较佳表现形式通常是一些异构 Tensor 的集合,如果表示为一个平面列表则会容易出错。Sonnet 提供了用于处理这些层次结构的实用工具,这样在你需要更换另一种 RNN 的时候就不需要繁琐的代码更改了。我们已经对 TensorFlow 内核进行了更改,对这种用例增加了更多支持。

Sonnet 专为 TensorFlow 设计,因此它不会阻止你访问 Tensor 和 variable_scope 这样的底层细节。用 Sonnet 编写的模型可以与原始 TensorFlow 代码,及其他高级库中的代码自由融合。

Sonnet 的发布不是一次性的,我们将持续更新 Github 以使其符合 DeepMind 的内部版本。我们对目前 Sonnet 的功能还有很多想法,它们将陆续成为现实。我们非常感谢来自开源社区的贡献。

GitHub 链接:https://github.com/deepmind/sonnet

安装步骤

若想安装 Sonnet,你需要使用 bazel 依靠 TensorFlow 头文件对这个库进行编译。请按照指定步骤安装 TensorFlow:

https://www.tensorflow.org/install/

该库兼容 Linux/Mac OS X 和 Python 2.7。TensorFlow 的版本必须至少为 1.0.1。Sonnet 支持 TensorFlow 的 virtualenv 安装模式,以及 nativ pip 安装。

安装 BAZEL

请确保你拥有版本的 bazel(至少为 0.4.5 版),如果版本过旧,请遵循以下步骤:

https://bazel.build/versions/master/docs/install.html

Virtualenv TensorFlow 安装

如果你想使用 virtualenv,请在安装时急活你的 virtualenv,或跳过此步骤:

$ source $VIRTUALENV_PATH/bin/activate # bash, sh, ksh, or zsh

$ source $VIRTUALENV_PATH/bin/activate.csh # csh or tcsh

配置 TensorFlow 头文件

首先复制 Sonnet 和 TensorFlow 的源代码作为一个子模块:

$ git clone --recursive https://github.com/deepmind/sonnet

然后使用 configure:

$ cd sonnet/tensorflow

$ ./configure

$ cd ../

你可以在 TensorFlow 配置期间选择建议的默认值。注意:这不会修改你现有的 TensorFlow 安装。这一步是让 Sonnet 构建于 TensorFlow 头文件上的必要步骤。

构建和运行安装程序

运行安装脚本,在临时目录中创建一个 wheel file:

$ mkdir /tmp/sonnet

$ bazel build --config=opt :install

$ ./bazel-bin/install /tmp/sonnet

pip install 生成的 wheel file:

$ pip install /tmp/sonnet/*.whl

如果已安装 Sonnet,卸载 wheel file 上之前的 pip install :

$ pip uninstall sonnet

你可以通过尝试重采样(resampler op)这样的操作来验证 Sonnet 是否安装成功:

$ cd ~/

$ python>>> import sonnet as snt>>> import tensorflow as tf>>> snt.resampler(tf.constant([0.]), tf.constant([0.]))

预计的输出应该是:

当然,如果引入了 ImportError,C++组件未找到时,请确保你没有导入复制的源代码(即在复制的资源库外调用 Python),并在安装 wheel file 前卸载 Sonnet。 

原文链接:https://deepmind.com/blog/open-sourcing-sonnet/

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4506.html

相关文章

  • 23种深度学习库排行榜:TensorFlow最活跃、Keras最流行

    摘要:我们对种用于数据科学的开源深度学习库作了排名。于年月发布了第名,已经跻身于深度学习库的上半部分。是最流行的深度学习前端第位是排名较高的非框架库。颇受对数据集使用深度学习的数据科学家的青睐。深度学习库的完整列表来自几个来源。 我们对23种用于数据科学的开源深度学习库作了排名。这番排名基于权重一样大小的三个指标:Github上的活动、Stack Overflow上的活动以及谷歌搜索结果。排名结果...

    princekin 评论0 收藏0
  • Attention!神经网络的注意机制到底是什么?

    摘要:神经网络的注意机制已经引起了广泛关注。什么是通俗地说,神经网络注意机制是具备能专注于其输入或特征的神经网络,它能选择特定的输入。在实践中,它们可以被一维高斯函数向量实现。 神经网络的注意机制(Attention Mechanisms)已经引起了广泛关注。在这篇文章中,我将尝试找到不同机制的共同点和用例,讲解两种soft visual attention的原理和实现。什么是attention?...

    Rango 评论0 收藏0
  • TensorFlow-dev-summit:那些TensorFlow上好玩的和黑科技

    摘要:现场宣布全球领先的深度学习开源框架正式对外发布版本,并保证的本次发布版本的接口满足生产环境稳定性要求。有趣的应用案例皮肤癌图像分类皮肤癌在全世界范围内影响深远,患病人数众多,严重威胁身体机能。 前言本文属于介绍性文章,其中会介绍许多TensorFlow的新feature和summit上介绍的一些有意思的案例,文章比较长,可能会花费30分钟到一个小时Google于2017年2月16日(北京时间...

    BLUE 评论0 收藏0

发表评论

0条评论

lunaticf

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<