tensorflow1.9新功能 autograph

本文介绍TensorFlow中的Autograph功能,该功能能够将Python代码转换为计算图形式,提高运行效率。文章提供了使用示例,包括如何安装、导入及两种调用方式,并展示了转换后的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近tf更新了一个新功能autograph,可以将python代码转化为计算图的形式,从而大幅提升效率。


  • 安装:
pip install -U tf-nightly
  • 导入:
from tensorflow.contrib import autograph as ag

- **调用autograph有两种方式,一种是声明,另一种是调用封装的api**

#直接对函数声明
@ag.convert()
def f(x):
  if x < 0:
    x = -x
  return x

with tf.Graph().as_default():
  x = tf.constant(-1)
  y = f(x) #声明后不需要再调用api
  with tf.Session() as sess:
    print(sess.run(y))
    # Output: 1

#或者调用api
converted_f = ag.to_graph(f)

print(converted_f(tf.constant(-1)))
# Output: Tensor
print(f(-1))
# Output: 1
  • 有一个简单的例子:
def f(x):
  if x < 0:
    x = -x
  return x

通过autograph.to_grah(f)转换会转变为类似

def graph_mode_f(x):
  with tf.name_scope('f'):

    def if_true():
      with tf.name_scope('if_true'):
        x_1, = x,
        x_1 = tf.negative(x_1)
        return x_1,

    def if_false():
      with tf.name_scope('if_false'):
        x_1, = x,
        return x_1,
    x = ag__.utils.run_cond(tf.greater(x, 0), if_true, if_false)
    return x

调用:

with tf.Graph().as_default():
  x = tf.constant(-1.0)

  converted_f = autograph.to_graph(f)
  y = converted_f(x)

  with tf.Session() as sess:
    print(sess.run(y))
    # Output: 1
2025-03-14 16:03:26.155367: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`. Traceback (most recent call last): File "E:\learn\Objectjiance\00.py", line 1, in <module> import tensorflow as tf File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\__init__.py", line 49, in <module> from tensorflow._api.v2 import __internal__ File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\_api\v2\__internal__\__init__.py", line 8, in <module> from tensorflow._api.v2.__internal__ import autograph File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\_api\v2\__internal__\autograph\__init__.py", line 9, in <module> from tensorflow.python.autograph.impl.api import tf_convert # line: 493 File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\autograph\impl\api.py", line 25, in <module> from tensorflow.python.autograph import operators File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\autograph\operators\__init__.py", line 36, in <module> from tensorflow.python.autograph.operators.conditional_expressions import if_exp File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\autograph\operators\conditional_expressions.py", line 18, in <module> from tensorflow.python.autograph.operators import control_flow File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\autograph\operators\control_flow.py", line 64, in <module> from tensorflow.python.autograph.operators import py_builtins File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\autograph\operators\py_builtins.py", line 29, in <module> from tensorflow.python.ops import cond File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\ops\cond.py", line 25, in <module> from tensorflow.python.ops import cond_v2 File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\ops\cond_v2.py", line 42, in <module> from tensorflow.python.ops import control_flow_util_v2 as util File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\ops\control_flow_util_v2.py", line 20, in <module> from tensorflow.python.eager.polymorphic_function import atomic_function File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\eager\polymorphic_function\atomic_function.py", line 30, in <module> from tensorflow.python.eager.polymorphic_function import function_type_utils File "D:\ProgramData\anaconda3\envs\my_env\lib\site-packages\tensorflow\python\eager\polymorphic_function\function_type_utils.py", line 21, in <module> import six ModuleNotFoundError: No module named &#39;six&#39;
03-15
Traceback (most recent call last): File "E:\sdxx\0319mx\train_model_cat3.py", line 1, in <module> import tensorflow as tf File "C:\Users\admins\.conda\envs\TF2\lib\site-packages\tensorflow\__init__.py", line 49, in <module> from tensorflow._api.v2 import __internal__ File "C:\Users\admins\.conda\envs\TF2\lib\site-packages\tensorflow\_api\v2\__internal__\__init__.py", line 8, in <module> from tensorflow._api.v2.__internal__ import autograph File "C:\Users\admins\.conda\envs\TF2\lib\site-packages\tensorflow\_api\v2\__internal__\autograph\__init__.py", line 8, in <module> from tensorflow.python.autograph.core.ag_ctx import control_status_ctx # line: 34 File "C:\Users\admins\.conda\envs\TF2\lib\site-packages\tensorflow\python\autograph\core\ag_ctx.py", line 21, in <module> from tensorflow.python.autograph.utils import ag_logging File "C:\Users\admins\.conda\envs\TF2\lib\site-packages\tensorflow\python\autograph\utils\__init__.py", line 17, in <module> from tensorflow.python.autograph.utils.context_managers import control_dependency_on_returns File "C:\Users\admins\.conda\envs\TF2\lib\site-packages\tensorflow\python\autograph\utils\context_managers.py", line 19, in <module> from tensorflow.python.framework import ops File "C:\Users\admins\.conda\envs\TF2\lib\site-packages\tensorflow\python\framework\ops.py", line 5929, in <module> ) -> Optional[Callable[[Any], message.Message]]: File "C:\Users\admins\.conda\envs\TF2\lib\typing.py", line 243, in inner return func(*args, **kwds) File "C:\Users\admins\.conda\envs\TF2\lib\typing.py", line 316, in __getitem__ return self._getitem(self, parameters) File "C:\Users\admins\.conda\envs\TF2\lib\typing.py", line 433, in Optional return Union[arg, type(None)] File "C:\Users\admins\.conda\envs\TF2\lib\typing.py", line 243, in inner return func(*args, **kwds) File "C:\Users\admins\.conda\envs\TF2\lib\typing.py", line 316, in __getitem__ return self._getitem(s
最新发布
03-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值