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