(nb_classes, inputs=(3, 224, 224))
return (model, batch_size)
Use Keras to implement squeeze net(arXiv 1602.07360).

    Args:
        nb_classes: total number of final categories
        inputs: shape of the input images (channel, cols, rows)
Use Keras to implement squeeze net(arXiv 1602.07360).
Use Keras to implement squeeze net ( arXiv 1602 . 07360 ) .
def squeeze_net(nb_classes, inputs=(3, 224, 224)):
    """Use Keras to implement squeeze net(arXiv 1602.07360).

    Args:
        nb_classes: total number of final categories
        inputs: shape of the input images (channel, cols, rows)

    """
    input_img = Input(shape=inputs)
    conv1 = Convolution2D(
        96, (7, 7), activation='relu', kernel_initializer='glorot_uniform',
        strides=(2, 2), padding='same', name='conv1',
        data_format='channels_first')(input_img)
    maxpool1 = MaxPooling2D(
        pool_size=(3, 3), strides=(2, 2), name='maxpool1',
        data_format='channels_first')(conv1)
    fire2_squeeze = Convolution2D(
        16, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
        padding='same', name='fire2_squeeze',
        data_format='channels_first')(maxpool1)
    fire2_expand1 = Convolution2D(
        64, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
        padding='same', name='fire2_expand1',
        data_format='channels_first')(fire2_squeeze)
    fire2_expand2 = Convolution2D(
        64, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
        padding='same', name='fire2_expand2',
        data_format='channels_first')(fire2_squeeze)
    merge2 = Concatenate(axis=1)([fire2_expand1, fire2_expand2])

    fire3_squeeze = Convolution2D(
        16, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
        padding='same', name='fire3_squeeze',
        data_format='channels_first')(merge2)
    fire3_expand1 = Convolution2D(
        64, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
        padding='same', name='fire3_expand1',
        data_format='channels_first')(fire3_squeeze)
    fire3_expand2 = Convolution2D(
        64, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
        padding='same', name='fire3_expand2',
        data_format='channels_first')(fire3_squeeze)
    merge3 = Concatenate(axis=1)([fire3_expand1, fire3_expand2])

#    fire4_squeeze = Convolution2D(
#        32, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire4_squeeze',
#        data_format='channels_first')(merge3)
#    fire4_expand1 = Convolution2D(
#        128, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire4_expand1',
#        data_format='channels_first')(fire4_squeeze)
#    fire4_expand2 = Convolution2D(
#        128, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire4_expand2',
#        data_format='channels_first')(fire4_squeeze)
#    merge4 = Concatenate(axis=1)([fire4_expand1, fire4_expand2])
#    maxpool4 = MaxPooling2D(
#        pool_size=(3, 3), strides=(2, 2), name='maxpool4',
#        data_format='channels_first')(merge4)

#    fire5_squeeze = Convolution2D(
#        32, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire5_squeeze',
#        data_format='channels_first')(maxpool4)
#    fire5_expand1 = Convolution2D(
#        128, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire5_expand1',
#        data_format='channels_first')(fire5_squeeze)
#    fire5_expand2 = Convolution2D(
#        128, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire5_expand2',
#        data_format='channels_first')(fire5_squeeze)
#    merge5 = Concatenate(axis=1)([fire5_expand1, fire5_expand2])
#
#    fire6_squeeze = Convolution2D(
#        48, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire6_squeeze',
#        data_format='channels_first')(merge5)
#    fire6_expand1 = Convolution2D(
#        192, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire6_expand1',
#        data_format='channels_first')(fire6_squeeze)
#    fire6_expand2 = Convolution2D(
#        192, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire6_expand2',
#        data_format='channels_first')(fire6_squeeze)
#    merge6 = Concatenate(axis=1)([fire6_expand1, fire6_expand2])
#
#    fire7_squeeze = Convolution2D(
#        48, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire7_squeeze',
#        data_format='channels_first')(merge6)
#    fire7_expand1 = Convolution2D(
#        192, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire7_expand1',
#        data_format='channels_first')(fire7_squeeze)
#    fire7_expand2 = Convolution2D(
#        192, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire7_expand2',
#        data_format='channels_first')(fire7_squeeze)
#    merge7 = Concatenate(axis=1)([fire7_expand1, fire7_expand2])

