Beispiel #1
0
def projection_skip(nfm, stride=1):
    mainpath = [Conv(**conv_params(3, nfm, stride=stride)),
                Conv(**conv_params(3, nfm, relu=False))]
    sidepath = [SkipNode() if stride == 1 else Conv(**conv_params(1, nfm, stride, relu=False))]
    module = [MergeSum([mainpath, sidepath]),
              Activation(Rectlin())]
    return module
Beispiel #2
0
def module_s1(nfm, first=False):
    '''
    non-strided
    '''
    sidepath = Conv(
        **conv_params(1, nfm * 4, 1, False, False)) if first else SkipNode()
    mainpath = [] if first else [BatchNorm(), Activation(Rectlin())]
    mainpath.append(Conv(**conv_params(1, nfm)))
    mainpath.append(Conv(**conv_params(3, nfm)))
    mainpath.append(
        Conv(**conv_params(1, nfm * 4, relu=False, batch_norm=False)))

    return MergeSum([sidepath, mainpath])
Beispiel #3
0
def module_s2(nfm):
    '''
    strided
    '''
    module = [BatchNorm(), Activation(Rectlin())]
    mainpath = [
        Conv(**conv_params(1, nfm, stride=2)),
        Conv(**conv_params(3, nfm)),
        Conv(**conv_params(1, nfm * 4, relu=False, batch_norm=False))
    ]
    sidepath = [
        Conv(**conv_params(1, nfm * 4, stride=2, relu=False, batch_norm=False))
    ]
    module.append(MergeSum([sidepath, mainpath]))
    return module
Beispiel #4
0
def module_factory(nfm, bottleneck=True, stride=1):
    nfm_out = nfm * 4 if bottleneck else nfm
    use_skip = True if stride == 1 else False
    stride = abs(stride)
    sidepath = [SkipNode() if use_skip else Conv(
        **conv_params(1, nfm_out, stride, False))]

    if bottleneck:
        mainpath = [Conv(**conv_params(1, nfm, stride)),
                    Conv(**conv_params(3, nfm)),
                    Conv(**conv_params(1, nfm_out, relu=False))]
    else:
        mainpath = [Conv(**conv_params(3, nfm, stride)),
                    Conv(**conv_params(3, nfm, relu=False))]
    return [MergeSum([mainpath, sidepath]),
            Activation(Rectlin())]
Beispiel #5
0
# weight initialization
init_norm = Gaussian(loc=0.0, scale=0.01)

# initialize model
path1 = Model(layers=[
    Affine(nout=100, init=init_norm, activation=Rectlin()),
    Affine(nout=100, init=init_norm, activation=Rectlin())
])

path2 = Model(layers=[
    Affine(nout=100, init=init_norm, activation=Rectlin()),
    Affine(nout=100, init=init_norm, activation=Rectlin())
])

layers = [
    MergeSum([path1.layers, path2.layers]),
    Affine(nout=10, init=init_norm, activation=Logistic(shortcut=True))
]

model = Model(layers=layers)
cost = GeneralizedCost(costfunc=CrossEntropyBinary())

# fit and validate
optimizer = GradientDescentMomentum(learning_rate=0.1, momentum_coef=0.9)

# configure callbacks
callbacks = Callbacks(model,
                      train_set,
                      output_file=args.output_file,
                      valid_set=valid_set,
                      valid_freq=args.validation_freq,