你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 BrainScript 的顶级命令
主要顶级命令train
,test
eval
/并显示在“训练”、“测试”、“Eval”页上。 下面详细介绍了进一步的顶级命令。
调整命令
此命令使用 KL 差异正则化调整已训练的模型。 建议使用模型编辑执行所有其他改编。 改编命令与训练命令非常相似,只不过它又承载了两个参数:
originalModelFileName
:要改编的模型的文件名。refNodeName
:计算网络中节点的名称,该节点将用于 KL 差异正则化。
CV
此命令评估开发 (或交叉验证) 集的一系列不同时期的模型,并显示最佳模型的信息。 除了用于测试命令的参数外,此命令还使用参数
crossValidationInterval
:3 个整数数组,用于标识要计算的起始纪元、纪元增量和最终纪元。 例如,3:2:9 表示将计算模型 3,5,7 和 9。sleepTimeBetweenRuns
:运行之间等待的秒数。 仅当 GPU 太热时,才需要此操作。
写入命令
此命令将输出节点的值写入文件。 相关参数为
reader
:读取器配置块,用于读取输入数据。writer
:编写器配置块,以确定如何写入输出数据。 如果未指定此值,将使用 outputPath 参数。minibatchSize
:读取和处理数据集时要使用的小块大小。epochSize
:数据集的大小。 默认为 0。 如果数据集设置为 0,将评估整个数据集。modelPath
:用于计算输出的模型的路径。outputPath
:用于以文本格式写入输出的文件的路径。 如果编写器块存在,此参数将被忽略。 outputPath 或编写器必须存在。outputNodeNames
:要写入文件的一个或多个输出节点名称的数组。
编辑命令
此命令编辑模型并将修改后的模型保存到文件中。 此方法已弃用。 关联的参数包括:
editPath
:要执行的 MEL 脚本的路径。ndlMacros
:将在 MEL 脚本中加载和使用 NDL 宏文件的路径。
SVD 命令
此命令使用可学习参数的 SVD 分解执行低排名近似值。 主要动机是将具有两个低级矩阵的权重矩阵分解为提高推理速度,同时保持准确性。 例如:
svd = [
action = "SVD"
modelPath = "train\lstm.model.67"
outputModelPath = "train\lstm.model.svd"
SVDConfig = "nodeConfigs"
]
关联的参数块包括:
modelPath
:指定加载初始模型的位置。outputModelPath
:指定保存修订后的模型的位置。SVDConfig
:一个配置文件,指定如何为不同节点组执行 SVD。 此配置采用两列格式:<NodeNameRegex> <float>
第一列是正则表达式,它将匹配一个组中的节点名称。 第二列是一个浮点数,指示 SVDenergy 在 SVD 之后将保留哪些百分比,其中 SVD 能量定义为奇数值之和。 例如,配置
`LSTMoutput[1-3].Wx[ifco] 0.4`
`LSTMoutput[1-3].Wh[ifco] 0.6`
对于从 x 到 i、f、c、o 门) 的非重复连接, (0.4) 分解,LSTM 中的非重复连接) 会导致更激进的 SVD 分解,对于从 h 到 i、f、c、o 入口) 的循环 ( (连接,其中参数名称在 NDL 中定义。
Dumpnode 命令
此命令将节点 () 的信息转储到输出文件中,也可以通过更大的控制在 MEL 中完成。 相关参数包括:
modelPath
:包含要转储的节点的模型文件的路径。nodeName
:要写入文件的节点的名称。 如果未指定所有节点,则会转储。nodeNameRegex
:要写入文件的节点名称的正则表达式。 如果指定,nodeName
则忽略参数。outputFile
:输出文件的路径。 如果未指定文件名,则会根据 modelPath 自动生成文件名。printValues
:确定是否打印与节点关联的值(如果节点的值保留在模型中)。 默认为 true。printMetadata
:确定是否打印与节点关联的元数据 (节点名称、维度等) 。 默认为 true。
WriteWordAndClass 命令 (已弃用)
此命令读取文本训练数据,对训练集中每个单词的出现次数进行计数,按计数的降序对单词进行排序,为每个单词指定唯一 ID,为每个单词分配一个类,并生成一个四列词汇文件和一个由 (弃用的) LMSequenceReader 使用的单词到 ID 映射文件,以训练基于类的语言模型。 相关参数包括:
inputFile
:文本训练文件的路径。outputVocabFile
:生成的四列词汇文件的名称。 第一列是单词 ID,第二列是单词的计数,第三列是单词,第四列是类 ID。outputWord2Cls
:生成的单词到类映射文件的路径。outputCls2Index
:生成的类到 wordId 映射文件的路径。vocabSize
:所需的词汇大小。nbrClass
:所需类数。cutoff
:截止计数。 当单词的计数低于或等于此值时,单词将被视为 。 默认值为 2。 请注意,仅当所需词汇大小大于训练集中存在的实际单词数时,才使用此参数。
CreateLabelMap 命令
通常可以轻松手动创建标签映射文件。 但是,有时,你希望自动生成标签映射文件,这是 CreateLabelMap 命令的用途。 目前,UCIFastReader 是唯一支持此操作的读取器。 相关参数为
section
:参数块名称通常 (训练块) ,该块具有将用于生成标签映射文件的读取器子块。 生成的标签映射文件将保存到此参数块的读取器子块中指定的 labelMappingFile。minibatchSize
:创建标签映射文件时要使用的小块大小。
DoEncoderDecoder 命令
神经网络可用于形成网络链。 前几个网络可以作为编码器工作,以下网络可以充当解码器。 每个网络中都使用特殊节点 PairNetworkNode 为其他网络连接的套接字提供服务。 相关参数为
section
:encoderReader 和 decoderReader 是编码器和解码器的读取器。 同样,对于编码器CVReader 和解码器CVReader,用于验证集。encoderNetworkBuilder
和decoderNetworkBuilder
:这些指定要使用的简单网络生成器。
BNStat 命令
评估批处理规范化节点的评估和测试数据集的平均值和方差很棘手。 虽然平均值和方差可以通过运行平均值或 exp 进行训练来计算,但我们仍然倾向于提供更稳定、更可靠的方法来生成批处理规范化平均值和方差--后批处理规范化统计信息。 训练后需要调用该命令。 它将为每个 BN 层生成平均值和方差。
modelPath
:包含已训练模型的模型文件的路径minibatchSize
:评估时使用的小型批大小,与训练 minibatchSize 相同itersPerNode
:每个批处理规范化节点的统计信息迭代reader
:读取器配置块,用于读取测试数据。 有关详细信息,请参阅 读取器块enableDistributedMBReading
:并行训练中的分布式读取