SATO / utils /utils_model.py
chencws's picture
Upload 36 files
6cf83ba verified
Raw
History Blame Contribute Delete
2.13 kB
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