"Function" (ネットエンコーダ)

NetEncoder[{"Function",f,{d1,d2,,dn}]

d1×d2××dn の出力テンソルを作り出すための入力を,カスタム関数 f を使って符号化するエンコーダを表す.

詳細

  • NetEncoder[{"Function",}]は,ニューラルネットワークのための前処理を定義するために使われることが多い.
  • NetEncoder[][input]はエンコーダを入力に適用し,出力を作る.
  • NetEncoder[][{input1,input2,}]はエンコーダを入力のリストに適用し,出力のリストを作る.
  • エンコーダへの入力 inputi はどのようなタイプでも,f[inputi]d1×d2××dn の次元の配列を作り出すものであればよい.配列は,NumericArray式または数の多次元リストでよい.
  • ネットワークの構築時に"port"->NetEncoder[]と指定することで,エンコーダをネットワークの入力ポートに付加することができる.
  • パラメータ
  • 以下のパラメータが使用可能である:
  • "Pattern"None関数への入力に期待されるパターン
    "Batched"False関数に入力のバッチを与えるかどうか
    SaveDefinitionsTrueエンコーダの評価に関連した現行の定義を自動保存すべきかどうか
    InitializationNoneエンコーダが最初に適用された時に評価される式
    ExcludedContextsAutomaticシンボルの定義が再帰的に保存されないコンテキスト
    IncludedContextsAllシンボルの定義が再帰的に保存されるコンテキスト
  • パラメータ"Pattern"patt は,エンコーダへの有効な入力がパターン patt と一致するよう指定する."Pattern" Noneは,チェックが行われないことを示す.
  • パラメータ"Batched" Trueを使うと,関数は例題ごとに個別に適用されるのではなく,例題のバッチにまとめて一回適用される.
  • デフォルトで,NetEncoder[{"Function",f,}]f の評価に必要なすべてのシンボルの定義を保存し,エンコーダを最初に評価するときにその定義を回復する.保存する定義の選択はSaveDefinitionsInitializationExcludedContextsIncludedContextsの各オプションを使って変更できる.

例題

すべて開くすべて閉じる

  (1)

スカラーを取り,そのスカラーの長さ2のリストを作り出す関数エンコーダを作る:

エンコーダをスカラーに適用する:

エンコーダをスカラーのリストに適用する:

スコープ  (2)

ラジアン入力を直交座標に変換するカスタムエンコーダを作る:

エンコーダを角度のリストに適用する:

正の有界の整数列を返すエンコーダを作る:

このエンコーダをEmbeddingLayerに対して使う:

パラメータ  (3)

"Pattern"  (1)

入力が実数から成ることをチェックする関数エンコーダを作る:

"Batched"  (1)

関数を入力のバッチに一回で適用するエンコーダを作る:

これを,関数を入力に個別に適用するエンコーダと比較する:

SaveDefinitions  (1)

デフォルトで,エンコーダの評価に必要な定義は保存される:

定義を消去する:

定義はエンコーダを最初に適用する際に回復される:

この動作はSaveDefinitionsFalseを使って無効にできる:

定義を消去する:

定義は回復できない:

考えられる問題  (1)

パラメータ"Pattern"Noneを使うと,入力が1つの例なのか,例のリストなのかが曖昧になる.結果として,例のリストが与えられた場合には,関数は余分に時間が使える: