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


Команды верхнего уровня с помощью BrainScript

Основная команда train верхнего уровня описана eval/test на странице "Обучение", "Тестирование", "Eval ". Дополнительные команды верхнего уровня подробно описаны ниже.

Команда Adapt

Эта команда адаптирует уже обученную модель с помощью регуляризации расхождений KL. Рекомендуется проводить все другие адаптации с помощью редактирования моделей. Команда адаптации очень похожа на команду train, за исключением того, что она содержит еще два параметра:

  • originalModelFileName: имя файла модели, которая будет адаптирована.

  • refNodeName: имя узла в вычислительной сети, которая будет использоваться для нормализации дивергенции KL.

CV

Эта команда оценивает ряд моделей из разных эпох в наборе разработки (или перекрестной проверки) и отображает сведения о лучшей модели. Помимо параметров, используемых для команды теста, эта команда также использует параметры.

  • crossValidationInterval: массив из 3 целых чисел, определяющих начальную эпоху, приращение эпохи и окончательную эпоху для вычисления. Например, 3:2:9 означает, что модели 3,5,7 и 9 будут оцениваться.

  • sleepTimeBetweenRuns: сколько секунд следует ожидать между запусками. Это необходимо только в том случае, если ваш GPU слишком горячий.

Команда Write

Эта команда записывает значение выходного узла в файл. Связанные параметры:

  • reader: блок конфигурации средства чтения для чтения входных данных.

  • writer: блок конфигурации модуля записи, определяющий способ записи выходных данных. Если это значение не указано, будет использоваться параметр outputPath.

  • minibatchSize: размер мини-пакета, используемый при чтении и обработке набора данных.

  • epochSize: размер набора данных. Значение по умолчанию — 0. Весь набор данных будет оцениваться, если он имеет значение 0.

  • modelPath: путь к модели, используемой для вычисления выходных данных.

  • outputPath: путь к файлу для записи выходных данных в текстовом формате. Если блок модуля записи существует, этот параметр будет игнорироваться. Должен существовать выходной путь или модуль записи.

  • outputNodeNames: массив из одного или нескольких имен выходных узлов, записываемых в файл.

Команда "Изменить"

Эта команда изменяет модель и сохраняет измененную модель в файл. Мы не рекомендуем использовать этот метод. Связанные параметры:

  • editPath: путь к выполняемой скрипту MEL.
  • ndlMacros: путь к файлу макросов NDL, который будет загружен и использован в скрипте MEL.

Команда SVD

Эта команда проводит приближение с низким рангом с декомпозицией SVD обучаемых параметров. Основная мотивация заключается в факторизации матрицы веса с двумя матрицами нижнего ранга для повышения скорости вывода, сохраняя точность. Пример:

svd = [
    action = "SVD"
    modelPath = "train\lstm.model.67"
    outputModelPath = "train\lstm.model.svd"
    SVDConfig = "nodeConfigs"
]

Связанные блоки параметров:

  • modelPath: указывает место загрузки начальной модели.

  • outputModelPath: указывает место сохранения измененной модели.

  • SVDConfig: файл конфигурации, указывающий, как выполняется SVD для разных групп узлов. Эта конфигурация имеет формат двух столбцов:

    <NodeNameRegex> <float>

Первый столбец — это регулярное выражение, которое будет соответствовать имени узла в одной группе. Второй столбец — это число с плавающей запятой, указывающее, какой процент SVDdl будет храниться после SVD, где svD-энергия определяется как сумма сингулярных значений. Например, конфигурация

`LSTMoutput[1-3].Wx[ifco] 0.4`
`LSTMoutput[1-3].Wh[ifco] 0.6`

вызовет более агрессивную декомпозицию SVD (0,4) для некриметрических соединений (от x до i,f,c,o шлюзов) в LSTM и менее агрессивной декомпозиции SVD для повторяющихся соединений (от h к i,f,c,o шлюза), где имена параметров определяются в NDL.

Команда Dumpnode

