ThreadingLayer

ThreadingLayer[f]

複数の入力配列を取り,関数 f を対応する配列要素に適用する,ネット層を表す.

ThreadingLayer[f,bspec]

配列の形状をブロードキャスト指定 bspec に従って一致させる.

詳細とオプション

  • ThreadingLayerNetGraphの中で使われることが多い.
  • ThreadingLayer[f]の関数 f は,PlusSubtractTimesDividePowerSurdMinMaxClipModArcTanErfのいずれでもよい.
  • 一般に,f は,2引数に適用された場合にPlusSubtract等と,数,ElementwiseLayerでサポートされるすべての関数の任意の組合せ,およびIfAndOrWhichPiecewiseEqualGreaterGreaterEqualLessLessEqualUnequalを使った論理操作を返す任意のオブジェクトでよい.
  • 関数 f もまた,"name"[input]の形式の式を含むことができる.nameElementwiseLayerが取る名前付き関数("ELU""SELU""SoftSign"等)の一つである.
  • ThreadingLayer[f,bspec]では,より小さい配列は,より大きい配列次元と一致するように,f を適用する前に暗黙裡に複製される.bspec には次の設定が使用できる.
  • Noneブロードキャストなし
    Automaticサイズ1の次元に一致させる(デフォルト)
    n必要なら正しいサイズの次元をレベル n に挿入する
    -n末尾からの数
    {spec1,spec2,}それぞれの入力配列に特定のブロードキャスト設定を使う
  • オプションInputPortsを使って入力ポートの数,名前,形状が指定できる.InputPortsが指定されていない場合は,ポートの数と形状はNetChainあるいはNetGraphの接続性から推測される..
  • ThreadingLayerは,NetGraph等で使うために,入力ポートの他に次のポートを開放する.
  • "Output"配列
  • ThreadingLayerNetGraph内で,{src1,src2,}threadlayer の形の単一のエッジを使って接続することができる.threadlayerThreadingLayerの名前または指標である.独立した複数のエッジが src1threadlayer,src2threadlayer,,srcnthreadlayer のように対応する順で与えられることもある.
  • 入力ポートに明示的に名前が与えられていない場合は,ThreadingLayer[f,]"Input1""Input2"等の名前の入力ポートを開放する.
  • ThreadingLayer[Function[ #Name1 #Name2 ], ]は,"Name1""Name2"等という名前の入力ポートを開放する.
  • ThreadingLayer[f,None]は全入力配列を強制的に同じ形状にする.出力もこの形になる.ThreadingLayer[f,Automatic]は全入力配列を同じ階数にする.各形状は同じであるか1に等しくなければならない.ThreadingLayer[Plus,-1]は,最深レベルの次元を挿入することで,Plusのような入力を自動的にブロードキャストする.
  • ThreadingLayer[][{in1,in2,}]は,層を適用して出力を明示的に計算する.これは,事実上,f[in1,in2,]で与えられる.
  • NumericArrayが入力として与えられると,出力はNumericArrayになる.
  • Options[ThreadingLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[ThreadingLayer[]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
  • Information[ThreadingLayer[]]は層についてのレポートを与える.
  • Information[ThreadingLayer[],prop]ThreadingLayer[]の特性 prop の値を与える.使用可能な特性NetGraphと同じである.

例題

すべて開くすべて閉じる

  (6)

Timesを縫い込まれる関数として使ってThreadingLayerを作る:

この層を入力ペアに適用する:

最初の次元の最小の配列をブロードキャストすることで次元が異なる配列の合計を求めるThreadingLayerを作る:

この層を入力ペアに適用する:

最終次元の最小配列をブロードキャストして異なる次元の配列の合計を求めるThreadingLayerを作る:

この層を入力ペアに適用する:

NetGraph中のThreadingLayerを使う:

この層を2つのベクトルに適用する:

ThreadingLayerで2つの配列の外側合計を計算するNetGraphを作る:

外側合計を入力ペアに適用する:

入力ポートの名前はオプション"Inputs"を使って指定できる:

入力ポートの名前はThreadingLayerの関数内で直接指定することもできる:

この層を配列の連想に適用する:

スコープ  (2)

特定の数の入力を取るThreadingLayerを作る:

これをデータに適用する:

カスタム変換を使って球面ガウス関数を計算するThreadingLayerを作る:

この層を2つの入力ベクトルについて評価して出力のベクトルを得る:

層の出力をプロットする:

アプリケーション  (1)

ThreadingLayerを使ってヒンジ損失を定義する:

マージン2でヒンジ損失を計算するネットを作る:

ターゲットが入力から距離2以内のときは,損失は0である:

距離2を超えると損失は線形に増加する:

固定ターゲットの2の入力関数として損失をプロットする:

ヒンジ損失を使って線形回帰を行う:

解をプロットする:

ヒンジ損失,平均絶対値および平均二乗誤差を使って得られた解を比較する:

考えられる問題  (3)

ThreadingLayerは記号入力を取らない:

f の選び方によっては,入力が領域外になってしまうためにエラーになる:

純関数の中にはサポートされていないものもある:

Wolfram Research (2017), ThreadingLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/ThreadingLayer.html (2021年に更新).

テキスト

Wolfram Research (2017), ThreadingLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/ThreadingLayer.html (2021年に更新).

CMS

Wolfram Language. 2017. "ThreadingLayer." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/ThreadingLayer.html.

APA

Wolfram Language. (2017). ThreadingLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ThreadingLayer.html

BibTeX

@misc{reference.wolfram_2024_threadinglayer, author="Wolfram Research", title="{ThreadingLayer}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/ThreadingLayer.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_threadinglayer, organization={Wolfram Research}, title={ThreadingLayer}, year={2021}, url={https://reference.wolfram.com/language/ref/ThreadingLayer.html}, note=[Accessed: 22-November-2024 ]}