Общие сведения о файле конфигурации BrainScript
Для запуска CNTK используется командная строка, аналогичная томуcntk configFile=yourExp.cntk
, где yourExp.cntk является файлом конфигурации 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, используется для определения сети, алгоритм обучения стохастического градиента градиента, как указано блоком JSON, используется для обучения модели, а средство чтения текстовых форматов CNTK используется для загрузки признаков и меток из файлов в CNTK текстовом формате. Обратите внимание, что читатели реализуются как отдельные библиотеки DLL, а имя средства чтения — это также имя DLL-файла, который будет загружен для чтения данных.
Наиболее часто используемые блоки конфигурации:
- Построители сети
- SimpleNetworkBuilder — создает одну из предопределенных сетей с ограниченной настройкой.
- BrainScriptNetworkBuilder — создает сеть, определенную с помощью языка описания сети CNTK (BrainScript). Она обеспечивает полную гибкость при проектировании собственных сетевых операций и структуры.
- Учащихся
- ДЛЯ обучения модели используется алгоритм стохастического градиента градиента. Это желаемый тренер для большинства приложений.
- Средства чтения данных
- CNTK средство чтения текстового формата — считывает текстовый формат CNTK, который поддерживает несколько входных данных в одном файле.
- UCI Fast Reader (не рекомендуется) — считывает текстовый формат UCI, который содержит метки и функции, объединенные в один файл.
- Средство чтения HTKMLF — считывает файлы формата HTK/MLF, часто используемые в приложениях распознавания речи.
- Средство чтения последовательностей LM — считывает текстовые файлы, содержащие последовательности слов, для прогнозирования последовательностей слов. Это часто используется в моделировании языка.
- Средство чтения последовательностей LU — считывает текстовые файлы, содержащие последовательности слов и их метки. Это часто используется для распознавания речи.
В следующих подразделах мы подробно рассмотрим конфигурацию CNTK и приведенные выше блоки. Вы также можете перейти к отдельным блокам, используя ссылки в приведенном выше тексте.
См. также: