def load_model_path(): global model_path, model_config, device, learning_rate, reset_optimizer try: param = torch.load(model_path) if 'model_config' in param and param['model_config'] != model_config: model_config = param['model_config'] print('用model的設置,不要用:') print(utils.dict2params('model_config')) model_state = param['model_state'] optimizer_state = param['model_optimizer_state'] print('參數來自:', model_path) param_loaded = True except: print('無先前參數') param_loaded = False model = PerformanceRNN(**model_config).to(device) optimizer = optim.Adam(model.parameters(), lr=learning_rate) if param_loaded: model.load_state_dict(model_state) if not reset_optimizer: optimizer.load_state_dict(optimizer_state) return model, optimizer
def load_session(): global sess_path, model_config, device, learning_rate, reset_optimizer try: sess = torch.load(sess_path) if 'model_config' in sess and sess['model_config'] != model_config: model_config = sess['model_config'] print('Use session config instead:') print(utils.dict2params(model_config)) model_state = sess['model_state'] optimizer_state = sess['model_optimizer_state'] print('Session is loaded from', sess_path) sess_loaded = True except: print('New session') sess_loaded = False model = PerformanceRNN(**model_config).to(device) optimizer = optim.Adam(model.parameters(), lr=learning_rate) if sess_loaded: model.load_state_dict(model_state) if not reset_optimizer: optimizer.load_state_dict(optimizer_state) return model, optimizer
event_dim = EventSeq.dim() control_dim = ControlSeq.dim() model_config = config.model model_params = utils.params2dict(options.model_params) model_config.update(model_params) device = config.device print('-' * 70) print('Session path:', sess_path) print('Dataset path:', data_path) print('Saving interval:', saving_interval) print('-' * 70) print('Hyperparameters:', utils.dict2params(model_config)) print('Learning rate:', learning_rate) print('Batch size:', batch_size) print('Window size:', window_size) print('Stride size:', stride_size) print('Control ratio:', control_ratio) print('Teacher forcing ratio:', teacher_forcing_ratio) print('Random transposition:', use_transposition) print('Reset optimizer:', reset_optimizer) print('Enabling logging:', enable_logging) print('Device:', device) print('-' * 70) # ======================================================================== # Load session and dataset # ========================================================================