你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

顺序程序

将函数数组组合成一个新函数,以一个接一个地调用这些函数 (“转发函数组合”) 。

Sequential (arrayOfFunctions)

parameters

arrayOfFunctions:函数的 BrainScript 数组,例如使用 : 运算符构造: (LinearLayer{1024} : Sigmoid)

返回值

此函数返回另一个函数。 返回的函数采用一个参数,并返回按顺序将所有给定函数应用于输入的结果。

说明

Sequential() 是一种强大的操作,它允许在神经网络中通过传播输入来通过层的进度来处理输入的一种非常常见的情况。 你可能熟悉其他神经网络工具包中的它。

Sequential() 采用函数数组作为其参数,并返回按顺序调用这些函数 的新 函数,每次将一个函数的输出传递给下一个函数。 请看以下示例:

FGH = Sequential (F:G:H)
y = FGH (x)

此处,冒号 (:) 是 BrainScript 表示数组的语法。 例如,(F:G:H)是一个包含三个元素的数组,FG以及H。 例如,在 Python 中,这会编写为 [ F, G, H ]

FGH上面定义的函数表示与

y = H(G(F(x))) 

这称为 “函数组合”,对于表达神经网络尤其方便,神经网络通常采用以下形式:

     +-------+   +-------+   +-------+
x -->|   F   |-->|   G   |-->|   H   |--> y
     +-------+   +-------+   +-------+

这是完全表达的 Sequential (F:G:H)

最后,请注意以下表达式:

layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)

表示与以下不同之处:

layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)

在后一种形式中,将应用 具有相同共享参数集的相同 函数两次,而在前者中,这两个层具有单独的参数集。

示例

在早期深度神经网络中使用的标准 4 隐藏层馈送转发网络在语音识别方面工作:

myModel = Sequential (
    DenseLayer{2048, activation=Sigmoid} :  # four hidden layers
    DenseLayer{2048, activation=Sigmoid} : 
    DenseLayer{2048, activation=Sigmoid} : 
    DenseLayer{2048, activation=Sigmoid} : 
    DenseLayer{9000, activation=Softmax}    # note: last layer is a Softmax 
)
features = Input{40}
p = myModel (features)