如何使用 CNTK BrainsScript 描述函数逼近网络?
How can I describe a network for function approximation with CNTK BrainsScript?
我想要一个近似任意函数的网络。
这里,我假设这个网络有一个输入,(n)个隐藏层,每一层有(n)个节点,一个输出。
我主要使用CNTK 配置文件。
我如何在 CNTK 配置文件中描述这样的网络?
我一直在尝试使用如下所示的 SimpleNetworkBuilder 并使用正弦波训练数据。
这是配置文件和训练数据。请参考。
https://drive.google.com/open?id=0B83LnG3hRTNGUGxvTHJfYmZuMEE
为了评估这个网络,我稍微修改了 CNTK 包中的一个示例项目,CNTKLibraryCPPEvalGPUExamples。我只把 'EvalMultithreads.cpp' 放在上面的 zip 文件中。
这个网络开始学习迭代,但它在我的评估过程中输出了错误的值(我一直在使用 C++ Eval 库)。
我为这个评估程序提供了一些数据,它在所有输出上都输出“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" }
}
}
}
进行回归时,您应该使用 SquaredError 而不是 CrossEntropyWithSoftmax。
我想要一个近似任意函数的网络。 这里,我假设这个网络有一个输入,(n)个隐藏层,每一层有(n)个节点,一个输出。
我主要使用CNTK 配置文件。 我如何在 CNTK 配置文件中描述这样的网络?
我一直在尝试使用如下所示的 SimpleNetworkBuilder 并使用正弦波训练数据。
这是配置文件和训练数据。请参考。
https://drive.google.com/open?id=0B83LnG3hRTNGUGxvTHJfYmZuMEE
为了评估这个网络,我稍微修改了 CNTK 包中的一个示例项目,CNTKLibraryCPPEvalGPUExamples。我只把 'EvalMultithreads.cpp' 放在上面的 zip 文件中。
这个网络开始学习迭代,但它在我的评估过程中输出了错误的值(我一直在使用 C++ Eval 库)。
我为这个评估程序提供了一些数据,它在所有输出上都输出“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" }
}
}
}
进行回归时,您应该使用 SquaredError 而不是 CrossEntropyWithSoftmax。