Example #1
0
class SupervisedManager(object):
    """docstring for SupervisedManager."""
    def __init__(self, experimentname=None):
        # class attributes
        self._i = 0
        self.experimentname = experimentname
        self.model = None
        self.weightpath = None
        self.loss = None
        self.callbacks = []

    def setWeights(self, model, weightpath=None, multi_gpu=False):
        self.model = model
        self.weightpath = weightpath
        if weightpath:
            print("[*] Loading weights...")
            self.model.load_weights(weightpath, by_name=True)
            print("Done\n")

    def setModel(self, modelpath=None):
        self.model = load_model(modelpath)

    def setFreeze(self, freeze):
        self.freeze = freeze
        for layer in self.model.layers:
            layer.trainable = not layer.name in freeze

    def setLoss(self, loss):
        self.loss = loss

    def setOptimizer(self, optimizer):
        self.optimizer = optimizer

    def compile(self):
        self.model.compile(optimizer=self.optimizer, loss=self.loss)

    def setGroundTruth(self, datapath, ratio_valid=0.1):
        # PATH = "../resources"
        self.gt = GroundTruth(path=datapath, split=ratio_valid)

    def setInputGenerator(self, nb_timesteps, batch_size):
        self.batch_size = batch_size
        self.generator = InputGenerator(self.gt,
                                        chunk_size=nb_timesteps,
                                        batch_size=batch_size)

    def setCallbacks(self, callbacks):
        self.callbacks.append(callbacks)

    def train(self, epochs=15, initial_epoch=0):
        history = self.model.fit_generator(
            self.generator.generate(set="train"),
            steps_per_epoch=self.generator.steps_per_epoch_train,
            validation_data=self.generator.generate(set="valid"),
            validation_steps=self.generator.steps_per_epoch_valid,
            epochs=epochs,
            callbacks=self.callbacks,
            max_queue_size=10,
            workers=1,
            verbose=1,
            initial_epoch=initial_epoch,
        )
        return history