def create_classifier(body, data, n_classes, l2_reg=0.):
# Include last layers
top = BatchNormalization(mode=0, axis=channel_idx, name="bn7")(body)
top = Activation('relu', name="relu7")(top)
top = AtrousConvolution2D(512, 3, 3, 'he_normal', atrous_rate=(12, 12),
border_mode='same', name="conv6a",
W_regularizer=l2(l2_reg))(top)
top = Activation('relu', name="conv6a_relu")(top)
name = "hyperplane_num_cls_%d_branch_%d" % (n_classes, 12)
def my_init(shape, name=None, dim_ordering='th'):
return initializations.normal(shape, scale=0.01, name=name)
top = AtrousConvolution2D(n_classes, 3, 3, my_init,
atrous_rate=(12, 12), border_mode='same',
name=name, W_regularizer=l2(l2_reg))(top)
top = Deconvolution2D(n_classes, 16, 16, top._keras_shape, bilinear_init,
'linear', border_mode='valid', subsample=(8, 8),
bias=False, name="upscaling_"+str(n_classes),
W_regularizer=l2(l2_reg))(top)
top = CropLayer2D(data, name='score')(top)
top = NdSoftmax()(top)
return top
# Create model of basic segnet
评论列表
文章目录