示例#1
0
    def fit_multiple(self, data_df, input_shape, batch_size=32, epochs=1):
        # 分割数据集
        train_indexs, val_indexs = get_kfold_train_val_idx(data_df)

        # steps
        steps = len(train_indexs) / batch_size
        val_steps = len(val_indexs) / batch_size

        # generator
        train_gen = image_generator()
        val_gen = image_generator()

        history = self.model.fit_generator(
            generator=self.__generator_multiple_batch_data(
                train_gen, data_df, train_indexs, input_shape, batch_size),
            steps_per_epoch=steps,
            epochs=epochs,
            validation_data=self.__generator_multiple_batch_data(
                val_gen, data_df, val_indexs, input_shape, batch_size),
            validation_steps=val_steps,
            callbacks=self.__register_callbacks())

        self.__save_history(history)

        return history
示例#2
0
    def train(self, x_train, x_val, batch_size=128, lr=LEARN_RATE, epochs=1):

        self.model.compile(optimizer=Adam(lr=lr), loss='mse', metrics=['mse'])
        # @TODO: complete image_generator from path (img paths in csv file)

        # Image generators from csv file and img dir
        train_generator = image_generator(x_train,
                                          batch_size,
                                          self.img_shape,
                                          outputShape=[3],
                                          is_training=True)
        val_generator = image_generator(x_val,
                                        batch_size,
                                        self.img_shape,
                                        outputShape=[3],
                                        is_training=False)

        # Stop when error is below threshold 0.01
        stop_callback = EarlyStopping(monitor='val_loss',
                                      patience=20,
                                      min_delta=0.01)
        # For backup model
        check_callback = ModelCheckpoint('psyncModel.ckpt',
                                         monitor='val_loss',
                                         save_best_only=True)

        # For TensorBoard Visualization
        vis_callback = TensorBoard(log_dir='./logs/%d' % int(time.time()),
                                   histogram_freq=0,
                                   write_graph=True,
                                   write_images=True)
        # Start training
        self.model.fit_generator(
            train_generator,
            callbacks=[stop_callback, check_callback, vis_callback],
            nb_epoch=1,
            steps_per_epoch=len(x_train) % batch_size,
            max_q_size=24,
            validation_data=val_generator,
            nb_val_samples=len(x_val),
            nb_worker=4,
            pickle_safe=True)

        self.model.load_weights('psyncModel.ckpt')
        self.model.save("Test")
示例#3
0
    def fit_disk(self, input_shape, batch_size=32, epochs=1):
        # generator
        train_gen = image_generator()
        val_gen = image_generator()

        train_generator = train_gen.flow_from_directory(
            directory='data/train',
            target_size=(input_shape[0], input_shape[1]),
            batch_size=batch_size)
        val_generator = val_gen.flow_from_directory(
            directory='data/validation',
            target_size=(input_shape[0], input_shape[1]),
            batch_size=batch_size)
        history = self.model.fit_generator(
            generator=train_generator,
            validation_data=val_generator,
            epochs=epochs,
            callbacks=self.__register_callbacks())

        self.__save_history(history)

        return history
示例#4
0
from tensorflow.keras.optimizers import Adam
from data_generator import image_generator
from config import *
import os
import tensorflow as tf
from keras.backend import set_session
from PIL import Image

os.environ["CUDA_VISIBLE_DEVICES"] = "0"

train_step_per_epoch = len(
    os.listdir(image_source_dir + 'train/')) / batch_size + 1
test_step_per_epoch = len(
    os.listdir(image_source_dir + 'test/')) / batch_size + 1
train_image_generator = image_generator(image_source_dir + 'train/',
                                        image_source_dir + 'train/',
                                        batch_size=batch_size,
                                        shuffle=True)
test_image_generator = image_generator(image_source_dir + 'test/',
                                       image_source_dir + 'test/',
                                       batch_size=batch_size,
                                       shuffle=False)

opt1 = Adam(lr=lr)
opt2 = Adam(lr=lr)
discriminator = get_discriminator()
print(discriminator.summary())
generator = get_generator_unet()
generator.compile(optimizer=opt2,
                  loss='mae',
                  metrics=['mean_absolute_percentage_error'])
print(generator.summary())