请教:去掉@tf.function而言,converge_to_2和add_21函数的输出类型不同?

来源:3-8 @tf.function函数转换

OliverSong

2019-07-04

两个问题:

  1. @tf.funcion会改变原函数的输出类型吗?

  2. .assign_add返回的数据类型是啥呢?

  3. 对于converge_to_2,保留或去掉@tf.function,返回的都同是 tf.Tensor对象。
    但对于add_21,去掉后则返回tf.UnreadVariable对象,去掉前是tf.Tensor对象。

  4. 我注意到函数的return不同,无修饰下,converge_to_2的return是tf.Tensor,而add_21的assign_add返回的类型不太明白。

写回答

1回答

正十七

2019-10-24

同学你好,很抱歉回复的迟了,

  1. tf.function不影响输出类型。

  2. tf.Variable是个稍微特殊的操作,因为没有办法确定构建图的时候函数调用了多少次,而tf.Variable只会被创建一次,这就有了冲突,所以tf.Variable在有@tf.function的时候只能放到外面。

可以参考https://juejin.im/post/5cebeb88e51d45775d516f05中的描述。

我猜测,去掉@tf.function,你把Variable放到函数中,那么返回值应该是一样的。

0
1
OliverSong
非常感谢!
2019-10-27
共1条回复

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程