Как я могу описать сеть для приближения функций с помощью CNTK BrainsScript?

Я хочу сеть, которая приближает произвольные функции. Здесь я предполагаю, что эта сеть имеет один вход, (n) скрытых слоев, каждый слой имеет (n) узлов и один выход.

Я использую в основном файл конфигурации CNTK. Как я могу описать такую ​​сеть в конфигурационном файле CNTK?

Я пробовал это с SimpleNetworkBuilder, как показано ниже, и использовал данные обучения синусоидальной волны.

Вот файл конфигурации и данные обучения. Пожалуйста, отошлите это.

https://drive.google.com/open?id=0B83LnG3hRTNGUGxvTHJfYmZuMEE

Чтобы оценить эту сеть, я немного изменил пример проекта в пакете CNTK, CNTKLibraryCPPEvalGPUExamples. Я только поместил 'EvalMultithreads.cpp' в вышеупомянутый файл почтового индекса.

Эта сеть начинает изучение итерации, но выводит неверные значения в процессе оценки (я использую C++ Eval Library).

Я дал несколько данных этой программе оценки, и она выводит "1" на всех выходах. Эта сеть, очевидно, научилась неправильно.

command = trainNetwork:testNetwork
precision = "float"; 
traceLevel = 1; 
deviceId = 0;

rootDir = "."; 
dataDir = ".";
outputDir = "./Output";

modelPath = "$outputDir$/Models/mynn2"

dimension = 1
labelDimension = 1

# TRAINING CONFIG
trainNetwork = {
    action = "train"

    SimpleNetworkBuilder = [
        layerSizes        = 1:50*1:1
        trainingCriterion = "CrossEntropyWithSoftmax"
        evalCriterion     = "ErrorPrediction"
        layerTypes        = "Sigmoid"
        applyMeanVarNorm  = true
    ]

    SGD = [
        epochSize = 10000
        minibatchSize = 1
        learningRatesPerSample = 0.0001
        momentumAsTimeConstant = 0.0
        maxEpochs = 1
    ]

    reader = {
        readerType = "CNTKTextFormatReader"
        file = "train_sine.txt"
        input = {
            features = { dim = $dimension$; format = "dense" }
            labels =   { dim = $labelDimension$; format = "dense" }
        }
    }
}

# TEST CONFIG
testNetwork = {
    action = "test"
    minibatchSize = 1    # reduce this if you run out of memory

    reader = {
        readerType = "CNTKTextFormatReader"
        file = "test.txt"
        input = {
            features = { dim = $dimension$; format = "dense" }
            labels =   { dim = $labelDimension$; format = "dense" }
        }
    }
}

1 ответ

Решение

При выполнении регрессии вы должны использовать SquaredError, а не CrossEntropyWithSoftmax.

Другие вопросы по тегам