NetReplacePart[layer,"array"value]
替换网络层中的一个数组,返回一个新的层.
NetReplacePart[layer,"port"type]
返回一个新层或网络,其中的输入或输出端口为指定的类型.
NetReplacePart[net,"input"encoder]
为指定输入口添加一个 NetEncoder[…].
NetReplacePart[net,"output"decoder]
为指定输出口添加一个 NetDecoder[…].
NetReplacePart[net,lspeclayer]
NetReplacePart[net,NetArray[name]value]
设置网络或层内的共享数组位指定的值.
NetReplacePart[coder,"param"value]
返回一个新的 NetEncoder[…] 或 NetDecoder[…],其中参数已被替代.
NetReplacePart[net,{lspec,pspec}value]
NetReplacePart[…,{spec1val1,spec2val2,…}]
同时进行多个替换.
NetReplacePart
NetReplacePart[layer,"array"value]
替换网络层中的一个数组,返回一个新的层.
NetReplacePart[layer,"port"type]
返回一个新层或网络,其中的输入或输出端口为指定的类型.
NetReplacePart[net,"input"encoder]
为指定输入口添加一个 NetEncoder[…].
NetReplacePart[net,"output"decoder]
为指定输出口添加一个 NetDecoder[…].
NetReplacePart[net,lspeclayer]
NetReplacePart[net,NetArray[name]value]
设置网络或层内的共享数组位指定的值.
NetReplacePart[coder,"param"value]
返回一个新的 NetEncoder[…] 或 NetDecoder[…],其中参数已被替代.
NetReplacePart[net,{lspec,pspec}value]
NetReplacePart[…,{spec1val1,spec2val2,…}]
同时进行多个替换.
更多信息
- NetReplacePart 可替代层参数、层数组、层、编码器、解码器、编码器参数、解码器参数、输入数组大小和输出数组大小.
- NetReplacePart 支持的组成部分指定与 NetExtract 所用的一样.
- 当替换网络层中的一个数组时,新数组的维数必须与原来数组的相同.
- 在替换输入或输出时,为了能完整地指定一个已被部分指定的网络,可以使用以下任意值来指定端口的类型:
-
"Real" 单个实数 "Integer" 单个整数 n 长度为 n 的向量 {n1,n2,…} 维数为 n1×n2×… 的数组 "Varying" 长度可变的向量 {"Varying",n2,n3,…} 第一维度是变量,其余维度是 n2×n3×… 的数组 Automatic 一个数组,其形状应由推断而得 NetEncoder[…] 解码器(输出端口) NetDecoder[…] 解码器(输出端口) - 通过指定值 None 可以把编码器或解码器从端口移除.
- 一般情况下,改变 NetChain 或 NetGraph 的输出的维度是可能的,但有可能要通过类似于 NetReplacePart[net,{layernamenewlayer,"Output"newoutput}] 的语法改变中间的网络层.
- 如果替换指定会产生维度不兼容的网络,NetReplacePart 将失败.
范例
打开所有单元 关闭所有单元基本范例 (1)
net = NetModel["LeNet Trained on MNIST Data"]获取新模型,其中输入 NetEncoder 已被去除:
NetReplacePart[net, "Input" -> None]NetReplacePart[net, {1, "Biases"} -> RandomReal[1, {20}]]范围 (11)
net = NetModel["LeNet Trained on MNIST Data"]NetReplacePart[net, 2 -> ElementwiseLayer[Tanh]]创建一个包含 DropoutLayer,脱离概率为 0.5 的现有模型:
chain = NetChain[{10, Ramp, DropoutLayer[0.5], 5}]NetReplacePart[chain, {3, "DropoutProbability"} -> 0.1]layer = LinearLayer[2]layer2 = NetReplacePart[layer, {"Weights" -> {{1, 2}, {3, 4}}, "Biases" -> None}]layer2[{0, 1}]layer = NetInitialize@LinearLayer[2, "Input" -> 2]layer[{0, 1}]为一个层的输入添加 "Class" 编码器,以 {1,0} 和 {0,1} 这样的形式嵌入类别:
layer2 = NetReplacePart[layer, "Input" -> NetEncoder[{"Class", {True, False}, "UnitVector"}]]现在,所得的层可以接受 True 和 False 值作为输入:
layer2[True]layer2[False]net = NetChain[{5, Ramp, 5}]NetInitialize[net]net2 = NetReplacePart[net, "Input" -> 2]net2 = NetInitialize[net2]net2[{4, 5}]net = NetInitialize@NetChain[{LinearLayer[3], SoftmaxLayer[]}, "Input" -> "Scalar", "Output" -> NetDecoder[{"Class", {a, b, c}}]]net[3]net2 = NetReplacePart[net, "Output" -> None]net2[3]重塑现有层以具有不同的输入和输出维度. 创建带有指定 NetEncoder 的层:
pool = PoolingLayer[3, "Input" -> NetEncoder[{"Image", 16}], "Output" -> NetDecoder["Image"]]pool[[image]]替代输入 NetEncoder 和输出 NetDecoder:
pool2 = NetReplacePart[pool, {"Input" -> NetEncoder[{"Image", 32}], "Output" -> NetDecoder["Image"]}]pool2[[image]]替代 NetChain 中的第二层:
chain = NetChain[{LinearLayer[2], ElementwiseLayer[Ramp], LinearLayer[3], ElementwiseLayer[Ramp]}]NetReplacePart[chain, 2 -> ElementwiseLayer[Tanh]]替代现有 NetEncoder 的属性:
enc = NetEncoder["Image"]NetReplacePart[enc, "Interleaving" -> True]net = NetInitialize[NetChain[{NetInsertSharedArrays[LinearLayer[2]], NetInsertSharedArrays[LinearLayer[2]]}, "Input" -> 2, "Output" -> 2]]net2 = NetReplacePart[net, NetArray["Weights"] -> NumericArray[{{1, 2}, {3, 4}}]]NetExtract[net, {All, "Weights"}]NetExtract[net2, {All, "Weights"}]net = NetExtract[NetModel["Wolfram English Character-Level Language Model V1", "TrainingNet"], "predict"]reshaped = NetReplacePart[net, "Input" -> {"Varying", Restricted["Integer", 97]}]将以固定长度方式处理字符串的网络转变为处理可变长度字符串的等效网络,无需填充或剪切:
netstring = NetInitialize[NetTake[NetModel["Wolfram English Character-Level Language Model V1", "TrainingNet"], {All, "predict"}]]reshapedstring = NetReplacePart[netstring, {"Input", "TargetLength"} -> All]Dimensions[netstring["abc"]]Dimensions[reshapedstring["abc"]]属性和关系 (1)
NetReplacePart 所支持的部分指定与 NetExtract 使用的完全相同. 提取 NetChain 的第三层的权重:
partSpec = {3, "Weights"};net = NetInitialize@NetChain[{LinearLayer[2], Ramp, LinearLayer[3], Ramp}, "Input" -> {3}];net = NetReplacePart[net, partSpec -> {{1, 2}, {3, 4}, {5, 6}}]NetExtract[net, partSpec]技术笔记
相关指南
-
▪
- 神经网络的创建和属性 ▪
- 神经网络运算 ▪
- 神经网络
文本
Wolfram Research (2016),NetReplacePart,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NetReplacePart.html (更新于 2020 年).
CMS
Wolfram 语言. 2016. "NetReplacePart." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/NetReplacePart.html.
APA
Wolfram 语言. (2016). NetReplacePart. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NetReplacePart.html 年
BibTeX
@misc{reference.wolfram_2026_netreplacepart, author="Wolfram Research", title="{NetReplacePart}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/NetReplacePart.html}", note=[Accessed: 31-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_netreplacepart, organization={Wolfram Research}, title={NetReplacePart}, year={2020}, url={https://reference.wolfram.com/language/ref/NetReplacePart.html}, note=[Accessed: 31-October-2026]}