配列と位置の指定を入力として取って配列から指定された部分を抽出するネット層を表す.
ExtractLayer
配列と位置の指定を入力として取って配列から指定された部分を抽出するネット層を表す.
詳細とオプション
- ExtractLayerはNetGraph等で使うように次のポートを開放する.
-
"Input" 入力配列 "Position" 部分指定の整数配列 "Output" 出力配列 - ExtractLayerは,NetChainやNetGraph等の中で使われることが多い.
- ExtractLayerは,通常は,入力次元をNetChain等におけるそのコンテキストから推測する.{n1,n2,…}や{m1,m2,…}のように明示的に次元が指定したければ,ExtractLayer["Input"->{n1,n2,…},"Position"->{m1,m2,…}]を使うとよい.
- ExtractLayer["Port"shape]を使って"Input"ポートまたは"Position"ポートの形が指定できる.次は shape の可能な形である.
-
n 長さ n のベクトル {n1,n2,…} 次元 n1×n2×…の配列 {"Varying",n2,n3,…} 第1次元が可変長で残りの次元が n2×n3×…の配列 NetEncoder[…] エンコーダ - "Position"ポートの形を"Integer"に設定して単一の整数を指定することもできる.
- ポート"Position"への入力は部分指定の任意の配列である.次元{n1,n2,…,nd }の入力と次元{m1,m2,…,mp,s}の位置指定が与えられると,出力次元は{m1,m2,…,mp,ns+1,…,nd}になる.
- 位置指定 s の最終次元を使って入力要素が指定できる.したがって,これは入力次元 d より大きくてはならない.s=d のときの出力次元は {m1,m2,…,mp}になる.
- ExtractLayer[…][<|"Input"input,"Position"position|>]は,この層を input および position に適用して出力を明示的に計算する.
- ExtractLayer[…][<|"Input"{input1,input2,…},"Input"{pos1,pos2,…}|>]は,各 inputiと posiについて,出力を明示的に計算する.
- 位置指定における負の整数は,最後の要素から後方に数えられる.
- NumericArrayが入力として与えられると,出力はNumericArrayになる.
- Options[ExtractLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[ExtractLayer[…]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
- Information[ExtractLayer[…]]は層についてのレポートを与える.
- Information[ExtractLayer[…],prop]はExtractLayer[…]の特性 prop の値を与える.使用可能な特性はNetGraphと同じである.
例題
すべて開く すべて閉じる例 (1)
ExtractLayerを作る:
extr = ExtractLayer[]extr[<|"Input" -> {74, 85, 12}, "Position" -> {2}|>]スコープ (2)
引数 (1)
ExtractLayerを作る:
extr = ExtractLayer[]out1 = extr[<|"Input" -> {74, 85, 12}, "Position" -> {{1}, {2}, {2}, {3}}|>]out2 = extr[<|"Input" -> {{74, 85, 12}, {3, 7, 4}}, "Position" -> {{1}, {2}, {2}, {3}}|>]ポート (1)
ExtractLayerを作り,その"Input"ポートと"Position"ポートの形を指定する:
extr = ExtractLayer["Input" -> {2, 2}, "Position" -> {3, 1}]extr[<|"Input" -> {{87, 54}, {32, 56}}, "Position" -> {{2}, {2}, {1}}|>]extr[<|"Input" -> {{{87, 54}, {32, 56}}, {{4, 5}, {2, 8}}}, "Position" -> {{{2}, {2}, {1}}, {{1}, {1}, {2}}}|>]特性と関係 (2)
ExtractLayerはExtractと同じ計算を行う:
data = ArrayReshape[Range[5 * 5 * 5], {5, 5, 5}];positions = {{1, 2, 3}, {2, 3, 4}};ExtractLayer[]@<|"Input" -> data, "Position" -> positions|>Extract[data, {{1, 2, 3}, {2, 3, 4}}]ExtractLayerは現行指定に基づいて配列の部分を選択するのに対し,PartLayerは固定した部分の指定を持つ:
data = {{0.45, 0.3}, {1.2, 4.7}};positions = {2, 1};extr = ExtractLayer[]extr[<|"Input" -> data, "Position" -> positions|>]part = PartLayer[{2, 1}]part[data]PartLayerは単一の部分指定しかサポートせず,それらの任意配列はサポートしない.しかし,Spanで入力の一部を抽出することはできる:
part = PartLayer[{3, 2 ;; 5}]part[RandomReal[1, {6, 6}]]考えられる問題 (3)
位置指定の最終次元で入力の希望の部分を選択する.したがって,大きさは入力次元を超えてはならない:
ExtractLayer["Input" -> {3, 7, 5}, "Position" -> {2, 5}]"Position"指定の次数が1のとき,その大きさは可変ではない:
ExtractLayer["Input" -> {3, 4, 5}, "Position" -> "Varying"]指定されていないExtractLayerは常にバッチではなく単一の例で評価されていてものと仮定する.次では,配列 data と pos は,それぞれ単一の2×3入力配列および2×1部分指定と解釈される:
data = {{54, 32, 85}, {12, 36, 94}};pos = {{2}, {1}};ExtractLayer[][<|"Input" -> data, "Position" -> pos|>]上記をそれぞれ長さ3と長さ1の2つのリストのバッチとして解釈するためには,評価の前に明示的な形が与えられなければならない:
ExtractLayer["Input" -> 3, "Position" -> 1][<|"Input" -> data, "Position" -> pos|>]テクニカルノート
関連するガイド
テキスト
Wolfram Research (2019), ExtractLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/ExtractLayer.html.
CMS
Wolfram Language. 2019. "ExtractLayer." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ExtractLayer.html.
APA
Wolfram Language. (2019). ExtractLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ExtractLayer.html
BibTeX
@misc{reference.wolfram_2026_extractlayer, author="Wolfram Research", title="{ExtractLayer}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/ExtractLayer.html}", note=[Accessed: 04-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_extractlayer, organization={Wolfram Research}, title={ExtractLayer}, year={2019}, url={https://reference.wolfram.com/language/ref/ExtractLayer.html}, note=[Accessed: 04-September-2026]}