操作が未定義のネット層を表す.
PlaceholderLayer["tag",assoc]
連想 assoc で与えられるタグと情報を示す.
PlaceholderLayer
操作が未定義のネット層を表す.
PlaceholderLayer["tag",assoc]
連想 assoc で与えられるタグと情報を示す.
詳細とオプション
- PlaceholderLayerは,一般に,サポートされない操作を含む外部形式からニューラルネットをインポートするときに作成される.
- PlaceholderLayerをNetChainあるいはNetGraphで使って,操作はできるが入力について訓練したり評価したりはできないネットオブジェクトが構築できる.
- PlaceholderLayerは次のオプションを開放する.
-
"Arrays" None 配列名のリストまたは連想 InputPorts Automatic 入力ポート OutputPorts Automatic 出力ポート - この層は評価や訓練の動作は行わないので,"Arrays"の値はこの層が配列を使った操作のためのプレースホルダであることを伝える以外何の効果もない.
- オプションInputPortsを使って入力ポートの数,名称,形状が指定できる.InputPortsが指定されていない場合は,ポートの数と形状はNetChainあるいはNetGraphの接続性から推測される.
- デフォルトで,PlaceholderLayerは,形状未指定の"Input"入力ポートと"Output"出力ポートを開放する.オプション"Input"とオプション"Output"は単一ポートの場合の形状指定へのショートカットとして使うことができる.
- PlaceholderLayerは形状の推定を行わず,構築時に任意の形状が指定された入出力ポートの任意の組合せを許す.
- Options[PlaceholderLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[PlaceholderLayer[…]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
- Information[PlaceholderLayer[…]]は層についての報告を与える.
- Information[PlaceholderLayer[…],prop]はPlaceholderLayer[…]の特性 prop の値を与える.使用可能な特性はNetGraphのものと同じである.
例題
すべて開く すべて閉じる例 (2)
PlaceholderLayerを作る:
PlaceholderLayer[]与えられたタグと属性でPlaceholderLayerを作る:
PlaceholderLayer["Tag", <|"Attr1" -> 3, "Attr2" -> 3|>]スコープ (4)
2つの入力と3つの出力でデフォルトの名前を持ち形状は指定されていないPlaceholderLayerを作る:
PlaceholderLayer[InputPorts -> 2, OutputPorts -> 3]2つの入力と3つの出力で明示的な名前を持ち形状は指定されていないPlaceholderLayerを作る:
PlaceholderLayer[InputPorts -> {"FooIn", "BarIn"}, OutputPorts -> {"FooOut", "BarOut", "BazOut"}]2つの入力と3つの出力でデフォルトの名前を持ち形状が指定されたPlaceholderLayerを作る:
PlaceholderLayer[InputPorts -> {{"Varying", 3}, {3, 4}}, OutputPorts -> {{4, 5}, {5, 6}, {6, 7}}]2つの入力と3つの出力で明示的な名前を持ち形状が指定されたPlaceholderLayerを作る:
PlaceholderLayer[InputPorts -> <|"FooIn" -> {"Varying", 3}, "BarIn" -> {3, 4}|>, OutputPorts -> <|"FooOut" -> {4, 5}, "BarOut" -> {5, 6}, "BazOut" -> {6, 7}|>]アプリケーション (1)
PlaceholderLayerは,外部形式からインポートする際に生成されることが多い.サポートされていない演算子でONNXモデルファイルを作る:
imported = Import["ExampleData/onnx_unsupported_example.onnx"]PlaceholderLayerでインポートされたネットは入力では評価できない:
input = <|"data" -> {2, 54, 168, 32, 203}, "zero_point" -> 150, "scale" -> 0.05|>;imported[input]欠落している層は,さまざまな方法で追加し直すことができる.効果的だが非効率的な解決策の1つに通常のWolfram言語コードを使用することがある.不足している操作をWolfram言語コードに実装し,フルネットの結果を再現する関数を作成する:
dequantizeLinearFunc[data_, zeroPoint_, scale_] := (data - zeroPoint) * scalesubnet1 = NetTake[imported, "Add1"]
subnet2 = NetExtract[imported, "Gemm1"]runNet[inputAssoc_] := Block[
{data, zeroPoint, scale},
{data, zeroPoint, scale} = Lookup[inputAssoc, {"data", "zero_point", "scale"}];
subnet2@dequantizeLinearFunc[subnet1[data], zeroPoint, scale]
]runNet@input可能な場合は,欠落している操作をニューラルネット層で実装することが望ましい:
dequantizeLinearNet = ThreadingLayer[(#1 - #2) * #3&, 1, InputPorts -> {"data" -> 5, "zero_point" -> {}, "scale" -> {}}]reconstructedNet = NetFlatten@NetGraph[{subnet1, dequantizeLinearNet, subnet2}, {1 -> 2 -> 3}]reconstructedNet[input]runNet[input];//RepeatedTiming
reconstructedNet[input];//RepeatedTimingテクニカルノート
関連するガイド
テキスト
Wolfram Research (2020), PlaceholderLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/PlaceholderLayer.html.
CMS
Wolfram Language. 2020. "PlaceholderLayer." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/PlaceholderLayer.html.
APA
Wolfram Language. (2020). PlaceholderLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PlaceholderLayer.html
BibTeX
@misc{reference.wolfram_2026_placeholderlayer, author="Wolfram Research", title="{PlaceholderLayer}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/PlaceholderLayer.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_placeholderlayer, organization={Wolfram Research}, title={PlaceholderLayer}, year={2020}, url={https://reference.wolfram.com/language/ref/PlaceholderLayer.html}, note=[Accessed: 03-November-2026]}