def get_squeezenet(nb_classes, dim_ordering='tf', include_top=True):
if dim_ordering is 'th':
input_img = Input(shape=(3, 227, 227))
elif dim_ordering is 'tf':
input_img = Input(shape=(227, 227, 3))
else:
raise NotImplementedError("Theano and Tensorflow are only available")
x = Convolution2D(64, 3, 3, subsample=(2, 2), border_mode='valid', name='conv1')(input_img)
x = Activation('relu', name='relu_conv1')(x)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), name='pool1')(x)
x = fire_module(x, fire_id=2, squeeze=16, expand=64, dim_ordering=dim_ordering)
x = fire_module(x, fire_id=3, squeeze=16, expand=64, dim_ordering=dim_ordering)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), name='pool3')(x)
x = fire_module(x, fire_id=4, squeeze=32, expand=128, dim_ordering=dim_ordering)
x = fire_module(x, fire_id=5, squeeze=32, expand=128, dim_ordering=dim_ordering)
x = MaxPooling2D(pool_size=(3, 3), strides=(2, 2), name='pool5')(x)
x = fire_module(x, fire_id=6, squeeze=48, expand=192, dim_ordering=dim_ordering)
x = fire_module(x, fire_id=7, squeeze=48, expand=192, dim_ordering=dim_ordering)
x = fire_module(x, fire_id=8, squeeze=64, expand=256, dim_ordering=dim_ordering)
x = fire_module(x, fire_id=9, squeeze=64, expand=256, dim_ordering=dim_ordering)
x = Dropout(0.5, name='drop9')(x)
x = Convolution2D(nb_classes, 1, 1, border_mode='valid', name='conv10')(x)
x = Activation('relu', name='relu_conv10')(x)
if include_top:
x = GlobalAveragePooling2D()(x)
out = Activation('softmax', name='loss')(x)
else:
out = x
model = Model(input=input_img, output=[out])
return model
评论列表
文章目录