Spaces:
No application file
No application file
import numpy as np | |
import torch | |
import torch.optim as optim | |
import logging | |
import os | |
import sys | |
def getCi(accLog): | |
mean = np.mean(accLog) | |
std = np.std(accLog) | |
ci95 = 1.96*std/np.sqrt(len(accLog)) | |
return mean, ci95 | |
def get_logger(out_dir): | |
logger = logging.getLogger('Exp') | |
logger.setLevel(logging.INFO) | |
formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s") | |
file_path = os.path.join(out_dir, "run.log") | |
file_hdlr = logging.FileHandler(file_path) | |
file_hdlr.setFormatter(formatter) | |
strm_hdlr = logging.StreamHandler(sys.stdout) | |
strm_hdlr.setFormatter(formatter) | |
logger.addHandler(file_hdlr) | |
logger.addHandler(strm_hdlr) | |
return logger | |
## Optimizer | |
def initial_optim(decay_option, lr, weight_decay, net, optimizer, eps=1e-3) : | |
if optimizer == 'adamw' : | |
optimizer_adam_family = optim.AdamW | |
elif optimizer == 'adam' : | |
optimizer_adam_family = optim.Adam | |
if decay_option == 'all': | |
#optimizer = optimizer_adam_family(net.parameters(), lr=lr, betas=(0.9, 0.999), weight_decay=weight_decay) | |
optimizer = optimizer_adam_family(net.parameters(), lr=lr, betas=(0.5, 0.9), weight_decay=weight_decay, eps=eps) | |
elif decay_option == 'noVQ': | |
all_params = set(net.parameters()) | |
no_decay = set([net.vq_layer]) | |
decay = all_params - no_decay | |
optimizer = optimizer_adam_family([ | |
{'params': list(no_decay), 'weight_decay': 0}, | |
{'params': list(decay), 'weight_decay' : weight_decay}], lr=lr) | |
return optimizer | |
def get_motion_with_trans(motion, velocity) : | |
''' | |
motion : torch.tensor, shape (batch_size, T, 72), with the global translation = 0 | |
velocity : torch.tensor, shape (batch_size, T, 3), contain the information of velocity = 0 | |
''' | |
trans = torch.cumsum(velocity, dim=1) | |
trans = trans - trans[:, :1] ## the first root is initialized at 0 (just for visualization) | |
trans = trans.repeat((1, 1, 21)) | |
motion_with_trans = motion + trans | |
return motion_with_trans | |