Spaces:
Running
Running
import argparse | |
import os | |
import torch | |
def arg_parse(is_train=False): | |
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) | |
## dataloader | |
parser.add_argument('--dataset_name', type=str, default='humanml3d', help='dataset directory') | |
parser.add_argument('--batch_size', default=256, type=int, help='batch size') | |
parser.add_argument('--window_size', type=int, default=64, help='training motion length') | |
parser.add_argument("--gpu_id", type=int, default=0, help='GPU id') | |
## optimization | |
parser.add_argument('--max_epoch', default=50, type=int, help='number of total epochs to run') | |
# parser.add_argument('--total_iter', default=None, type=int, help='number of total iterations to run') | |
parser.add_argument('--warm_up_iter', default=2000, type=int, help='number of total iterations for warmup') | |
parser.add_argument('--lr', default=2e-4, type=float, help='max learning rate') | |
parser.add_argument('--milestones', default=[150000, 250000], nargs="+", type=int, help="learning rate schedule (iterations)") | |
parser.add_argument('--gamma', default=0.1, type=float, help="learning rate decay") | |
parser.add_argument('--weight_decay', default=0.0, type=float, help='weight decay') | |
parser.add_argument("--commit", type=float, default=0.02, help="hyper-parameter for the commitment loss") | |
parser.add_argument('--loss_vel', type=float, default=0.5, help='hyper-parameter for the velocity loss') | |
parser.add_argument('--recons_loss', type=str, default='l1_smooth', help='reconstruction loss') | |
## vqvae arch | |
parser.add_argument("--code_dim", type=int, default=512, help="embedding dimension") | |
parser.add_argument("--nb_code", type=int, default=512, help="nb of embedding") | |
parser.add_argument("--mu", type=float, default=0.99, help="exponential moving average to update the codebook") | |
parser.add_argument("--down_t", type=int, default=2, help="downsampling rate") | |
parser.add_argument("--stride_t", type=int, default=2, help="stride size") | |
parser.add_argument("--width", type=int, default=512, help="width of the network") | |
parser.add_argument("--depth", type=int, default=3, help="num of resblocks for each res") | |
parser.add_argument("--dilation_growth_rate", type=int, default=3, help="dilation growth rate") | |
parser.add_argument("--output_emb_width", type=int, default=512, help="output embedding width") | |
parser.add_argument('--vq_act', type=str, default='relu', choices=['relu', 'silu', 'gelu'], | |
help='dataset directory') | |
parser.add_argument('--vq_norm', type=str, default=None, help='dataset directory') | |
parser.add_argument('--num_quantizers', type=int, default=3, help='num_quantizers') | |
parser.add_argument('--shared_codebook', action="store_true") | |
parser.add_argument('--quantize_dropout_prob', type=float, default=0.2, help='quantize_dropout_prob') | |
# parser.add_argument('--use_vq_prob', type=float, default=0.8, help='quantize_dropout_prob') | |
parser.add_argument('--ext', type=str, default='default', help='reconstruction loss') | |
## other | |
parser.add_argument('--name', type=str, default="test", help='Name of this trial') | |
parser.add_argument('--is_continue', action="store_true", help='Name of this trial') | |
parser.add_argument('--checkpoints_dir', type=str, default='./checkpoints', help='models are saved here') | |
parser.add_argument('--log_every', default=10, type=int, help='iter log frequency') | |
parser.add_argument('--save_latest', default=500, type=int, help='iter save latest model frequency') | |
parser.add_argument('--save_every_e', default=2, type=int, help='save model every n epoch') | |
parser.add_argument('--eval_every_e', default=1, type=int, help='save eval results every n epoch') | |
# parser.add_argument('--early_stop_e', default=5, type=int, help='early stopping epoch') | |
parser.add_argument('--feat_bias', type=float, default=5, help='Layers of GRU') | |
parser.add_argument('--which_epoch', type=str, default="all", help='Name of this trial') | |
## For Res Predictor only | |
parser.add_argument('--vq_name', type=str, default="rvq_nq6_dc512_nc512_noshare_qdp0.2", help='Name of this trial') | |
parser.add_argument('--n_res', type=int, default=2, help='Name of this trial') | |
parser.add_argument('--do_vq_res', action="store_true") | |
parser.add_argument("--seed", default=3407, type=int) | |
opt = parser.parse_args() | |
torch.cuda.set_device(opt.gpu_id) | |
args = vars(opt) | |
print('------------ Options -------------') | |
for k, v in sorted(args.items()): | |
print('%s: %s' % (str(k), str(v))) | |
print('-------------- End ----------------') | |
opt.is_train = is_train | |
if is_train: | |
# save to the disk | |
expr_dir = os.path.join(opt.checkpoints_dir, opt.dataset_name, opt.name) | |
if not os.path.exists(expr_dir): | |
os.makedirs(expr_dir) | |
file_name = os.path.join(expr_dir, 'opt.txt') | |
with open(file_name, 'wt') as opt_file: | |
opt_file.write('------------ Options -------------\n') | |
for k, v in sorted(args.items()): | |
opt_file.write('%s: %s\n' % (str(k), str(v))) | |
opt_file.write('-------------- End ----------------\n') | |
return opt |