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


Быстрое средство чтения UCI BrainScript

Предупреждение

UCIFastReader является нерекомендуемым и заменяется средством чтения CNTK текстового формата. Используйте средство чтения текстового формата CNTK для сетей.


UCIFastReader считывает текстовые данные формата UCI, в которых каждая запись данных представляет собой линию функций с плавающей запятой с разделителями пробелов и значений меток. Сведения о метке — в начале или конце каждой строки, если указана информация о метке. Чтобы использовать UCIFastReader, вы задали значение readerType as UCIFastReader in

reader = [
    readerType = "UCIFastReader"
    file = "c:\cntk\data\mnist\mnist_train.txt"
    features = [
        dim = 784
        start = 1
    ]
    labels = [
        dim = 1
        start = 0
        labelDim = 10
        labelMappingFile = "c:\cntk\data\mnist\mnistlabels.txt"
    ]
]

В этом примере также можно заметить два вложенных блока с именем features и labels. Эти имена используются средствами чтения данных для сопоставления вычислительного узла в сети и данных, загруженных из файлов. Если простые сетевые построители используются для создания сети и featureslabels являются стандартными именами узлов компонентов и меток соответственно. Если вы определили сеть с помощью построителя сети NDL, необходимо убедиться, что эти имена соответствуют соответствующим узлам в сети. UCIFastReader имеет следующие параметры:

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

  • dim: измерение входного значения. Обратите внимание, что каждый столбец в файле данных UCI представляет одно измерение входных данных.

  • start: начальный столбец (отсчитываемый от нуля) входных данных.

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

  • labelMappingFile: путь к файлу, используемому для сопоставления значения метки с идентификатором числовых меток. Файл обычно перечисляет все возможные значения меток, по одной строке, которые могут быть текстовыми или числовыми. Отсчитываемый от нуля номер строки — это идентификатор, который будет использоваться CNTK для идентификации этой метки. Важно, чтобы один и тот же файл сопоставления меток использовался для обучения и оценки. Это можно сделать, переместив параметр labelMappingFile вверх, чтобы его можно было совместно использовать как в блоках обучения, так и для оценки.

  • customDelimiter: настраиваемый разделитель. По умолчанию пробелы используются в качестве разделителя. С помощью этого параметра можно использовать другой разделитель, например запятую или точку с запятой, в дополнение к пробелам. Обратите внимание, что это средство чтения не обрабатывает пустые поля, например две запятые в строке или без пробелов между ними.

  • customDecimalPoint: настраиваемая десятичная точка. По умолчанию точка используется в качестве десятичной запятой. С помощью этого параметра можно использовать еще одну десятичную запятую, например те, которые используются в европейских странах.

  • labelType: указывает, как следует интерпретировать столбцы меток. По умолчанию для него задано значение Category, то есть для сопоставления таблицы сопоставления из значений (может быть строка) с идентификаторами классов, чтобы значения преобразовылись в 1-горячее представление. Можно задать значение "Регрессия", чтобы указать, что значения используются непосредственно без преобразования или "Нет", чтобы указать, что метки не используются.

Другие варианты:

  • traceLevel: целое число, определяющее детализацию средства чтения. В настоящее время используется: 0 (без трассировки) и 1. Значение по умолчанию — 0.
  • prefetch: логическое значение ("true" или "false"), указывающее, следует ли включить предварительную выборку. Предварительная выборка означает, что данные считываются асинхронно в основную обработку. Значение по умолчанию — false.
  • randomize: строка ("none", "auto") управляет порядком чтения строк. В случае "Нет" они считываются в линейном порядке; В случае "авто" они выбираются случайным образом; TODO также может быть целым числом в определенных ограничениях.
  • minibatchMode: если задано и задано значение "partial", принимаются частичные мини-баты; В противном случае размер данных для обучения должен быть кратным размером мини-пакета.