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
Exemplo n.º 2
0
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)