NetUnfold

NetUnfold[fnet]

生成折叠网络 fnet 中的基本网络,并给出循环的状态.

更多信息和选项

  • 折叠网络是通过重复相同的操作单向迭代序列的网络,例如循环网络和单向转换器.
  • NetUnfold 通常用于提取重复的操作,以便从经过训练的解码器高效生成序列,这些序列可用于生成文本和音频、文本翻译等.
  • ,训练参数为 ,具有状态方程 和输出方程 的循环网络,展开的网络只对应于循环 中的一步.
  • 具体来讲,NetUnfold 揭示了以下折叠层的循环状态:
  • BasicRecurrentLayer[]one-state 向量
    GatedRecurrentLayer[]one-state 向量
    LongShortTermMemoryLayer[]two-state 向量,其中有一个内部单元的状态
    NetFoldOperator[net,{"out1""in1",,"outn""inn"},]n-state 向量
    AttentionLayer[,"Mask""Causal"]two-state 序列,即之前的键和值
  • 给出的循环层的状态是通常用零初始化的向量. 给出的转换器的状态是长度可变的向量序列,通常用空序列初始化.
  • NetUnfold 也可以应用于折叠网络,对其输出序列的最后一个元素进行操作. 这种情况下,相应的 SequenceLastLayer 将被删除.
  • NetUnfold 可以看作是 NetFoldOperator 的逆操作.

范例

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

基本范例  (1)

获取折叠在 GatedRecurrentLayer 中的核心操作:

范围  (5)

展开单个循环层:

展开含有因果掩码的注意层:

展开一系列循环操作:

展开一个循环网络模型:

展开转换器模型:

应用  (1)

高效生成文本. 首先,获取一个训练好的语言模型:

下面是最简单的随机生成文本的函数:

该函数的问题是它具有二次时间复杂度,因为模型被多次输入相同的内容:

通过公开状态信息,NetUnfold 允许避免对相同的激活进行两次重复的计算:

基于该展开的网络编写高效的随机文本生成器:

该高效的随机文本生成器具有线性时间复杂度:

属性和关系  (2)

NetUnfoldNetFoldOperator 的逆操作:

递归后的任何 SequenceLastLayer 都会被自动删除:

Wolfram Research (2021),NetUnfold,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NetUnfold.html.

文本

Wolfram Research (2021),NetUnfold,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NetUnfold.html.

CMS

Wolfram 语言. 2021. "NetUnfold." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/NetUnfold.html.

APA

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

BibTeX

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

BibLaTeX

@online{reference.wolfram_2024_netunfold, organization={Wolfram Research}, title={NetUnfold}, year={2021}, url={https://reference.wolfram.com/language/ref/NetUnfold.html}, note=[Accessed: 18-November-2024 ]}