class Xceptionmodel(CNNmodel): def __init__(self, data_directory, batch_size=16): self.cnn = CNNmodel(data_directory) self.height, self.width, self.depth = (48, 48, 1) self.batch_size = batch_size self.xception = Xception(include_top=True, weights=None, input_shape=(self.height, self.width, self.depth), classes=4) def summary(self): print(self.xception.summary()) def train(self, optimizer='adam', loss='categorical_crossentropy', epoch=20): self.xception.compile(loss="categorical_crossentropy", optimizer=optimizer, metrics=["accuracy"]) print("[INFO] training network...") es = EarlyStopping(monitor='val_acc', mode='max', verbose=1, patience=4) self.history = self.xception.fit(self.cnn.train_data, epochs=epoch, validation_data=self.cnn.val_data, verbose=1, callbacks=[es]) print("[INFO] Saving model...") pickle.dump(self.xception, open('xception.pkl', 'wb')) print("[INFO] Done...")
from keras.utils import to_categorical from keras import losses,metrics from keras.callbacks import ModelCheckpoint import Dataset_mobile import os if __name__ == '__main__': save_dir = os.path.join(os.getcwd(), 'saved_models') model_name = 'xceptionMobile_wood_model.h5' model_path = os.path.join(save_dir, model_name) x_train, y_train, x_test, y_test, dictionary = Dataset_mobile.read_data() x_train_resized = Dataset_mobile.resize_imgs(x_train) x_test_resized = Dataset_mobile.resize_imgs(x_test) y_train = to_categorical(y_train, num_classes=2) y_test = to_categorical(y_test, num_classes=2) model = Xception(include_top=True, weights=None, classes=2) opt = Adam(lr=5e-6) model.compile(optimizer=opt, loss=losses.categorical_crossentropy, metrics=[metrics.categorical_accuracy]) model.fit(x_train_resized,y_train,epochs=20,batch_size=6) model.save(model_path) score1 = model.evaluate(x_train_resized, y_train, batch_size=6) score2 = model.evaluate(x_test_resized, y_test, batch_size=6) print(score1) print(score2)
import datetime import numpy as np num_samples = 1000 height = 224 width = 224 num_classes = 1000 start = datetime.datetime.now() with tf.device('/cpu:0'): model = Xception(weights=None, input_shape=(height, width, 3), classes=num_classes) model.compile(loss='categorical_crossentropy', optimizer='rmsprop') x = np.random.random((num_samples, height, width, 3)) y = np.random.random((num_samples, num_classes)) model.fit(x, y, epochs=3, batch_size=16) model.save('my_model.h5') end = datetime.datetime.now() time_delta = end - start print('GPU 처리시간:', time_delta) start = datetime.datetime.now() with tf.device('/cpu:0'): model = Xception(weights=None, input_shape=(height, width, 3), classes=num_classes) model.compile(loss='categorical_crossentropy', optimizer='rmsprop') x = np.random.random((num_samples, height, width, 3)) y = np.random.random((num_samples, num_classes)) model.fit(x, y, epochs=3, batch_size=16)
save_dir = os.path.join(os.getcwd(), 'saved_models') model_name = 'xception_wood_model.hdf5' weight_name = 'xception_wood_weight.hdf5' model_path = os.path.join(save_dir, model_name) weight_path = os.path.join(save_dir, weight_name) x_train, y_train, x_test, y_test = image_crop.read_data() x_train_resized = image_crop.resize_imgs(x_train) y = to_categorical(y_train, num_classes=34) model = Xception(include_top=True, weights=None, classes=34) checkpoint = ModelCheckpoint(filepath=os.path.join( save_dir, 'weight.{epoch:02d}-{loss:.2f}.hdf5'), verbose=1) opt = RMSprop(lr=2e-5) model.compile(optimizer=opt, loss=losses.categorical_crossentropy, metrics=[metrics.categorical_accuracy]) model.fit(x_train_resized, y, epochs=10, batch_size=36, callbacks=[checkpoint]) model.save(model_path) model.save_weights(weight_path)