Тип вывода tf.py_function
не может быть вложенной последовательностью. Однако при использовании tf.py_function
с API tf.data
необходимо создать функцию-обертку (tf_foo
в приведенном ниже примере), и вы можете вкладывать выходные данные в эту функцию.
import tensorflow as tf
# The python function.
def foo(x):
return x, x, x, x
# Wrap the python function to make it compatible with `tf.data.Dataset.map`.
def tf_foo(x):
a, b, c, d = tf.py_function(foo, [x], Tout=[tf.float32, tf.float32, tf.float32, tf.float32])
return (a, b), (c, d)
dset = tf.data.Dataset.from_tensor_slices([0, 1, 2, 3, 4])
dset.map(tf_foo)
# <MapDataset shapes: ((<unknown>, <unknown>), (<unknown>, <unknown>)),
# types: ((tf.float32, tf.float32), (tf.float32, tf.float32))>
Это также продемонстрировано в руководстве TensorFlow .