def training(): train_generator, validation_generator = prepare_data() # train_generator, validation_generator, test_generator = prepare_data() resnet50_network = ResNet50(include_top=False, weights='imagenet', input_shape=(IMAGE_SIZE, IMAGE_SIZE, 3)) for layer in resnet50_network.layers[:-3]: layer.trainable = False model = Sequential() model.add(resnet50_network) model.add(AveragePooling2D((7, 7), name='avg_pool')) model.add(Flatten()) model.add( Dense(train_generator.class_indices.items().__len__(), activation='softmax')) model.summary() model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.001), metrics=['accuracy']) early_stopping = EarlyStopping(patience=10) checkpointer = ModelCheckpoint(filepath='car_resNet50_best.h5', verbose=0, save_best_only=True) csv_logger = CSVLogger('ResNet50_training_log.csv', append=True, separator=';') history = model.fit_generator( train_generator, steps_per_epoch=train_generator.samples / train_generator.batch_size, epochs=EPOCHS, callbacks=[early_stopping, checkpointer, csv_logger], validation_data=validation_generator, validation_steps=validation_generator.samples / validation_generator.batch_size) # evaluate_scores = model.evaluate_generator(generator=test_generator) model.save('car_resNet50_final.h5') model.sample_weights('resNet50_weights') show_history(history)
model.add(Dropout(0.5)) model.add(Dense(10, activation='softmax')) # output layer # Compile the model model.compile( optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'] ) # Print a summery of the model # model.summary() # Training the model model.fit( x=x_train, y=y_train, batch_size=32, epochs=30, validation_data=(x_test, y_test), shuffle=True ) # Save neural network structure model_structure = model.to_json() file = Path('model_structure.json') file.write_text(model_structure) # Save neural network's trained weight model.sample_weights('model_weights.h5')