このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.numpy_function

TensorFlow 1バージョン GitHubでソースを表示

Python関数をラップし、それをTensorFlow演算として使用します。

ノートブックで使用

チュートリアルで使用

Python関数funcすると、この関数はTensorFlow関数の操作としてラップされます。 funcは、引数としてnumpy配列を取り、出力としてnumpy配列を返す必要があります。

次の例では、グラフの操作としてnp.sinh()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_functiontf.py_functiontf.numpy_functionあることを除いて、非常に似ていtf.numpy_function numpyの配列を受け取り、そしてないtf.Tensor秒。関数にtf.Tensors 、関数で実行されるTensorFlow演算を微分可能にしたい場合は、 tf.py_functionを使用してtf.py_function

  • 関数の本体(つまりfunc )はtf.SavedModelでシリアル化されません。したがって、モデルをシリアル化して別の環境で復元する必要がある場合は、この関数を使用しないでください。

  • 操作は、 tf.numpy_function()を呼び出すPythonプログラムと同じアドレス空間で実行する必要があります。分散TensorFlowを使用している場合は、 tf.distribute.Serverを呼び出すプログラムと同じプロセスでtf.distribute.Serverを実行する必要があります。作成したオペレーションをそのサーバーのデバイスにピンtf.numpy_functionする必要があります(例with tf.device():を使用with tf.device(): )。

  • 関数はnumpy配列を取るため、numpy_functionを使用して勾配を取得することはできません。区別できるものが必要な場合は、tf.py_functionの使用を検討してください。

  • 結果の関数はステートフルであると想定され、最適化されることはありません。

func numpy.ndarrayオブジェクトを引数として受け入れ、 numpy.ndarrayオブジェクト(または単一のnumpy.ndarray )のリストを返すPython関数。この関数は、 inpテンソルと同じ数の引数を受け入れる必要があり、これらの引数の型はinp対応するtf.Tensorオブジェクトと一致します。返されるnumpy.ndarrayは、 Tout定義されている数と型と一致する必要があります。重要な注意: func入出力numpy.ndarrayは、コピーであるとは限りません。場合によっては、それらの基礎となるメモリが対応するTensorFlowテンソルと共有されます。明示的な(np。)コピーを行わずにインプレース変更またはfunc入力または戻り値をPythonデータ構造に格納すると、非決定的な結果が生じる可能性があります。
inp tf.Tensorオブジェクトのリスト。
Tout funcが返すものを示す、テンソルフローデータ型のリストまたはタプル、または1つしかない場合は単一のテンソルフローデータ型。
name (オプション)操作の名前。

func計算するtf.Tensor単一またはリスト。