Поделиться через


Общие сведения о файле конфигурации 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 и приведенные выше блоки. Вы также можете перейти к отдельным блокам, используя ссылки в приведенном выше тексте.

См. также: