专栏名称: AI前线
我们专注大数据和机器学习,关注前沿技术和业界实践。每天发布高质量文章,技术案例等原创干货源源不断。同时有四千人的社群微课堂,每周一次业界大牛技术分享,也希望你能从这里分享前沿技术,交流深度思考。
目录
相关文章推荐
人工智能与大数据技术  ·  AI编程新王Claude ... ·  3 天前  
人工智能与大数据技术  ·  15亿美元AI独角兽崩塌,全是印度程序员冒充 ... ·  2 天前  
大数据文摘  ·  5个月狂飙200%!Anthropic ... ·  3 天前  
51好读  ›  专栏  ›  AI前线

谷歌大脑团队发布TensorFlow新功能:交互性提升并加入动态图机制

AI前线  · 公众号  · 大数据  · 2017-11-01 18:00

正文

请到「今天看啥」查看全文


print(m)
# The 1x1 matrix [[4.]]

动态模型可以利用 Python 流控制加以构建。以下示例为利用 TensorFlow 的运算操作进行 Collatz 推理:

a = tf.constant(12)
counter = 0
while not tf.equal(a, 1):
  if tf.equal(a % 2, 0):
    a = a / 2
  else:
    a = 3 * a + 1
  print(a)

在这里,使用 tf.constant(12) Tensor 对象将把所有数学运算转化为张量运算,因此所有返回值皆将为张量。

梯度

大多数 TensorFlow 用户对于自动化区分都很感兴趣。这是因为每次调用期间都会发生不同的运算,因此我们需要将全部正向运算记录在磁带之上,而后在计算梯度时再次播放。在梯度计算完成后,我们将丢弃该磁带。

如果大家熟悉 autograd 软件包,那么这里使用的 API 与其非常相似。举例来说:

def square(x):
  return tf.multiply(x, x)

grad = tfe.gradients_function(square)

print(square(3.))    # [9.]
print(grad(3.))      # [6.]

这里的 gradients_function 调用会将 Python 函数 square() 视为一项参数,同时返回一个 Python 可调用函数——此函数负责计算出 square() 的偏导数,结果则作为其输入内容。如此一来,为了在 3.0 条件下计算出 square() 导数,这里需要调用 grad(3.0),结果为 6。

同样的 gradients_function 调用亦可用于获取平方的二阶导数:

gradgrad = 
   tfe.gradients_function(
       lambda x: grad(x)[0]) print(gradgrad(3.))  # [2.]

需要强调的是,控制流可能导致不同的运算操作,具体如下例所示。

def abs(x):
  return x if x > 0. else -x

grad = tfe.gradients_function(abs)

print(grad(2.0))  # [1.]
print(grad(-2.0)) # [-1.]
自定义梯度

用户可能希望在某一运算或者函数中使用自定义梯度。这种处理方式适用于多种场景,具体包括为一系列运算提供更为有效或者数值更为稳定的梯度。

以下示例展示了自定义梯度的使用方式。让我们首先来看函数 log(1 + e x ) ,其通常使用于交叉熵与对数似然性计算当中。







请到「今天看啥」查看全文