你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
BrainScript 配置文件概述
若要运行CNTK请使用类似于Exp.cntk 是CNTK配置文件的命令行cntk configFile=yourExp.cntk
,该文件通常包含多个命令块。 命令块是配置的顶级块。 每个命令块都必须指定要使用相关信息执行的操作。 为了说明配置和命令块,我们使用下面 (从 MNIST 示例) 获取的简单示例。
rootDir = ".." # often, this is overwritten on the command line
configDir = "$rootDir$/Config"
dataDir = "$rootDir$/Data"
outputDir = "$rootDir$/Output"
modelDir = "$outputDir$/Models"
command = mnistTrain
mnistTrain = [
action = "train"
# network definition
BrainScriptNetworkBuilder = (new ComputationNetwork
include "$ConfigDir$/01_OneHidden.bs"
)
# SGD learner configuration
SGD = [
modelPath = "$ModelDir$/01_OneHidden_Model.dnn"
epochSize = 60000
minibatchSize = 32
learningRatesPerMB = 0.1
maxEpochs = 30
]
# reader configuration
reader = [
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Train-28x28_cntk_text.txt"
input = [
features = [
dim = 784
format = "dense"
]
labels = [
dim = 10
format = "dense"
]
]
]
]
在此示例中,可以注意到所有配置值都指定为名称值配对。 值可以是数值、字符串、列表,甚至是配置块。 可以指定变量,例如 DataDir
在此示例中,并使用表示法 $DataDir$
稍后在脚本中引用它们。
顶级配置参数 command
确定要执行的命令块,以及指定多个命令块时执行命令块的顺序。 在此示例中, mnistTrain
将执行命令块。 此命令块指定要执行的操作, train
在这种情况下。 通常有三个与训练操作关联的参数块:
- 网络生成器块,它指定如何从头开始构建网络,以及如何从现有模型文件加载模型,
- 学习器块,指定要使用的训练算法,
- 读取器块,用于指定加载功能和标签的位置和方法。
在此特定示例中,由 BrainScriptNetworkBuilder 块指示的网络生成器用于定义网络、由 SDK 块指示的随机渐变下降学习算法用于训练模型,CNTK文本格式读取器用于从CNTK文本格式的文件加载特征和标签。 请注意,读取器作为单独的 DLL 实现,读取器的名称也是将加载到读取数据的 DLL 文件的名称。
最常用的配置块包括:
- 网络生成器
- SimpleNetworkBuilder - 创建具有有限自定义功能的预定义网络之一。
- BrainScriptNetworkBuilder - 使用 CNTK 的网络描述语言 (BrainScript) 定义网络。 它在设计自己的网络操作和结构方面具有完全的灵活性。
- 学习
- SGD - 使用随机梯度下降算法来训练模型。 这是大多数应用程序所需的教练。
- 数据读取器
- CNTK文本格式读取器 - 读取基于文本的CNTK格式,该格式支持在同一文件中组合多个输入。
- UCI 快速读取器 (弃用) - 读取基于文本的 UCI 格式,其中包含一个文件中组合的标签和功能。
- HTKMLF 读取器 - 读取 HTK/MLF 格式文件,通常用于语音识别应用程序。
- LM 序列读取器 - 读取包含单词序列的基于文本的文件,用于预测单词序列。 这通常用于语言建模。
- LU 序列读取器 - 读取包含单词序列及其标签的基于文本的文件。 这通常用于语言理解。
在以下小节中,我们将详细介绍CNTK配置和上述块。 还可以使用上述文本中的链接跳转到各个块。
另请参阅