Wolfram 语言

灵活运用循环层

Wolfram 语言为用户提供高级循环层,在保证性能的前提下能够无缝且高效地处理不同长度的批量输入。此外,NetStateObjectNetFoldOperator 等工具可以轻松使用自定义高级循环层的循环计算功能及定义。

首先,演示如何创建和使用简单的循环层。定义一个循环层,作用于由大小为 2 的向量组成的可变长度序列。

在一批长度不同的序列上运行该网络层。

定义一个网络,接受可变长度的字符序列,为每个序列产生一个数字。

在一批长度不同的字符串上运行该网络层。

默认情况下,通过 NetChainNetGraph 定义的循环层或网络是没有状态的。它们的初始内部状态是零向量,并在每次计算后重置,因此对相同输入重复进行计算将产生相同的结果。

可用 NetStateObject 将循环层转换为有状态的对象。NetStateObject 在计算后保持自己的状态,因此对相同输入重复进行计算通常会产生不同的结果。这是一种保持循环层的内部状态的方法,例如,高效地生成文本。

现在演示如何使用 NetFoldOperator 根据现有 NetGraph 创建自定义循环层。定义乘性 LSTM 的核心单元。

显示完整的 Wolfram 语言输入

创建乘性 LSTM。

在一批由大小为 64 的向量组成的可变长度序列上运行该网络层。

相关范例

de en es fr ja pt-br