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

简单网络生成器

允许 SimpleNetworkBuilder 使用简单标准网络类型,只需几行配置即可。 仅支持一组有限的配置选项。 可以改为使用 BrainScriptNetworkBuilder 更复杂的网络进行定义。

若要使用 SimpleNetworkBuilder,请在训练配置中包含同名的配置块。 如果省略某个选项,则假定默认值。 我们首先提供了一个简洁的示例,并列出下面的所有控件参数和选项。

SimpleNetworkBuilder = [
    # 2 inputs, 2 hidden layers with 50 element nodes each, 2 outputs
    layerSizes        = 2:50*2:2
    trainingCriterion = "CrossEntropyWithSoftmax"
    evalCriterion     = "ErrorPrediction"
    layerTypes        = "Sigmoid"
    applyMeanVarNorm  = true
]

在上面的示例中,可以省略“trainingCriterion”和“layerTypes”,因为它们使用的是默认值。 提供下列参数:

  • initValueScale:用于缩放用于初始化的随机数范围的值。 默认值为 1。 如果使用统一分布初始化模型参数,则随机数范围将调整为 [-0.05 * initValueScale, 0.05 * initValueScale]。 如果使用 Gaussian 分布初始化模型参数,则标准偏差将调整为 0.2 * initValueScale * fanout^(-1/2)

  • layerTypes:隐藏层中非线性运算的类型。 有效值为 Sigmoid(默认值)、TanhRectifiedLinear

  • uniformInit:确定是否使用统一分布来初始化模型参数。 有效值 true (默认) , false (使用 Gaussian 分布初始化模型参数) 。

  • applyMeanVarNorm:是否对输入应用平均值/方差规范化。 有效值为 truefalse(默认值)。

  • addDropoutNodes:是否添加退出节点。 默认为 false。 如果指定 true,则下拉节点将应用于输入节点和每个隐藏层的输出。

  • layerSizes:指定层的维度。 例如, layerSizes=128:10:200:4000 描述具有两个隐藏层的神经网络。 第一个隐藏层的维度为 10,第二个隐藏层的维度为 200。 输入和输出层的维度分别为 128 和 4000。

  • trainingCriterion:用于训练的条件。 默认为 CrossEntropyWithSoftmax。 替代项是 SquareErrorCrossEntropyClassBasedCrossEntropyWithSoftmax。 适用于 ClassBasedCrossEntropyWithSoftmax 基于类的训练,如果输出维度较大,因此需要拆分为类,以加快训练和评估速度,这非常有用。

  • evalCriterion:评估条件。 值的选择与值 trainingCriterion相同。

  • lookupTableOrder:指定 lookupNode 中上下文扩展的顺序。 默认值是 1。 将其设置为值(如 3)会按 3 的顺序以依赖上下文的方式扩展输入维度。 例如,如果输入观察值维度为 20,则此值设置为 3 会将输入节点维度设置为 60。

对于循环神经网络 (RNN) ,还有其他参数。

  • recurrentLayer:指定包含自循环连接的层。 默认情况下,没有循环层。 使用语法 n1:n2:n3 指定 n1、n2 和 n3 层具有循环连接。

  • defaultHiddenActivity:访问第一个观察前的值时延迟节点使用的默认隐藏层活动值。 默认值是 0.1

  • rnnType:预定义网络的类型。 有效值是:

    • SIMPLENET:源转发神经网络。 这是默认网络类型。
    • SIMPLERNN:简单的 RNN,这可能是一个深度 RNN,其中的多个层具有循环循环。
    • CLASSLM:基于类的简单 RNN。 它使用稀疏输入、稀疏参数和稀疏输出。 这通常用于语言建模任务。
    • LBLM:log-bilinear 神经网络。
    • LSTM:长期短期内存神经网络。
    • CLASSLSTM:基于类的长期短期内存神经网络。 它使用稀疏输入、稀疏参数和稀疏输出。 这通常用于语言建模任务。

Next: Define your own complex networks with BrainScriptNetworkBuilder.