包裝用于TensorFlow操作的Python函數(shù)

2018-11-14 12:02 更新
tf.py_func 函數(shù)
py_func(
    func,
    inp,
    Tout,
    stateful=True,
    name=None
)

定義在:tensorflow/python/ops/script_ops.py.

請參閱指南:包裝python函數(shù)>腳本語言運算符

包裝一個 Python 函數(shù),并將其用作 TensorFlow 操作.

給定一個 python 函數(shù) func,它將 numpy 數(shù)組作為其輸入,并將 numpy 數(shù)組作為其輸出返回,將此函數(shù)作為一個 TensorFlow 圖中的操作來包裝.下面的代碼段構造一個簡單的 TensorFlow 圖,它在圖中調用 np.sinh()NumPy 函數(shù)作為圖中的一個操作,例如:

def my_func(x):
  # x will be a numpy array with the contents of the placeholder below
  return np.sinh(x)
inp = tf.placeholder(tf.float32)
y = tf.py_func(my_func, [inp], tf.float32)

注意該 tf.py_func() 操作具有以下已知限制:

  • 函數(shù)的主體(如 func)將不會在 GraphDef 中序列化.因此,如果需要序列化模型并將其還原到不同的環(huán)境中,則不應使用此函數(shù).
  • 該操作必須在與調用 tf. py_func () 的 Python 程序在相同的地址空間中運行.如果您使用的是分布式 TensorFlow,則必須在與調用 tf. py_func () 的程序相同的進程中運行 tf.train.Server,并且必須將創(chuàng)建的操作固定到該服務器中的設備(例如,使用 tf.device():).

參數(shù):

  • func:一個 Python 函數(shù),它接受一個 NumPy ndarray 對象列表,該對象的元素類型與 inp 中相應的 tf.Tensor 對象相匹配,并返回 ndarray(或單個 ndarray 元素)對象列表,該對象的元素類型與 Tout 中相應的值匹配.
  • inp:Tensor 對象列表.
  • Tout:張量流數(shù)據(jù)類型或單張量流數(shù)據(jù)類型的列表或元組(如果只有一個),表示 func 返回什么.
  • stateful:(布爾值)如果為 True,則該函數(shù)應該被認為是有狀態(tài)的.如果一個函數(shù)是無狀態(tài)的,當給定相同的輸入時,它將返回相同的輸出并且沒有可觀察到的副作用.只有在無狀態(tài)操作時才執(zhí)行公共子表達式消除等優(yōu)化.
  • name:操作的名稱(可選).

返回值:

func 函數(shù)計算的張量或單張量的列表.

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號