欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

tangent

程序员文章站 2024-03-14 21:56:35
...

https://github.com/google/tangent

这是一个python写的,可以自动求导的库。

之前的深度学习框架,有两个相对矛盾的点需要解决
1. 提前计算数据流,将需要求导函数(将框架里面的算子自动转化成导数函数,比如 f(x) = x * x 的导数函数是 p(x) = 2 * x ),这个能提高执行效率,所以graph 构建的code不是真实model执行的过程,code执行的时候不涉及data。 tensorflow是提前计算
2. 模型即时代码,这个和我们原始的python代码风格一致,代码执行到哪一步,数据和求导就是该步骤的真实求值,code,model,data是同时进行的,你代码trace到哪里,数据run到哪一步,求导就可以到哪里,debug是很简单的,比如 Pytorch

tanget工具,它是将你的函数代码转换成python的求导代码,输出的是一个求导函数
兼容函数:

1. TensorFlow
2. NumPy

支持的基础计算:

1.  basic arithmetic:  +,-,/,**,*
2.  pieces of syntax:  for, if, while
3.  TensorFlow Eager functions: tf.reduce_sum, tf.exp, tf.matmul, ...

作用:

1. 傻瓜式求导的实现,代码直接嵌入。
2. 方便求导debug

示例:

In [1]: import tangent
   ...: def f(x):
   ...:   a = x * x
   ...:   b = x * a
   ...:   c = a + b
   ...:   return c
   ...: 
   ...: forward_df = tangent.grad(f, mode='forward')
   ...: forward_df(3.0,1.0)
   ...: 
Out[1]: 33.0

tangent

推荐阅读