tensorflow2.0系列(5):再说说tf.function

本文深入探讨了tf.function在TensorFlow 2.0中的作用,包括它如何通过Autograph加速计算,以及在处理变量和控制流程时的注意事项。示例展示了tf.function在处理变量时可能导致的错误,并提供了解决方案。同时,文章提到了tf.function与Python类的super和__init__()之间的关系,引导读者进一步了解Python面向对象编程。

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

上一篇啰啰嗦嗦说了很多tf2.0中eager execution和autograph的一些特性,但是感觉还是没有说透,反而让人很迷惑,这次再唠唠tf.function到底有啥奇妙之处。

tf.function()

tf1.x中一般的工作流程,就是先创建一个计算图,然后通过tf.Session对图进行计算。例如:


g = tf.Graph()

with g.as_default():

    a = tf.constant(...)

    x = tf.constant(...)

    b = tf.Variable(..)

    y = tf.matmul(a, x) + b

    init_op = tf.global_variables_initializer()

with tf.Session() as sess:

    sess.run(init_op)

    print(sess.run(y))

eager execution带来的改变就是,正如大家多次听说的那样,用户不再需要直接定义计算图或者通过tf.Session来执行代码,也不需要调用tf.global_variables_initializer去初始化变量或者通过tf.control_dependencies去执行计算图中没有包含的节点。

a = tf.constant([[10,10],[11.,1.]])
x = tf.constant([[1.,0.],[0.,1.]])
b = tf.Variable(12.)
y = tf.matmul(a, x) + b
print(y.numpy())

但是也带来了执行效率低的问题,因为代码需要依赖Python的解释器来进行计算,无法对数据流以及计算图进行优化.

Autograph

移除tf.Session这一概念,可以用一个Python装饰符来进行加速,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值