def defineNetwork( self ): input_tensor = Input( shape = ( self.dim, self.dim, 2 * self.flowSteps ) ) model = BaseModel( input_tensor = input_tensor, weights = None, classes = self.classes ) #initial_learning_rate = 1e-2 #lr_schedule = ExponentialDecay( initial_learning_rate, # decay_steps = 2000, # decay_rate = 0.96, # staircase = True ) optimizer = SGD( lr=1e-2, momentum = 0.9, nesterov=True, decay=1e-4 ) model.compile( loss = 'categorical_crossentropy', optimizer = optimizer, metrics = [ 'acc' ] ) return model
from keras.layers import Conv2D, MaxPooling2D, GlobalAveragePooling2D,BatchNormalization from keras.layers import Dropout, Flatten, Dense from keras.models import Sequential from keras import regularizers InceptionV3 = Sequential() InceptionV3.add(GlobalAveragePooling2D(input_shape= features_train.shape[1:])) InceptionV3.add(Dense(128, activation = "relu")) InceptionV3.add(Dense(37, activation = "softmax")) InceptionV3.summary() from keras.callbacks import ModelCheckpoint InceptionV3.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) checkpointer = ModelCheckpoint(filepath='weights.best.InceptionV3.hdf5', verbose=1, save_best_only=True, monitor='val_acc') InceptionV3.fit(features_train, target_train, validation_data=(features_valid, target_valid), epochs=50, batch_size=10, callbacks=[checkpointer], verbose=1) InceptionV3.load_weights('weights.best.InceptionV3.hdf5') plant_predictions = [np.argmax(InceptionV3.predict(np.expand_dims(tensor, axis=0))) for tensor in features_test] # report test accuracy test_accuracy = 100*np.sum(np.array(plant_predictions)==np.argmax(target_test, axis=1))/len(plant_predictions) print('Test accuracy: %.4f%%' % test_accuracy)