包裝一個 python 函數並將其用作 TensorFlow 操作。
用法
tf.numpy_function(
func, inp, Tout, name=None
)
參數
-
func
一個 Python 函數,它接受numpy.ndarray
對象作為參數並返回numpy.ndarray
對象列表(或單個numpy.ndarray
)。此函數必須接受與inp
中的張量一樣多的參數,並且這些參數類型將匹配inp
中相應的tf.Tensor
對象。返回的numpy.ndarray
必須與定義的數量和類型相匹配Tout
。重要提示:func
的輸入和輸出numpy.ndarray
不保證是副本。在某些情況下,它們的底層內存將與相應的 TensorFlow 張量共享。在沒有顯式 (np.) 複製的情況下,在 python 數據結構中就地修改或存儲func
輸入或返回值可能會產生不確定的後果。 -
inp
tf.Tensor
對象的列表。 -
Tout
tensorflow 數據類型的列表或元組或單個 tensorflow 數據類型(如果隻有一個),指示func
返回的內容。 -
name
(可選)操作的名稱。
返回
-
func
計算的tf.Tensor
的單個或列表。
給定一個 python 函數 func
將此函數包裝為 TensorFlow 函數中的一個操作。 func
必須將 numpy 數組作為其參數並返回 numpy 數組作為其輸出。
以下示例使用 np.sinh()
作為圖中的操作創建 TensorFlow 圖:
def my_numpy_func(x):
# x will be a numpy array with the contents of the input to the
# tf.function
return np.sinh(x)
@tf.function(input_signature=[tf.TensorSpec(None, tf.float32)])
def tf_function(input):
y = tf.numpy_function(my_numpy_func, [input], tf.float32)
return y * y
tf_function(tf.constant(1.))
<tf.Tensor:shape=(), dtype=float32, numpy=1.3810978>
與 tf.py_function
的比較:tf.py_function
和 tf.numpy_function
非常相似,除了 tf.numpy_function
采用 numpy 數組,而不是 tf.Tensor
s。如果您希望函數包含 tf.Tensors
,並且在函數中執行的任何 TensorFlow 操作都是可微的,請使用 tf.py_function
。
注意:tf.numpy_function
操作具有以下已知限製:
函數體(即
func
)不會在tf.SavedModel
中序列化。因此,如果您需要序列化模型並在不同的環境中恢複它,則不應使用此函數。該操作必須在與調用
tf.numpy_function()
的 Python 程序相同的地址空間中運行。如果您使用分布式 TensorFlow,則必須在與調用tf.numpy_function
的程序相同的進程中運行tf.distribute.Server
,您必須將創建的操作固定到該服務器中的設備(例如,使用with tf.device():
)。由於該函數采用 numpy 數組,因此您不能通過 numpy_function 獲取漸變。如果您需要可區分的東西,請考慮使用 tf.py_function。
結果函數被假定為有狀態的並且永遠不會被優化。
相關用法
- Python tf.nn.embedding_lookup_sparse用法及代碼示例
- Python tf.nest.is_nested用法及代碼示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代碼示例
- Python tf.nn.dropout用法及代碼示例
- Python tf.nest.assert_same_structure用法及代碼示例
- Python tf.nn.gelu用法及代碼示例
- Python tf.nn.RNNCellDeviceWrapper.set_weights用法及代碼示例
- Python tf.no_gradient用法及代碼示例
- Python tf.nn.embedding_lookup用法及代碼示例
- Python tf.nn.RNNCellDeviceWrapper.get_weights用法及代碼示例
- Python tf.nn.local_response_normalization用法及代碼示例
- Python tf.nn.scale_regularization_loss用法及代碼示例
- Python tf.nn.RNNCellResidualWrapper.add_loss用法及代碼示例
- Python tf.nn.max_pool用法及代碼示例
- Python tf.nn.RNNCellDropoutWrapper.set_weights用法及代碼示例
- Python tf.nest.map_structure用法及代碼示例
- Python tf.nn.l2_loss用法及代碼示例
- Python tf.nn.log_softmax用法及代碼示例
- Python tf.nn.weighted_cross_entropy_with_logits用法及代碼示例
- Python tf.name_scope用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.numpy_function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。