作家
登录

谷歌推出Tangent开源库,在Python源代码上做自动微分

作者: 来源: 2017-11-10 09:13:41 阅读 我要评论

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践


膳绫擎的函数df只实用于张量(非数组)输入。Tangent也支撑:

  • 用TensorFlow Eager函数来处理数组
  • 子例程
  • 控制流

谷歌推出Tangent开源库,在Python源代码上做主动微分

谷歌今天推出了一个新的开源Python主动微分库:Tangent。

和现有的机械进修库不合,Tangent是一个源代码到源代码的体系,应用Python函数f,并用一个新的Python函数来计算f的梯度。这能帮用户更好地看清梯度计算,并更简单地对梯度进行用户级编辑和调试。

此外,Tangent还有更多调试和设计机械进修模型的功能:

  • 轻松调试反向传递过程(backward pass)
  • 快速的gradient surgery
  • 正向模式主动微分
  • 高校的Hessian向量积
  • 代码优化

本文扼要介绍了Tangent API,包含若何用它在Python中生成易于懂得、调试和修改的梯度代码。

练习神经收集、研究新架构,就须要我们精确、高效、便利地计算这些导数。当模型练习不好时,或者测验测验构建我们不懂得的新器械时,也须要能调试这些导数。主动微分(简称autodiff)就可以或许计算里表示某些数学函数的计算机法度榜样的导数,并且几乎所有机械进修库都能实现它。

这项技巧的名字——反向模式主动微分——就来源竽暌冠这种逆向处理。

现有的机械进修库经由过程跟踪法度榜样的履行(在运行时,比如TensorFlow Eager、PyTorch、Autograd),或者构建动态数据流图然后微分它(提前,比如TensorFlow)来实现主动微分。

Tangent采取了与它们都不合的方法,在Python源代码上提前履行主动微分,并生成Python源代码作为输出。

于是,你可以像攫取法度榜样其他部分一样,来攫取主动导数代码。

对于那些不仅想用Python啦源模型,还想在不就义速度和灵活性的情况下来攫取、调试主动生成的导数代码的研究人员和学生来说,Tangent异常有效。

检查和调试Tangent模型不须要特别的对象,Tangent可以在Python宏大年夜又赓续增长的子集上工作,为其他Python机械进修库供给它们所没有的主动微分特点。它机能高,且与TensorFlow、NumPy兼容。

如何主动为Python代码生成导数呢?

像tf.exp或tf.log如许的数学函数具有导数,我们可以编写出来构建反向传递,子例程、前提、轮回等语法片段也同样具有反向传递版本。Tangent能为任何Python语法、以及很多Numpy和TensorFlow函数调用生成导数代码。

Tangent有一个单一功能API:

下面的动图展示了当我们在Python函数上调用tangent.grad时会产生什么:

如不雅你想列出本身的导数,可以运行:

对于Python语法的导数和TensorFlow Eager函数,Tangent有一个巨大年夜的recipe库。tangent.grad会抓取你传递给它的Python函数源代码,然后反向遍历它,大年夜本身的库中查找匹配的反向传递recipe,并把它加到导数函数的末尾。

神经收集为机械进修带来了巨大年夜的进步,而我们练习神经收集来完成各类义务的根本思惟已经存在30年了,它就是反向模式主动微分(reverse-mode automatic differentiation),也就是我们常说的反向传播(backpropagation)。反向传播的过程包含两次经由过程神经收集:起首是运行“正向传递”来计算每个节点的输出值,然后再运行“反向传递”计算一系列导数,来肯定若何更新权重以进步模型精确性。

谷歌在博客文┞仿中强调,固然Tangent大年夜支撑TensorFlow Eager开端,但它并不和某一个库绑定,他们也愿意接收添加PyTorch或者MXNet导数recipe的请求。

【编辑推荐】

  1. Python中的时光处理大年夜总结
  2. Python转JavaScript编译器,天潦攀类!还能转代码,到底怎么做到的
  3. 推荐一款开源的Web渗入渗出测试对象集合,合适测试人员个性化打造
  4. 2017数据科学与机械进修行业近况查询拜访:Python是最受迎接的说话
  5. 若相干法度榜样员不幸去世,他的开源软件会有人保护吗
【义务编辑:庞桂玉 TEL:(010)68476606】

  推荐阅读

  企业想要成功,如何打造下一代IT安全团队?

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 企业数字资产比以往任何时刻都轻易受到进击,企业须要经验丰富的引导者来引导他们的数字防御工作。但如今>>>详细阅读


本文标题:谷歌推出Tangent开源库,在Python源代码上做自动微分

地址:http://www.17bianji.com/lsqh/38697.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)