tf.py_func函数总结

参考链接:https://blog.csdn.net/jiongnima/article/details/80555387

tf.py_func(

  func,

  inp,

  Tout,

  stateful=True,

  name=None

)

在使用tf.py_func的过程中,主要核心是使用前三个参数。

第一个参数func,是最重要的,是一个用户自定义的函数,输入numpy array, 输出也是numpy array, 在该函数中,可以自由使用np.操作。

第二个参数inp,是func函数接收的输入,是一个列表

第三个参数Tout,指定了func函数返回的numpy array转化成tensor后的格式,如果是返回个值,就是一个列表元组;如果只有一个返回值,就是一个单独的dtype类型(当然也可以用列表括起来)

最后来看看tf.py_func的输出:

Returns:

A list of Tensor or a single Tensor which func computes.

输出是一个tensor(张量)列表或单个tensor。

到这里,tf.py_func的原理也就逐渐明晰了。首先,tf.py_func接收的是tensor(张量),然后将其转化为numpy array送入func(就是自定义的那条函数),最后再将func函数输出的Numpy array转化为tensor返回。

在使用过程中,有两个需要注意的地方,第一就是func函数的返回值类型一定要和Tout指定的tensor类型一致。第二就是,如下图所示,tf.py_func()中的func是脱离Graph的。在func中不能定义可训练的参数参与网络训练(反传)。

原文地址:https://www.cnblogs.com/elitphil/p/12853681.html