tf.py_func
Оборачивает функцию Python и использует её как операцию TensorFlow.
tf.py_func(
func, inp, Tout, stateful=True, name=None
)
Учитывая функцию Python func, которая принимает массивы NumPy в качестве аргументов и возвращает массивы NumPy в качестве выходных данных, оберните эту функцию в операцию в графе TensorFlow. Следующий фрагмент кода создаёт простой граф TensorFlow, который вызывает функцию NumPy np.sinh() в качестве операции в графе:
def my_func(x): # x will be a numpy array with the contents of the placeholder below return np.sinh(x) input = tf.compat.v1.placeholder(tf.float32) y = tf.compat.v1.py_func(my_func, [input], tf.float32)
Примечание: У операции tf.compat.v1.py_func() есть следующие известные ограничения:
Тело функции (т.е.
func) не будет сериализовано вGraphDef. Поэтому не следует использовать эту функцию, если вам нужно сериализовать вашу модель и восстановить её в другой среде.Операция должна выполняться в том же адресном пространстве, что и программа Python, которая вызывает
tf.compat.v1.py_func(). Если вы используете распределённый TensorFlow, вы должны запуститьtf.distribute.Serverв том же процессе, что и программа, вызывающаяtf.compat.v1.py_func(), и вы должны привязать созданную операцию к устройству в этом сервере (например, используяwith tf.device():).
| Аргументы | |
|---|---|
func | Функция Python, которая принимает объекты ndarray в качестве аргументов и возвращает список объектов ndarray (или один объект ndarray). Эта функция должна принимать столько аргументов, сколько тензоров в inp, и типы этих аргументов будут соответствовать соответствующим объектам tf.Tensor в inp. Возвращаемые ndarray должны соответствовать числу и типам, определённым Tout. Важное примечание: входящие и исходящие массивы NumPy ndarray для func не гарантируются как копии. В некоторых случаях их основная память будет совмещена с соответствующими тензорами TensorFlow. Изменение на месте или сохранение func входных или возвращаемых значений в структурах данных Python без явного (np.)copy может привести к непредсказуемым последствиям. |
inp | Список объектов Tensor. |
Tout | Список или кортеж типов данных TensorFlow, или один тип данных TensorFlow, если их только один, указывающий, что возвращает func. |
stateful | (Булево.) Если True, функция должна считаться состоятельной. Если функция бессостоятельна, то при одинаковом входе она будет возвращать тот же выход и не будет иметь наблюдаемых побочных эффектов. Оптимизации, такие как исключение общих подвыражений, выполняются только для бессостоятельных операций. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
Список Tensor или один Tensor, который func вычисляет. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/py_func