# 【TensorFlow重大升级】自动将Python代码转为TF Graph，大幅简化动态图处理！

【新智元导读】TensorFlow发布重大功能改进AutoGraph，能自动将Python代码转换为TensorFlow Graph，TF动态图处理速度大幅提升！

```def huber_loss(a):
if tf.abs(a) <= delta:
loss = a * a / 2
else:
loss = delta * (tf.abs(a) - delta / 2)
return loss```

```@autograph.convert()
def huber_loss(a):
if tf.abs(a) <= delta:
loss = a * a / 2
else:
loss = delta * (tf.abs(a) - delta / 2)
return loss```

```def tf__huber_loss(a):
with tf.name_scope('huber_loss'):

def if_true():
with tf.name_scope('if_true'):
loss = a * a / 2
return loss,

def if_false():
with tf.name_scope('if_false'):
loss = delta * (tf.abs(a) - delta / 2)
return loss,
loss = ag__.utils.run_cond(tf.less_equal(tf.abs(a), delta), if_true,
if_false)
return loss```

```with tf.Graph().as_default():
x_tensor = tf.constant(9.0)

# The converted function works like a regular op: tensors in, tensors out.
huber_loss_tensor = huber_loss(x_tensor)

with tf.Session() as sess:
print('TensorFlow result: %2.2f\n' % sess.run(huber_loss_tensor))```

AutoGraph不仅仅是一组有用的宏指令(macro); 它涵盖Python语言的任何部分(利用源代码转换)，包括控制流、函数应用程序和赋值、生成模板代码以及重构常用的Python让它易于转换为图形。

```def collatz(a):
counter = 0
while a != 1:
if a % 2 == 0:
a = a // 2
else:
a = 3 * a + 1
counter = counter + 1
return counter

graph_mode_collatz = autograph.to_graph(collatz)
# The code is human-readable, too
print(autograph.to_code(collatz))

collatz_tensor = graph_mode_collatz(tf.constant(n))```

AutoGraph可以支持任意嵌套控制流，例如：

```def f(n):
if n >= 0:
while n < 5:
n += 1
print(n)
return n```

AutoGraph允许你将元素追加到循环内的数组中。 为了达到这个要求，我们使用一些AutoGraph助手，例如set_element_type 和 stack。

```def f(n):
z = []
# We ask you to tell us the element dtype of the list
autograph.set_element_type(z, tf.int32)
for i in range(n):
z.append(i)
# when you're done with the list, stack it
# (this is just like np.stack)
return autograph.stack(z)```

```def f(x):
assert x != 0, 'Do not pass zero!'
return x * x```

AutoGraph开辟了构建和训练模型的新思路。我们期待根据开发者社区的建议为AutoGraph添加更多功能，所以请提出你的建议和问题吧！

AutoGraph和Eager Execution

AutoGraph是一款工具，可让你轻松构建直观，复杂的模型，在TensorFlow图中轻松运行。 这是一个现在在contrib中的实验工具，但我们希望尽快将其转移到核心TensorFlow中。

0 条评论

## 相关文章

34660

### MLSQL解决了什么问题

1、项目难以重现，可阅读性和环境要求导致能把另外一个同事写的python项目运行起来不得不靠运气

24130

### DeepMind 开源内部深度学习框架 Sonnet，研究通过梯度下降学习

【新智元导读】DeepMind 今天开源了最新的深度学习框架 Sonnet。Sonnet 被专门设计用于与 TensorFlow 协同工作，能够更方便、直接地构...

32130

1.3K70

### 开发 | 紧跟未来深度学习框架需求，TensorFlow推出Eager Execution

35660

PageRank算法是谷歌曾经独步天下的“倚天剑”，该算法由Larry Page和Sergey Brin在斯坦福大学读研时发明的，论文点击下载: The Pag...

15420

### Tensorflow 入门与安装 | Tensorflow 最全资料汇总【2】

【AI研习社】关注AI前沿、开发技巧及技术教程等方面的内容。欢迎技术开发类文章、视频教程等内容投稿，邮件发送至：zhangxian@leiphone.com 自...

38360

33990

42340

46660