#    fire8_squeeze = Convolution2D(
#        64, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire8_squeeze',
#        data_format='channels_first')(merge7)
#    fire8_expand1 = Convolution2D(
#        256, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire8_expand1',
#        data_format='channels_first')(fire8_squeeze)
#    fire8_expand2 = Convolution2D(
#        256, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire8_expand2',
#        data_format='channels_first')(fire8_squeeze)
#    merge8 = Concatenate(axis=1)([fire8_expand1, fire8_expand2])

#    maxpool8 = MaxPooling2D(
#        pool_size=(3, 3), strides=(2, 2), name='maxpool8',
#        data_format='channels_first')(merge8)
#    fire9_squeeze = Convolution2D(
#        64, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire9_squeeze',
#        data_format='channels_first')(maxpool8)
#    fire9_expand1 = Convolution2D(
#        256, (1, 1), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire9_expand1',
#        data_format='channels_first')(fire9_squeeze)
#    fire9_expand2 = Convolution2D(
#        256, (3, 3), activation='relu', kernel_initializer='glorot_uniform',
#        padding='same', name='fire9_expand2',
#        data_format='channels_first')(fire9_squeeze)
#    merge9 = Concatenate(axis=1)([fire9_expand1, fire9_expand2])

    fire9_dropout = Dropout(0.5, name='fire9_dropout')(merge3)
    conv10 = Convolution2D(
        nb_classes, (1, 1), kernel_initializer='glorot_uniform',
        padding='valid', name='conv10',
        data_format='channels_first')(fire9_dropout)
    # The size should match the output of conv10
    avgpool10 = AveragePooling2D(
        (7, 7), name='avgpool10',
        data_format='channels_first')(conv10)

    flatten = Flatten(name='flatten')(avgpool10)
    softmax = Activation('softmax', name='softmax')(flatten)

    model = Model(inputs=input_img, outputs=softmax)

    adam = keras.optimizers.Adam(lr=0.0002, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
    model.compile(loss='categorical_crossentropy', optimizer=adam, metrics=['accuracy'])

    batch_size = 8

    return (model, batch_size)
def squeeze_net ( nb_classes , inputs = ( 3 , 224 , 224 ) ) : input_img = Input ( shape = inputs ) conv1 = Convolution2D ( 96 , ( 7 , 7 ) , activation = 'relu' , kernel_initializer = 'glorot_uniform' , strides = ( 2 , 2 ) , padding = 'same' , name = 'conv1' , data_format = 'channels_first' ) ( input_img ) maxpool1 = MaxPooling2D ( pool_size = ( 3 , 3 ) , strides = ( 2 , 2 ) , name = 'maxpool1' , data_format = 'channels_first' ) ( conv1 ) fire2_squeeze = Convolution2D ( 16 , ( 1 , 1 ) , activation = 'relu' , kernel_initializer = 'glorot_uniform' , padding = 'same' , name = 'fire2_squeeze' , data_format = 'channels_first' ) ( maxpool1 ) fire2_expand1 = Convolution2D ( 64 , ( 1 , 1 ) , activation = 'relu' , kernel_initializer = 'glorot_uniform' , padding = 'same' , name = 'fire2_expand1' , data_format = 'channels_first' ) ( fire2_squeeze ) fire2_expand2 = Convolution2D ( 64 , ( 3 , 3 ) , activation = 'relu' , kernel_initializer = 'glorot_uniform' , padding = 'same' , name = 'fire2_expand2' , data_format = 'channels_first' ) ( fire2_squeeze ) merge2 = Concatenate ( axis = 1 ) ( [ fire2_expand1 , fire2_expand2 ] ) fire3_squeeze = Convolution2D ( 16 , ( 1 , 1 ) , activation = 'relu' , kernel_initializer = 'glorot_uniform' , padding = 'same' , name = 'fire3_squeeze' , data_format = 'channels_first' ) ( merge2 ) fire3_expand1 = Convolution2D ( 64 , ( 1 , 1 ) , activation = 'relu' , kernel_initializer = 'glorot_uniform' , padding = 'same' , name = 'fire3_expand1' , data_format = 'channels_first' ) ( fire3_squeeze ) fire3_expand2 = Convolution2D ( 64 , ( 3 , 3 ) , activation = 'relu' , kernel_initializer = 'glorot_uniform' , padding = 'same' , name = 'fire3_expand2' , data_format = 'channels_first' ) ( fire3_squeeze ) merge3 = Concatenate ( axis = 1 ) ( [ fire3_expand1 , fire3_expand2 ] ) #    fire4_squeeze = Convolution2D( #        32, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire4_squeeze', #        data_format='channels_first')(merge3) #    fire4_expand1 = Convolution2D( #        128, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire4_expand1', #        data_format='channels_first')(fire4_squeeze) #    fire4_expand2 = Convolution2D( #        128, (3, 3), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire4_expand2', #        data_format='channels_first')(fire4_squeeze) #    merge4 = Concatenate(axis=1)([fire4_expand1, fire4_expand2]) #    maxpool4 = MaxPooling2D( #        pool_size=(3, 3), strides=(2, 2), name='maxpool4', #        data_format='channels_first')(merge4) #    fire5_squeeze = Convolution2D( #        32, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire5_squeeze', #        data_format='channels_first')(maxpool4) #    fire5_expand1 = Convolution2D( #        128, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire5_expand1', #        data_format='channels_first')(fire5_squeeze) #    fire5_expand2 = Convolution2D( #        128, (3, 3), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire5_expand2', #        data_format='channels_first')(fire5_squeeze) #    merge5 = Concatenate(axis=1)([fire5_expand1, fire5_expand2]) # #    fire6_squeeze = Convolution2D( #        48, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire6_squeeze', #        data_format='channels_first')(merge5) #    fire6_expand1 = Convolution2D( #        192, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire6_expand1', #        data_format='channels_first')(fire6_squeeze) #    fire6_expand2 = Convolution2D( #        192, (3, 3), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire6_expand2', #        data_format='channels_first')(fire6_squeeze) #    merge6 = Concatenate(axis=1)([fire6_expand1, fire6_expand2]) # #    fire7_squeeze = Convolution2D( #        48, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire7_squeeze', #        data_format='channels_first')(merge6) #    fire7_expand1 = Convolution2D( #        192, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire7_expand1', #        data_format='channels_first')(fire7_squeeze) #    fire7_expand2 = Convolution2D( #        192, (3, 3), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire7_expand2', #        data_format='channels_first')(fire7_squeeze) #    merge7 = Concatenate(axis=1)([fire7_expand1, fire7_expand2]) #    fire8_squeeze = Convolution2D( #        64, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire8_squeeze', #        data_format='channels_first')(merge7) #    fire8_expand1 = Convolution2D( #        256, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire8_expand1', #        data_format='channels_first')(fire8_squeeze) #    fire8_expand2 = Convolution2D( #        256, (3, 3), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire8_expand2', #        data_format='channels_first')(fire8_squeeze) #    merge8 = Concatenate(axis=1)([fire8_expand1, fire8_expand2]) #    maxpool8 = MaxPooling2D( #        pool_size=(3, 3), strides=(2, 2), name='maxpool8', #        data_format='channels_first')(merge8) #    fire9_squeeze = Convolution2D( #        64, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire9_squeeze', #        data_format='channels_first')(maxpool8) #    fire9_expand1 = Convolution2D( #        256, (1, 1), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire9_expand1', #        data_format='channels_first')(fire9_squeeze) #    fire9_expand2 = Convolution2D( #        256, (3, 3), activation='relu', kernel_initializer='glorot_uniform', #        padding='same', name='fire9_expand2', #        data_format='channels_first')(fire9_squeeze) #    merge9 = Concatenate(axis=1)([fire9_expand1, fire9_expand2]) fire9_dropout = Dropout ( 0.5 , name = 'fire9_dropout' ) ( merge3 ) conv10 = Convolution2D ( nb_classes , ( 1 , 1 ) , kernel_initializer = 'glorot_uniform' , padding = 'valid' , name = 'conv10' , data_format = 'channels_first' ) ( fire9_dropout ) # The size should match the output of conv10 avgpool10 = AveragePooling2D ( ( 7 , 7 ) , name = 'avgpool10' , data_format = 'channels_first' ) ( conv10 ) flatten = Flatten ( name = 'flatten' ) ( avgpool10 ) softmax = Activation ( 'softmax' , name = 'softmax' ) ( flatten ) model = Model ( inputs = input_img , outputs = softmax ) adam = keras . optimizers . Adam ( lr = 0.0002 , beta_1 = 0.9 , beta_2 = 0.999 , epsilon = 1e-08 , decay = 0.0 ) model . compile ( loss = 'categorical_crossentropy' , optimizer = adam , metrics = [ 'accuracy' ] ) batch_size = 8 return ( model , batch_size )