Эта команда сбрасывает сведения о узлах в выходной файл, который также можно выполнить в MEL с большим контролем. Связанные параметры:

  • modelPath: путь к файлу модели, содержащающим узлы для дампа.

  • nodeName: имя узла, записываемого в файл. Если не указано, все узлы будут дампами.

  • nodeNameRegex: регулярное выражение для имен узлов, записываемых в файл. Если этот параметр указан, nodeName параметр игнорируется.

  • outputFile: путь к выходному файлу. Если имя файла не указано, будет автоматически создано на основе modelPath.

  • printValues: определяет, следует ли выводить значения, связанные с узлом, если значения узла сохраняются в модели. Значение по умолчанию — true.

  • printMetadata: определяет, следует ли выводить метаданные (имя узла, измерения и т. д.), связанные с узлом. Значение по умолчанию — true.

Команда WriteWordAndClass (не рекомендуется)

Эта команда считывает обучающие данные текста, подсчитывает количество вхождений каждого слова в обучающем наборе, сортирует слова в порядке убывания счетчиков, присваивает каждому слову уникальный идентификатор, присваивает каждое слово классу и создает файл сопоставления с четырьмя столбцами и файл сопоставления слов с идентификатором, используемый (нерекомендуемым) LMSequenceReader для обучения языковых моделей на основе классов. Связанные параметры:

  • inputFile: путь к текстовому файлу обучения.

  • outputVocabFile: имя созданного файла словаря из четырех столбцов. Первый столбец — это идентификатор слова, второй — количество слов, третий столбец — слово, а четвертый — идентификатор класса.

  • outputWord2Cls: путь к созданному файлу сопоставления слов с классом.

  • outputCls2Index: путь к созданному файлу сопоставления class-to-wordId.

  • vocabSize: требуемый размер словаря.

  • nbrClass: требуемое количество классов.

  • cutoff: число отсечений. Если число слов ниже или равно этому значению, слово будет рассматриваться как . По умолчанию используется значение 2. Обратите внимание, что этот параметр используется только в том случае, если нужный размер словаря превышает фактическое количество слов в обучаемом наборе.

Команда CreateLabelMap

Часто легко создать файл сопоставления меток вручную. Однако иногда рекомендуется создать автоматически файл сопоставления меток, который является целью команды CreateLabelMap. В настоящее время UCIFastReader является единственным средством чтения, поддерживающим это действие. Связанные параметры:

  • section: имя блока параметров (обычно это блок обучения), который содержит вложенный блок чтения, который будет использоваться для создания файла сопоставления меток. Созданный файл сопоставления меток будет сохранен в файле labelMappingFile, указанном в вложенном блоке чтения этого блока параметров.

  • minibatchSize: размер мини-пакетов, используемый при создании файла сопоставления меток.

Команда DoEncoderDecoder

Нейронные сети можно использовать для формирования цепочки сетей. Первые несколько сетей могут работать в качестве кодировщиков, а следующие сети могут служить декодировщиками. Специальный узел PairNetworkNode используется в каждой сети для обслуживания сокета для подключения другими сетями. Связанные параметры:

  • section: encoderReader и decoderReader — это средства чтения для кодировщика и декодера. Аналогично для кодировщикаCVReader и декодераCVReader для набора проверки.

  • encoderNetworkBuilder и decoderNetworkBuilder: они указывают простой построитель сети, который будет использоваться.

Команда BNStat

Оценка среднего и дисперсии оценки и тестирования набора данных для узла пакетной нормализации является сложной задачей. Несмотря на то, что среднее и дисперсию можно вычислить путем выполнения среднего или экспультирования во время обучения, мы по-прежнему предоставляем более стабильный и надежный метод для создания среднего и дисперсии пакетной нормализации - после нормализации пакета статистики. После обучения необходимо вызвать команду. Он создаст среднее и дисперсию для каждого слоя BN.

  • modelPath: путь к файлу модели с обученной моделью.
  • minibatchSize: мини-пакетный размер при оценке, то же самое, что и для обучения minibatchSize
  • itersPerNode: итерации статистики для каждого узла нормализации пакета
  • reader: блок конфигурации средства чтения для чтения тестовых данных. Дополнительные сведения см. в разделе "Блок чтения"
  • enableDistributedMBReading: распределенное чтение в параллельном обучении