本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】DeepMind 开源内部深度学习框架 Sonnet,研究通过梯度下降学习

时间:2017-04-08 21:45来源:668论坛 作者:118KJ 点击:
编译:贾岳鹏 熊笑 【新智元导读】 DeepMind 今天开源了最新的深度学习框架 Sonnet。Sonnet 被专门设计用于与 TensorFlow 协同工作,能够更方便、直接地构建复杂神经网络模型。Sonnet 开源

编译:贾岳鹏 熊笑

  【新智元导读】DeepMind 今天开源了最新的深度学习框架 Sonnet。Sonnet 被专门设计用于与 TensorFlow 协同工作,能够更方便、直接地构建复杂神经网络模型。Sonnet 开源可以使 DeepMind 创建的其他模型轻松地与社区共享。Sonnet 将定期更新。

  DeepMind 决定把整个研究架构转为使用 TensorFlow(TF)已经快一年了。这被证明是一个不错的选择——我们的许多模型学习速度明显更快,内置的分布式训练功能极大地简化了我们的代

  我们发现TF 的灵活性和适应性适合于为特定目的构建更高级别的框架,并且我们已经写了一个这样的框架,可以用 TF 快速构建神经网络模块。我们正在积极开发这个代库,但是迄今为止它是如此契合我们的研究需求,所以我们兴奋地宣布,今天我们要将这一框架开源。我们把它称为 Sonnet 框架。

  

【j2开奖】DeepMind 开源内部深度学习框架 Sonnet,研究通过梯度下降学习

  自2015 年11 月首次发布以来,更高级别库的多样化生态系统在 TensorFlow 周围不断涌现,使得一般性任务能够更快实现。Sonnet 与其中一些现有的神经网络库具有许多相似之处,但同时具有一些为我们的研究要求专门设计的特性。在此前的Learning to learn paper(详见下文)中,我们用了一些代码,其中就包括了 Sonnet 的初步版本,其他即将发布的代码版本将建立在我们今天发布的完整库中。

  开源 Sonnet,可以使 DeepMind 创建的其他模型轻松地与社区共享,我们同时希望社区能够使用 Sonnet 进行自己的研究。近几个月来,我们还开源了我们的 DeepMind Lab 旗舰平台,目前正在与 Blizzard 合作开发支持星际争霸II 中 AI 研究的开源 API。将来还会推出更多的版本,它们都将在我们的新的开源页面上共享。

  该库使用面向对象的方法,类似于 Torch / NN,允许定义了一些计算前传的模块的创建。模块被一些 Tensor 输入“调用”,为 Graph 添加操作并返回 Tensor 输出。其中一个设计选择是确保通过在后续调用同一模块时自动重用变量来透明地处理变量共享。

  文中的许多模型当然会很自然地被视为层次结构,例如:可微分神经计算机包含可能是LSTM 的控制器,可被当做包含一个标准线性层植入。我们发现,编写详尽表述子模块的代码可以实现代码的更易重复使用及更快应用于实验 – Sonnet 提倡编写可以在内部同时表述其他子模块的模块或者在构建过程中可被其他模块传递的模块。

  我们发现非常有用的最后一个技术是让特定模块在任意嵌套的 Tensor 组中进行操作。 通常一组可微分神经计算机可以对可微分神经计算的状态进行最佳表述, 而以平行列表的方式表述是容易出错的。Sonnet 提供实用程序来应对这些任意层次结构,以便将实验更改为使用不同类型的 RNN 不需要繁琐的代码更改。我们也已经对核心 TF 进行了更改以更好地支持这种使用案例。

  Sonnet 被专门设计用于与 TensorFlow 协同工作,因此不会阻止访问底层细节,如 Tensors 和可变范围等。Sonnet 编写的模型可以与原始的 TF 代码以及其他高级库中的模型自由混合。

  这不是一次性发布 - 我们将定期更新 Github repository 以与我们的内部版本吻合。我们对很多新功能还有很多想法,j2直播,这些功能将在准备就绪时提供。我们对来自社区的贡献感到非常兴奋。要了解更多关于 Sonnet 的信息,请访问我们的 GitHub repository。

  GitHub 库:https://www.github.com/deepmind/sonnet

  再来一个新的 TF 库意义何在?

  在 Sonnet 的Github页面,研究人员给出了一些常见问题的回答,从中我们能更好的了解 DeepMind 构建并开源 Sonnet 的初心,以及如何更好地利用这个工具。

  问:为什么又搞了个 TF 库出来?

  答:现有的 TF 库对于 DeepMind 来说使用起来非常不灵活,因为我们有大量的使用案例是需要做权重共享的(weight sharing)。现在,所有的东西用 tf.make_template,从一开始就能支持权重共享,由此带来的好处显而易见是超出开发成本的。不仅如此,将配置与连接分离开来的 paradigm 也更方便模块组合。

  问:在同一个build()的后续调用中可以访问不同的变量吗?

  答:不行。tf.make_template 不允许这样做,它会把后续调用中访问不同的变量当成错误。

  问:如果错误地把两个模块做了同样的命名会怎么样?

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容