BrainScript UCI Fast Reader
Aviso
UCIFastReader é precotado e está sendo substituído por CNTK Leitor de Formato de Texto. Utilize CNTK Leitor de Formato de Texto para as suas redes.
UCIFastReader lê dados de formato UCI baseados em texto, nos quais cada registo de dados é uma linha de características flutuantes de pontos flutuantes e valores de etiqueta. A informação do rótulo é no início ou no fim de cada linha, se forem fornecidas informações sobre etiquetas. Para utilizar o UCIFastReader, definiu o readerType
como 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, também pode notar dois sub-blocos nomeados features
e labels
. Estes nomes são utilizados pelos leitores de dados para corresponder ao nó de computação na sua rede e aos dados carregados a partir dos ficheiros. Se os simples construtores de rede forem utilizados para criar a sua rede, features
e labels
são os nomes padrão dos nós de funcionalidade e etiqueta, respectivamente. Se definiu a sua rede utilizando o construtor de rede NDL, tem de se certificar de que estes nomes correspondem aos nós correspondentes na sua rede. O UCIFastReader tem os seguintes parâmetros:
file
: o ficheiro que contém o conjunto de dados. Este parâmetro foi movido para cima dos sub-blocos de funcionalidades e etiquetas, porque o UCIFastReader exige que o ficheiro seja o mesmo, e subir um nível garante que esta restrição é cumprida.dim
: a dimensão do valor de entrada. Note que cada coluna no ficheiro de dados da UCI representa uma dimensão dos dados de entrada.start
: a coluna de partida (baseada em zero) dos dados de entrada.labelDim
: o número de valores possíveis da etiqueta. Este parâmetro é necessário para rótulos categóricos, uma vez que a dimensão do nó de etiqueta será determinada por este valor. Note que o valor do rótulo em si é tipicamente especificado numa coluna no ficheiro de dados da UCI.labelMappingFile
: o caminho para um ficheiro utilizado para mapear do valor da etiqueta para um identificador de etiqueta numérica. O ficheiro normalmente lista todos os valores possíveis da etiqueta, um por linha, que pode ser texto ou numérico. O número de linha zero é o identificador que será utilizado por CNTK para identificar essa etiqueta. É importante que o mesmo ficheiro de mapeamento de etiquetas seja usado para treino e avaliação. Isto pode ser feito movendo o parâmetro DemappingFile para cima para que possa ser partilhado pelos blocos de treino e avaliação.customDelimiter
: o delimitador personalizado. Por predefinição, os espaços são usados como o delimiter. Com este parâmetro pode optar por utilizar outro delimiter, como vírgula ou ponto e vírgula, além de espaços. Note-se, no entanto, este leitor não lida com campos vazios, por exemplo, duas vírgulas seguidas, com ou sem espaço em branco no meio.customDecimalPoint
: o ponto decimal personalizado. Por predefinição, o ponto é usado como ponto decimal. Com este parâmetro pode optar por utilizar outro ponto decimal, como os utilizados nos países europeus.labelType
: indicar como as colunas de etiqueta devem ser interpretadas. Por predefinição, é definido como "Categoria", o que significa que requer uma tabela de mapeamento para mapear de valores (pode ser string) para IDs de classe para que os valores sejam convertidos para representação de 1-hot. Pode ser definido como "Regressão" para indicar que os valores são utilizados diretamente sem qualquer conversão ou "Nenhum" para indicar que não são utilizadas etiquetas.
Outras opções:
traceLevel
: Um inteiro que define a verbosidade do leitor. Atualmente utilizado: 0 (sem rastreio) e 1. Incumprimentos para 0.prefetch
: Um booleano ("verdadeiro" ou "falso") indicando se deve ser ativado o pré-ataque. A prefetching refere-se ao facto de os dados ser lidos assíncroneamente para o processamento principal. O valor predefinido é falso.randomize
: Uma corda ("nenhuma", "auto") que controla a ordem em que as linhas devem ser lidas. No caso de "Nenhum" são lidos por ordem linear; No caso de "automóvel" são colhidos aleatoriamente; TODO também pode ser um inteiro sob certos constrangimentos.minibatchMode
: Se forem dados e definidos como "parciais", são aceites minibatches parciais; Caso contrário, o tamanho dos dados de treino deve ser um múltiplo do tamanho da minibatch.