NetFoldOperator

NetFoldOperator[net]

表示一个网络,其中 net 在输入序列上被折叠,同时保持循环状态.

NetFoldOperator[net,{"outi""in1",}]

表示一个网络,其中,net 折叠进它的输入,通过把每步的 outi 反馈回下一步的 ini,保持循环状态.

NetFoldOperator[net,feedback,{"const1","const2",}]

net 的输入 consti 作为常量而不是映射.

NetFoldOperator[net,feedback,constants,{"out1",}]

为指定的输出 outi 返回值序列.

更多信息和选项

  • NetFoldOperator[net] 等同于 NetFoldOperator[net,{"Output"->"State"}] 并指定称为折叠网 "Output" 的输出回反馈回称之为 "State" 的输入.
  • NetFoldOperator[] 表示一个网络接受一个或多个序列,输出同样长度的一个或多个序列.
  • NetFoldOperator[net,{"out1""in1",}] 接受与 net 一样的输入,除了那些由反馈连接 "outi"->"ini" 给出的 ini.
  • NetFoldOperator[net,feedback,constants] 会映射没有在 feedbackconstants 中指定的任何输入. 所有映射的输入会有同样的长度.
  • 常见情况下,net 有两个名为 "Input""State" 的输入和一个名为 "Output" 的输出,单参数形式 NetFoldOperator[net] 接受一个名为 "Input" 的输入序列 {x1,x2,,xn},生成名为 "Output" 的状态序列 {s1,s2,,sn},通过将网络重复应用于 xisi-1 来计算 si ,实际上相当于使用 net[<|"Input"->xi,"State"->si-1|>]. 初始状态 s0 是零组成的数组.
  • NetGraph 中,格式 src->NetPort[layer,"state"] 的连接可用于提供 NetFoldOperator 循环状态的初始值. 类似,格式 NetPort[layer,"state"]->dst 的连接可用于获取循环状态的最后值. 如果未连接,这些状态可以用 NetStateObject 跟踪.
  • NetFoldOperator[net,{"out1""in1",}] 对于所有值被反馈的循环端口 ini 有命名的状态端口.
  • NetFoldOperator[net,] 可被看作允许在 net 多个拷贝之间共享权重的一个格式,一个用于被映射的每个序列元素.
  • NetFoldOperator[,"Input"->shape] 允许指定输入形状. shape 的可能格式为:
  • NetEncoder[]产生数组的编码器
    n长度为 n 的向量
    {n1,n2,}维度为 n1×n2× 的数组
    "Varying"长度变化的向量
    {"Varying",n2,n3,}第一维度是变的,剩下维度为 n2×n3× 的向量
  • 可包括以下训练参数:
  • LearningRateMultipliersAutomatic网络中可训练数组的学习率乘子
  • Options[NetFoldOperator] 给出构建运算器的默认选项的列表. Options[NetFoldOperator[]] 给出在一些数据上运行运算器的默认选项列表.
  • Information[NetFoldOperator[]] 给出关于该运算器的报告.
  • Information[NetFoldOperator[],prop] 给出 NetFoldOperator[] 的属性 prop 的值. 可能的属性NetGraph 相同.

范例

打开所有单元关闭所有单元

基本范例  (1)

创建一个 "core" 网络,接受一个状态和一个输入,产生一个输出:

在输入上运行 core:

创建一个 NetFoldOperator,使用 core 在数组序列上操作:

在输入序列为长度为 2 的向量上计算网络:

范围  (5)

构建一个网络,接受状态的加权平均和输入:

对输入和状态应用该网络:

NetFoldOperator 来创建一个高阶网络,折叠输入序列中的平均值:

折叠实数序列的累加器:

NetMapOperator 把 folder 映射到图像的颜色通道上,导致图像的行被累加:

对图像应用运算符:

创建一个可以在折叠操作期间使用常量输入的网络:

把网络应用到输入序列,为常量提供值:

创建一个被反馈的具有两个独立状态的网络. 这些状态会被用于提供最后输出序列:

给定输入序列获取输出序列:

构建一个网络,使用简单的非线性函数将来自两个序列的元素与循环状态组合在一起:

给定输入序列获取输出序列:

获取最后状态:

创建一个允许设置和获取 NetFoldOperator 初始和最后状态的 NetGraph

提供初始状态,把网络应用于输入序列:

终态是输出序列的最后一个元素:

如果初始和最终状态不是来自于更大的网络,那么有可能不使用 NetGraph,而使用 NetPort[All,"States"] 来控制这些:

应用  (1)

基于含有 x 和 y 的字符串创建训练数据,通过比较 x 和 y 的数量得出 LessGreaterEqual. 训练数据由最长为 8 的所有可能的字符串组成:

定义一个 NetGraph,用具有大小为 5 的状态的基本循环层表示在每个时间步骤里执行的计算,同时使用 Ramp 来激活:

允许通过将其嵌入到一个 NetFoldOperator 来对一个序列应用该 NetGraph

创建含有之前定义的 NetFoldOperator 的网络,读入一个输入字符串,预测是 LessGreater 还是 Equal

训练网络:

对输入列表应用训练过的网络:

在整个训练集上测试准确性:

Wolfram Research (2017),NetFoldOperator,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NetFoldOperator.html (更新于 2020 年).

文本

Wolfram Research (2017),NetFoldOperator,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NetFoldOperator.html (更新于 2020 年).

CMS

Wolfram 语言. 2017. "NetFoldOperator." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/NetFoldOperator.html.

APA

Wolfram 语言. (2017). NetFoldOperator. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NetFoldOperator.html 年

BibTeX

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

BibLaTeX

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