I am new to CNTK. By following the tutorial, I created the first example, Logistic Regression, using BrainScript. Running the script went fine. But I was unable to find the output.txt file which is supposed to be result of an Output command in the BrainScript configuration. Can anyone helps?
There is the BrainScript configuration:
# CNTK Machine Learning Configuration
# commands to run
command=Train:Output
modelPath = "model.dnn"
deviceId = -1
dimension = 2
labelDimension = 2
# Train command
Train = {
action="train"
# configuration of data reading
reader = {
readerType = "CNTKTextFormatReader"
file = "C:\Newtera\ECM\Src\MLStudio\Data\Train_cntk_text.txt"
input = [
features = [
dim = $dimension$
format = "dense"
]
labels = [
dim = 1
format = "dense"
]
]
}
# network description
BrainScriptNetworkBuilder = {
# sample and label dimensions
SDim = $dimension$
LDim = 1
features = Input(SDim)
labels = Input(LDim)
# parameters to learn
b = Parameter(LDim, 1) # bias
w = Parameter(LDim, SDim) # weights
# operations
p = Sigmoid(w * features + b)
lr = Logistic(labels, p)
err = SquareError(labels, p)
# root nodes
featureNodes = (features)
labelNodes = (labels)
criterionNodes = (lr)
evaluationNodes = (err)
outputNodes = (p)
}
# configuration parameters of the SGD procedure
SGD = {
epochSize = 0 # =0 means size of the training set
minibatchSize = 25
learningRatesPerSample = 0.04 # gradient contribution from each sample
maxEpochs = 50
}
}
# Output command
Output = {
action="write"
# configuration of data reading
reader = {
readerType = "CNTKTextFormatReader"
file = "C:\Newtera\ECM\Src\MLStudio\Data\Test_cntk_text.txt"
input = [
features = [
dim = $dimension$
format = "dense"
]
labels = [
dim = 1
format = "dense"
]
]
}
outputPath = "output.txt"
outputNodeNames = p
}
Part of CNTK outputs to Console:
Finished Epoch[29 of 50]: [Training] lr = 0.04359039 * 1000; err = 0.01143183 * 1000; totalSamplesSeen = 29000; learningRatePerSample = 0.039999999; epochTime=0.0379145s
Finished Epoch[30 of 50]: [Training] lr = 0.04405872 * 1000; err = 0.01164983 * 1000; totalSamplesSeen = 30000; learningRatePerSample = 0.039999999; epochTime=0.0322998s
Finished Epoch[31 of 50]: [Training] lr = 0.04420973 * 1000; err = 0.01164209 * 1000; totalSamplesSeen = 31000; learningRatePerSample = 0.039999999; epochTime=0.0402s
Finished Epoch[32 of 50]: [Training] lr = 0.04337909 * 1000; err = 0.01130067 * 1000; totalSamplesSeen = 32000; learningRatePerSample = 0.039999999; epochTime=0.0333882s
Finished Epoch[33 of 50]: [Training] lr = 0.04398178 * 1000; err = 0.01223733 * 1000; totalSamplesSeen = 33000; learningRatePerSample = 0.039999999; epochTime=0.0344874s
Finished Epoch[34 of 50]: [Training] lr = 0.04342690 * 1000; err = 0.01140238 * 1000; totalSamplesSeen = 34000; learningRatePerSample = 0.039999999; epochTime=0.0332142s
Finished Epoch[35 of 50]: [Training] lr = 0.04300383 * 1000; err = 0.01094254 * 1000; totalSamplesSeen = 35000; learningRatePerSample = 0.039999999; epochTime=0.042097s
Finished Epoch[36 of 50]: [Training] lr = 0.04331203 * 1000; err = 0.01136943 * 1000; totalSamplesSeen = 36000; learningRatePerSample = 0.039999999; epochTime=0.0321645s
Finished Epoch[37 of 50]: [Training] lr = 0.04345496 * 1000; err = 0.01147922 * 1000; totalSamplesSeen = 37000; learningRatePerSample = 0.039999999; epochTime=0.0332394s
Finished Epoch[38 of 50]: [Training] lr = 0.04424128 * 1000; err = 0.01172341 * 1000; totalSamplesSeen = 38000; learningRatePerSample = 0.039999999; epochTime=0.0327771s
Finished Epoch[39 of 50]: [Training] lr = 0.04669956 * 1000; err = 0.01262951 * 1000; totalSamplesSeen = 39000; learningRatePerSample = 0.039999999; epochTime=0.0397526s
Finished Epoch[40 of 50]: [Training] lr = 0.04297209 * 1000; err = 0.01148758 * 1000; totalSamplesSeen = 40000; learningRatePerSample = 0.039999999; epochTime=0.0333094s
Finished Epoch[41 of 50]: [Training] lr = 0.04553096 * 1000; err = 0.01266350 * 1000; totalSamplesSeen = 41000; learningRatePerSample = 0.039999999; epochTime=0.0336593s
Finished Epoch[42 of 50]: [Training] lr = 0.04287576 * 1000; err = 0.01152806 * 1000; totalSamplesSeen = 42000; learningRatePerSample = 0.039999999; epochTime=0.0344351s
Finished Epoch[43 of 50]: [Training] lr = 0.04388394 * 1000; err = 0.01206369 * 1000; totalSamplesSeen = 43000; learningRatePerSample = 0.039999999; epochTime=0.0342201s
Finished Epoch[44 of 50]: [Training] lr = 0.04223350 * 1000; err = 0.01105061 * 1000; totalSamplesSeen = 44000; learningRatePerSample = 0.039999999; epochTime=0.0337745s
Finished Epoch[45 of 50]: [Training] lr = 0.04207988 * 1000; err = 0.01140505 * 1000; totalSamplesSeen = 45000; learningRatePerSample = 0.039999999; epochTime=0.0338235s
Finished Epoch[46 of 50]: [Training] lr = 0.04261599 * 1000; err = 0.01158317 * 1000; totalSamplesSeen = 46000; learningRatePerSample = 0.039999999; epochTime=0.0400027s
Finished Epoch[47 of 50]: [Training] lr = 0.04326449 * 1000; err = 0.01164270 * 1000; totalSamplesSeen = 47000; learningRatePerSample = 0.039999999; epochTime=0.0339331s
Finished Epoch[48 of 50]: [Training] lr = 0.04225180 * 1000; err = 0.01148765 * 1000; totalSamplesSeen = 48000; learningRatePerSample = 0.039999999; epochTime=0.0399052s
Finished Epoch[49 of 50]: [Training] lr = 0.04173198 * 1000; err = 0.01124937 * 1000; totalSamplesSeen = 49000; learningRatePerSample = 0.039999999; epochTime=0.0338758s
Finished Epoch[50 of 50]: [Training] lr = 0.04399340 * 1000; err = 0.01202173 * 1000; totalSamplesSeen = 50000; learningRatePerSample = 0.039999999; epochTime=0.0330397s
COMPLETED.
The outputpath element is not the path to which the output file will be written, but only the prefix of it. The suffix will be created based on the name of the network node that you wish to output. So, if you are outputting node p, you would expect the results in file output.txt.p
However, at present, you are not specifying which node to output. You can do that by adding outputNodeNames=p to your config.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With