param.requires_grad = False for param in model.resnet.parameters(): param.requires_grad = False else: print_log('\n\nno freezing', log=args.logfile) print_log('loading data', log=args.logfile) if args.train: trainer = Trainer(args) if args.val: validator = Validator(args) if args.train: loss_history_train, loss_history_val = [], [] accu_history_train, accu_history_val = [], [] for epoch in range(args.start_epoch, args.end_epoch): loss_train, accu_train = trainer.epoch(model, epoch) if args.val: loss_val, accu_val = validator.epoch(model, epoch) # plot figure loss_history_train.append([loss_train]) loss_history_val.append([loss_val]) accu_history_train.append([accu_train]) accu_history_val.append([accu_val]) plot_loss(loss_history_train, loss_history_val, save_dir=args.save_dir) plot_accu(accu_history_train, accu_history_val, save_dir=args.save_dir) if args.test: tester = Tester(args) tester.epoch(model) if args.val: validator.epoch(model, epoch=0) args.logfile.close()
model = LipRead(options) load_model(model, state_dict, grad_states) # load weights and freeze states last_epoch = states["epoch"] # save current options with open(os.path.join(result_dir, "options_used.toml"), 'w') as f: toml.dump(options, f) if(options["general"]["usecudnnbenchmark"] and options["general"]["usecudnn"]): print("Running cudnn benchmark...") torch.backends.cudnn.benchmark = True if options["training"]["train"]: trainer = Trainer(options) if(options["validation"]["validate"]): validator = Validator(options, result_dir) final_epoch = args.final_epoch if args.final_epoch is not None else options["training"]["epochs"] for epoch in range(last_epoch + 1, final_epoch): loss = trainer.epoch(model, epoch) if options["training"]["train"] else '' accuracy = validator.epoch(model, epoch) if options["validation"]["validate"] else '' csv.add(epoch, accuracy=accuracy, loss=loss) save_checkpoint(result_dir, epoch, model, options=options) # save the final model torch.save(model.state_dict(), os.path.join(result_dir, "epoch{}.pt".format(epoch)))
print_log('creating the model', log=options["general"]["logfile"]) model = LipRead(options) print_log('loading model', log=options["general"]["logfile"]) if options["general"]["loadpretrainedmodel"]: print_log('loading the pretrained model at %s' % options["general"]["pretrainedmodelpath"], log=options["general"]["logfile"]) model.load_state_dict(torch.load( options["general"]["pretrainedmodelpath"])) #Create the model. if options["general"]["usecudnn"]: model = model.cuda( options["general"]["gpuid"]) #Move the model to the GPU. print_log('loading data', log=options["general"]["logfile"]) if options["training"]["train"]: trainer = Trainer(options) if options["validation"]["validate"]: validator = Validator(options) validator.epoch(model, epoch=0) if options["training"]["train"]: for epoch in range(options["training"]["startepoch"], options["training"]["endepoch"]): trainer.epoch(model, epoch) if options["validation"]["validate"]: validator.epoch(model, epoch) # if options["testing"]["test"]: # tester = Tester(options) # tester.epoch(model) options["general"]["logfile"].close()
if (options["general"]["usecudnnbenchmark"] and options["general"]["usecudnn"]): print("Running cudnn benchmark...") torch.backends.cudnn.benchmark = True #Create the model. model = LipRead(options) if (options["general"]["loadpretrainedmodel"]): model.load_state_dict( torch.load(options["general"]["pretrainedmodelpath"], map_location=lambda storage, loc: storage)) #model = torch.load('/home/admin2/grp7/Lipreading-PyTorch/trainedmodel.pt',map_location=lambda storage, loc: storage) #Move the model to the GPU. if (options["general"]["usecudnn"]): model = model.cuda(options["general"]["gpuid"]) #if(options["general"]["usecudnn"]): # model = model.cuda(options["general"]["gpuid"]) #self.model = model.CPU().double() trainer = Trainer(options) validator = Validator(options) for epoch in range(options["training"]["startepoch"], options["training"]["epochs"]): if (options["training"]["train"]): trainer.epoch(model, epoch) if (options["validation"]["validate"]): validator.epoch(model)