BrainScript UCI Fast Reader
Aviso
UCIFastReader foi preterido e está sendo substituído por CNTK Leitor de Formato de Texto. Use CNTK Leitor de Formato de Texto para suas redes.
UCIFastReader lê dados de formato UCI baseados em texto, nos quais cada registro de dados é uma linha de recursos de ponto flutuante delimitados por espaço e valores de rótulo. As informações do rótulo estão no início ou no final de cada linha, se as informações do rótulo forem fornecidas. Para usar o UCIFastReader, defina como readerType
UCIFastReader
em
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"
]
]
Neste exemplo, você também pode observar dois subconjuntos nomeados features
e labels
. Esses nomes são usados pelos leitores de dados para corresponder ao nó de computação em sua rede e aos dados carregados dos arquivos. Se construtores de rede simples forem usados para criar sua rede features
e labels
forem os nomes padrão dos nós de recurso e rótulo, respectivamente. Se você definiu sua rede usando o construtor de rede NDL, precisará verificar se esses nomes correspondem aos nós correspondentes em sua rede. O UCIFastReader tem os seguintes parâmetros:
file
: o arquivo que contém o conjunto de dados. Esse parâmetro foi movido para cima dos subcadeias de recursos e rótulos, pois UCIFastReader exige que o arquivo seja o mesmo e subir um nível garante que essa restrição seja atendida.dim
: a dimensão do valor de entrada. Observe que cada coluna no arquivo de dados UCI representa uma dimensão dos dados de entrada.start
: a coluna inicial (baseada em zero) dos dados de entrada.labelDim
: o número de valores de rótulo possíveis. Esse parâmetro é necessário para rótulos categóricos, pois a dimensão do nó de rótulo será determinada por esse valor. Observe que o valor do rótulo em si normalmente é especificado em uma coluna no arquivo de dados UCI.labelMappingFile
: o caminho para um arquivo usado para mapear do valor do rótulo para um identificador de rótulo numérico. Normalmente, o arquivo lista todos os valores de rótulo possíveis, um por linha, que pode ser texto ou numérico. O número de linha baseado em zero é o identificador que será usado por CNTK para identificar esse rótulo. É importante que o mesmo arquivo de mapeamento de rótulo seja usado para treinamento e avaliação. Isso pode ser feito movendo o parâmetro labelMappingFile para cima para que ele possa ser compartilhado pelos blocos de treinamento e avaliação.customDelimiter
: o delimitador personalizado. Por padrão, os espaços são usados como delimitador. Com esse parâmetro, você pode optar por usar outro delimitador, como vírgula ou ponto-e-vírgula, além de espaços. Observe, porém, que esse leitor não manipula campos vazios, por exemplo, duas vírgulas em uma linha, com ou sem espaço em branco no meio.customDecimalPoint
: o ponto decimal personalizado. Por padrão, o ponto é usado como o ponto decimal. Com esse parâmetro, você pode optar por usar outro ponto decimais, como os usados em países europeus.labelType
: para indicar como as colunas de rótulo devem ser interpretadas. Por padrão, ele é definido como "Categoria", o que significa que requer uma tabela de mapeamento para mapear de valores (pode ser cadeia de caracteres) para IDs de classe para que os valores sejam convertidos em uma representação ativa. Ele pode ser definido como "Regressão" para indicar que os valores são usados diretamente sem nenhuma conversão ou "Nenhum" para indicar que nenhum rótulo é usado.
Outras opções:
traceLevel
: um inteiro que define a verbosidade do leitor. Usado atualmente: 0 (sem rastreamento) e 1. Assume o padrão de 0.prefetch
: um booliano ("true" ou "false") que indica se a pré-busca deve ser habilitada. A pré-busca refere-se ao fato de que os dados são lidos de forma assíncrona para o processamento principal. O padrão é false.randomize
: uma cadeia de caracteres ("none", "auto") que controla a ordem na qual as linhas devem ser lidas. No caso de "Nenhum" eles são lidos em ordem linear; No caso de "auto" eles são escolhidos aleatoriamente; TODO também pode ser um inteiro sob determinadas restrições.minibatchMode
: se determinados e definidos como "parciais", os minibatches parciais são aceitos; Caso contrário, o tamanho dos dados de treinamento deve ser um múltiplo do tamanho da minibatch.