请教:去掉@tf.function而言,converge_to_2和add_21函数的输出类型不同?
来源:3-8 @tf.function函数转换
![](http://img1.sycdn.imooc.com/user/5b8cf0e70001a18202000200-100-100.jpg)
OliverSong
2019-07-04
两个问题:
-
@tf.funcion会改变原函数的输出类型吗?
-
.assign_add返回的数据类型是啥呢?
-
对于converge_to_2,保留或去掉@tf.function,返回的都同是 tf.Tensor对象。
但对于add_21,去掉后则返回tf.UnreadVariable对象,去掉前是tf.Tensor对象。 -
我注意到函数的return不同,无修饰下,converge_to_2的return是tf.Tensor,而add_21的assign_add返回的类型不太明白。
写回答
1回答
-
同学你好,很抱歉回复的迟了,
tf.function不影响输出类型。
tf.Variable是个稍微特殊的操作,因为没有办法确定构建图的时候函数调用了多少次,而tf.Variable只会被创建一次,这就有了冲突,所以tf.Variable在有@tf.function的时候只能放到外面。
可以参考https://juejin.im/post/5cebeb88e51d45775d516f05中的描述。
我猜测,去掉@tf.function,你把Variable放到函数中,那么返回值应该是一样的。
012019-10-27
相似问题