https://github.com/Microsoft/CNTK
Raw File
Tip revision: 34d9aea20fa4823bcb5cd89e924a09981598f7e3 authored by Roberto de Moura Estevão Filho on 13 April 2018, 16:41:59 UTC
Fix DisableNodeTiming typo
Tip revision: 34d9aea
ImageHandsOn_Solution2.cntk
# CNTK Configuration File for training a simple CIFAR-10 convnet.
# During the hands-on tutorial, this will be fleshed out into a ResNet-20 model.

command = TrainConvNet:Eval

makeMode = false ; traceLevel = 0 ; deviceId = "auto"

rootDir = "." ; dataDir  = "$rootDir$" ; modelDir = "$rootDir$/Models"

modelPath = "$modelDir$/cifar10.cmf"

# Training action for a convolutional network
TrainConvNet = {
    action = "train"

    BrainScriptNetworkBuilder = {
        imageShape = 32:32:3
        labelDim = 10

        model (features) = {
            MyLayer (x, depth, initValueScale) =
            {
                c = ConvolutionalLayer {depth, (5:5), pad=true, activation=ReLU, initValueScale=initValueScale} (x)
                p = MaxPoolingLayer {(3:3), stride = (2:2)} (c)
            }.p
            featNorm = features - 128
            p1 = MyLayer (featNorm, 32, 0.1557/256)
            p2 = MyLayer (p1,       32, 0.2)
            p3 = MyLayer (p2,       64, 0.2)
            d1 = DenseLayer {64, activation=ReLU, initValueScale=1.697} (p3)
            d1_d = Dropout (d1)
            z  = LinearLayer {10, initValueScale = 0.212} (d1_d)
        }.z

        # inputs
        features = Input {imageShape}
        labels   = Input {labelDim}

        # apply model to features
        z = model (features)

        # connect to system
        ce       = CrossEntropyWithSoftmax (labels, z)
        errs     = ClassificationError     (labels, z)

        featureNodes    = (features)
        labelNodes      = (labels)
        criterionNodes  = (ce)
        evaluationNodes = (errs)
        outputNodes     = (z)
    }

    SGD = {
        epochSize = 50000

        maxEpochs = 10 ; minibatchSize = 64
        learningRatesPerSample = 0.00015625*7:0.000046875*10:0.000015625
        momentumAsTimeConstant = 600*20:6400
        L2RegWeight = 0.03
        dropoutRate = 0*1:0.5

        firstMBsToShowResult = 10 ; numMBsToShowResult = 100
    }

    reader = {
        verbosity = 0 ; randomize = true
        deserializers = ({
            type = "ImageDeserializer" ; module = "ImageReader"
            file = "$dataDir$/cifar-10-batches-py/train_map.txt"
            input = {
                features = { transforms = (
                    { type = "Crop" ; cropType = "RandomSide" ; sideRatio = 0.8 ; jitterType = "UniRatio" } :
                    { type = "Scale" ; width = 32 ; height = 32 ; channels = 3 ; interpolations = "linear" } :
                    { type = "Transpose" }
                )}
                labels = { labelDim = 10 }
            }
        })
    }
}

# Eval action
Eval = {
    action = "eval"
    minibatchSize = 16
    evalNodeNames = errs
    reader = {
        verbosity = 0 ; randomize = true
        deserializers = ({
            type = "ImageDeserializer" ; module = "ImageReader"
            file = "$dataDir$/cifar-10-batches-py/test_map.txt"
            input = {
                features = { transforms = (
                   { type = "Scale" ; width = 32 ; height = 32 ; channels = 3 ; interpolations = "linear" } :
                   { type = "Transpose" }
                )}
                labels = { labelDim = 10 }
            }
        })
    }
}
back to top