def CreateResNetModel(self, input_shape, classes): X_input = Input(name='the_input', shape=input_shape) x = Conv2D(kernel_size=3, filters=16, strides=1, padding='same', kernel_regularizer=regularizers.l2(0.01))(X_input) x = BatchNormalization()(x) x = Activation(relu)(x) x = block(16)(x) x = block(16)(x) x = BatchNormalization()(x) x = Activation(relu)(x) # 28x28x48 -> 1x48 x = GlobalAveragePooling2D()(x) # dropout for more robust learning x = Dropout(0.2)(x) last = Dense(units=classes, activation='softmax', kernel_regularizer=regularizers.l2(0.01))(x) model = Model(inputs=X_input, outputs=last) optimizer = optimizers.Adadelta() model.compile(optimizer=optimizer, loss=[focal_loss(alpha=0.25, gamma=2)]) print('Original resnet neural network established. ') return model
def CreateCustomizedResNetModel(self, input_shape, classes): X_input = Input(name='the_input', shape=input_shape) level_h1 = block(32)(X_input) level_m1 = MaxPooling2D(pool_size=2, strides=None, padding="valid")(level_h1) # 池化层 level_h2 = block(64)(level_m1) level_m2 = MaxPooling2D(pool_size=2, strides=None, padding="valid")(level_h2) # 池化层 level_h3 = block(128)(level_m2) level_m3 = MaxPooling2D(pool_size=2, strides=None, padding="valid")(level_h3) # 池化层 # level_h4 = block(64)(level_m3) # level_m4 = MaxPooling2D(pool_size=2, strides=None, padding="valid")(level_h4) # 池化层 flayer = Flatten()(level_m3) fc = Dense(classes, use_bias=True, kernel_initializer='he_normal')(flayer) # 全连接层 y_pred = Activation('softmax', name='Activation0')(fc) model = Model(inputs=X_input, outputs=y_pred) optimizer = optimizers.Adadelta() # model.compile(optimizer=optimizer, loss='binary_crossentropy')# [focal_loss]) model.compile(optimizer=optimizer, loss=[focal_loss(alpha=0.25, gamma=2)]) print('Customized resnet model estabished.') self.modelname = 'residual' return model
def __CreateCustomizedResNetModel__(self): level_h1 = block(32)(self.model_input) level_m1 = MaxPooling2D(pool_size=2, strides=None, padding="valid")(level_h1) # 池化层 level_h2 = block(64)(level_m1) level_m2 = MaxPooling2D(pool_size=2, strides=None, padding="valid")(level_h2) # 池化层 level_h3 = block(128)(level_m2) level_m3 = MaxPooling2D(pool_size=2, strides=None, padding="valid")(level_h3) # 池化层 flayer = GlobalAveragePooling2D()(level_m3) fc = Dense(self.classes, use_bias=True, kernel_initializer='he_normal')(flayer) # 全连接层 y_pred = Activation('softmax')(fc) model = Model(inputs=self.model_input, outputs=y_pred) submodel = Model(inputs=self.model_input, outputs=flayer) print('Customized resnet model estabished.') modelname = 'residual' return model, modelname, submodel