NetChain
更多信息和选项
- 视第一层的输入为 NetChain 的输入.
- 视最后一层的输出为 NetChain 的输出.
- 所有中间的层只能有一个输入和一个输出口.
- NetChain[…][data] 给出对 data 应用网络后所得结果.
- NetChain[…][data,NetPortGradient["Input"]] 给出输出相对于输入数据的梯度.
- 如果第一层的输入端口超过一个,NetChain 将具有相同的输入端口.
- 如果最后一层的输出端口超过一个,NetChain 将具有相同的输出端口.
- NetChain 支持下面特殊的层规范:
-
Ramp,LogisticSigmoid,… ElementwiseLayer[f] n LinearLayer[n] {layer1,layer2,…} NetChain[{layer1,layer2,…}] - Normal[NetChain[…]] 将返回用于构建网络链的层的列表或关联.
- NetChain 的 StandardForm 显示出链中各层和每层的输出的数组的维度. 点击链中的层会显示关于该层的更多信息.
- 可包括以下可选参数:
-
LearningRateMultipliers Automatic 可训练数组的学习率乘子 - 可以用 NetChain 的选项 "Input"->shape 和 "Output"->shape 指定链的输入和输出数组的整体形状.
- shape 的可能形式包括:
-
"Real" 单个实数 "Integer" 单个整数 Restricted["Integer",n] 位于 1 和 n 之间的整数 Restricted["Integer",{m,n}] 位于 m 和 n 之间的整数 n 长度为 n 的向量 {n1,n2,…} 维度为 n1×n2×… 的数组 "Varying" 长度可变的向量 {"Varying",n2,n3,…} 维度为 n2×n3×… 的数组组成的长度可变的序列 NetEncoder[…] 编码器(输入) NetEncoder[{…,"Dimensions"{n1,…}}] 编码器映射为一个维数为 n1×… 的数组 NetDecoder[…] 解码器(输出) NetDecoder[{…,"InputDepth"n}}] 把编码器应用到阶为 n 的数组 FeatureExtractorFunction[…] 特征提取器函数 - 将从链的结构中推出以 Automatic 给出的长度 ni.
- NetChain[…][data,…,opts] 应用 data 时应使用的选项. 可能的选项包括:
-
BatchSize Automatic 对于输入列表,一次计算的输入数目 NetEvaluationMode "Test" 评估时使用什么模式 RandomSeeding Automatic 如果有伪随机生成器,如何播种 TargetDevice "CPU" 在哪个目标设备上进行评估 WorkingPrecision "Real32" 用于计算网络的数值精度 - WorkingPrecision 的可能设置包括:
-
"Real32" 使用单精度实数(32 位) "Real64" 使用双精度实数(64 位) "Mixed" 对于某些运算使用半精度实数 - WorkingPrecision->"Mixed" 只支持 TargetDevice->"GPU",在某系设备上会导致显著的性能增加.
- 如果输入是 NumericArray,输出会是 NumericArray. 在这种情况下,数值类型来自于 WorkingPrecision.
- 当设置为 NetEvaluationMode->"Training" 时,如 DropoutLayer 这样的层会显示出训练而不是普通的评估一样的行为.
- Normal[NetChain[…]] 返回用于构建网络的层的列表或关联. EdgeList[NetChain[…]] 返回网络中的连接列表.
- NetChain[…][[spec]] 从网络中提取由 spec 指定的层.
- 可通过 NetReplacePart、NetReplace、NetRename、NetFlatten、NetDelete、NetTake、NetDrop、NetInsert、… 对 NetChain[…] 网络进行转换.
- Options[NetChain] 给出构建网络的默认选项的列表. Options[NetChain[…]] 给出在一些数据上运行网络的默认选项列表.
- Information[NetChain[…]] 给出关于该网络的报告.
- Information[NetChain[…],prop] 给出 NetChain[…] 的属性 prop 的值. 可能的属性与相同.
-
"Arrays" 给出网络中每个数组的关联 "ArraysByteCounts" 给出每个数组字节数的关联 "ArraysCount" 所有层中数组的总数 "ArraysDimensions" 给出每个数组维度的关联 "ArraysElementCounts" 给出每个数组中元素个数的关联 "ArraysLearningRateMultipliers" 每个数组的默认学习率乘数的关联 "ArraysPositionList" 用于 NetExtract、NetReplacePart、LearningRateMultipliers 等的数组位置规范 "ArraysSizes" 给出每个数组大小的关联 "ArraysTotalByteCount" 所有层中所有数组的总字节数 "ArraysTotalElementCount" 所有数组中元素的总数 "ArraysTotalSize" 所有层中所有数组的总大小 "FullSummaryGraphic" 表示网络中任意深度所有层连接关系的图形 "InputForm" 用于重建该网络的表达式 "InputPortNames" 输入端口名称列表 "InputPorts" 输入端口形状的关联 "Layers" 给出网络中每一层的关联 "LayersCount" 层的总数 "LayersGraph" 表示层连接关系的图 "LayersList" 所有层的列表 "LayerTypeCounts" 网络中每种层类型出现的次数 "MXNetNodeGraph" 底层 "MXNet" 操作的原始图 "MXNetNodeGraphPlot" 带注释的 "MXNet" 操作图 "OutputPortNames" 输出端口名称列表 "OutputPorts" 输出端口形状的关联 "Properties" 可用属性列表 "RecurrentStatesCount" 网络中循环状态的数量 "RecurrentStatesPositionList" 用于 NetStateObject 的循环状态位置规范 "SharedArraysCount" 共享数组的总数 "SummaryGraphic" 表示各层连接关系的图形 - 属性 "ArrayByteCount" 和 "ArraysTotalByteCount" 会将所有数组都视为已经初始化.
选项
信息
范例
打开所有单元 关闭所有单元基本范例 (1)
范围 (4)
net = NetChain[{LinearLayer[3], LinearLayer[4]}, "Input" -> 2]net = NetInitialize[net];net[{1.2, 0.23}]net = NetChain[<|"linear1" -> LinearLayer[3], "linear2" -> LinearLayer[4]|>]NetExtract[net, "linear2"]用 Part 语句提取第一层:
net[["linear1"]]net = NetChain[{LinearLayer[10], LinearLayer[20], LinearLayer[30]}, "Input" -> 5]NetTake[net, 2]NetTake[net, -2]ElementwiseLayer 和 LinearLayer 使用特殊的语法:
NetChain[{3, Tanh, 4, Ramp, 5}]属性和关系 (5)
可将 NetChain 对象用作 NetGraph 中的层:
chain = NetChain[{ElementwiseLayer[Ramp], SummationLayer[]}]NetGraph[{BatchNormalizationLayer[], chain}, {1 -> 2}]可将有一个输出和一个输入口的 NetGraph 对象用作 NetChain 对象内的层:
net = NetGraph[{LinearLayer[3], LinearLayer[3], CatenateLayer[]}, {1 -> 2, {1, 2} -> 3}]NetChain[{ElementwiseLayer[Ramp], net}]通过 NetGraph[chain],NetChain 对象可被转换成等价的 NetGraph 对象:
net = NetChain[{1, 2, 3, 4}]NetGraph[net]net = NetChain[{1, Ramp, 2, Tanh}]Normal[net]使用 Information[chain,"SummaryGraphic"] 获取显示基本链连接的 Graphics[…] 表达式:
net = NetChain[{2, Ramp, 3, ElementwiseLayer[Log[1 - #]&]}, "Input" -> 4]Information[net, "SummaryGraphic"]巧妙范例 (1)
构建一个基本网络,接受大小为 2 的输入向量,生成大小为 3 的输出向量:
net = NetChain[{30, Sin, 3, Tanh, 3, LogisticSigmoid}, "Input" -> 2]nets = Table[
NetInitialize[net, Method -> {"Random", "Weights" -> 3, "Biases" -> 2}, RandomSeeding -> Automatic], 16];将它们看作是把 (x,y) 位置映射到 (r,g,b) 颜色值的函数,绘制并以图集形式显示:
row = Range[-2, 2, 0.04];
coords = Tuples[row, 2];
plot[net_] := Image[Partition[net[coords], Length[row]]];
Multicolumn@Table[plot[net], {net, nets}]参见
NetModel NetGraph NetInitialize NetTrain NetExtract LinearLayer ElementwiseLayer PerceptronModel NetEncoder NetDecoder
格式: MXNet
Function Repository: NetChainToGraph
技术笔记
文本
Wolfram Research (2016),NetChain,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NetChain.html (更新于 2022 年).
CMS
Wolfram 语言. 2016. "NetChain." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2022. https://reference.wolfram.com/language/ref/NetChain.html.
APA
Wolfram 语言. (2016). NetChain. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NetChain.html 年
BibTeX
@misc{reference.wolfram_2026_netchain, author="Wolfram Research", title="{NetChain}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/NetChain.html}", note=[Accessed: 05-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_netchain, organization={Wolfram Research}, title={NetChain}, year={2022}, url={https://reference.wolfram.com/language/ref/NetChain.html}, note=[Accessed: 05-November-2026]}