diff --git a/exps/GeMOSA/basic-same.py b/exps/GeMOSA/basic-same.py index cb342fd..0660385 100644 --- a/exps/GeMOSA/basic-same.py +++ b/exps/GeMOSA/basic-same.py @@ -1,8 +1,9 @@ ##################################################### # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2021.04 # ##################################################### -# python exps/GeMOSA/basic-same.py --env_version v1 --hidden_dim 16 --epochs 500 --init_lr 0.1 -# python exps/GeMOSA/basic-same.py --env_version v2 --hidden_dim 16 --epochs 1000 --init_lr 0.05 +# python exps/GeMOSA/basic-same.py --env_version v1 --hidden_dim 16 --epochs 500 --init_lr 0.1 --device cuda +# python exps/GeMOSA/basic-same.py --env_version v2 --hidden_dim 16 --epochs 500 --init_lr 0.1 --device cuda +# python exps/GeMOSA/basic-same.py --env_version v3 --hidden_dim 32 --epochs 1000 --init_lr 0.05 --device cuda ##################################################### import sys, time, copy, torch, random, argparse from tqdm import tqdm @@ -31,8 +32,6 @@ from xautodl.procedures.metric_utils import SaveMetric, MSEMetric, ComposeMetric from xautodl.datasets.synthetic_core import get_synthetic_env from xautodl.models.xcore import get_model -from lfna_utils import lfna_setup - def subsample(historical_x, historical_y, maxn=10000): total = historical_x.size(0) @@ -44,9 +43,17 @@ def subsample(historical_x, historical_y, maxn=10000): def main(args): - logger, model_kwargs = lfna_setup(args) - + prepare_seed(args.rand_seed) + logger = prepare_logger(args) env = get_synthetic_env(mode=None, version=args.env_version) + model_kwargs = dict( + config=dict(model_type="norm_mlp"), + input_dim=env.meta_info["input_dim"], + output_dim=env.meta_info["output_dim"], + hidden_dims=[args.hidden_dim] * 2, + act_cls="relu", + norm_cls="layer_norm_1d", + ) logger.log("The total enviornment: {:}".format(env)) w_containers = dict() @@ -149,7 +156,7 @@ if __name__ == "__main__": parser.add_argument( "--save_dir", type=str, - default="./outputs/lfna-synthetic/use-same-timestamp", + default="./outputs/GeMOSA-synthetic/use-same-timestamp", help="The checkpoint directory.", ) parser.add_argument( diff --git a/exps/GeMOSA/main.py b/exps/GeMOSA/main.py index 91113fa..17d5260 100644 --- a/exps/GeMOSA/main.py +++ b/exps/GeMOSA/main.py @@ -2,8 +2,9 @@ # Learning to Generate Model One Step Ahead # ##################################################### # python exps/GeMOSA/main.py --env_version v1 --workers 0 -# python exps/GeMOSA/main.py --env_version v1 --device cuda --lr 0.002 --seq_length 8 --meta_batch 256 -# python exps/GeMOSA/main.py --env_version v1 --device cuda --lr 0.002 --seq_length 24 --time_dim 32 --meta_batch 128 +# python exps/GeMOSA/main.py --env_version v1 --device cuda --lr 0.002 --hidden_dim 16 --meta_batch 256 +# python exps/GeMOSA/main.py --env_version v2 --device cuda --lr 0.002 --hidden_dim 16 --meta_batch 256 +# python exps/GeMOSA/main.py --env_version v3 --device cuda --lr 0.002 --hidden_dim 32 --meta_batch 256 ##################################################### import sys, time, copy, torch, random, argparse from tqdm import tqdm @@ -269,7 +270,7 @@ if __name__ == "__main__": parser.add_argument( "--save_dir", type=str, - default="./outputs/lfna-synthetic/lfna-battle", + default="./outputs/GeMOSA-synthetic/GeMOSA", help="The checkpoint directory.", ) parser.add_argument( diff --git a/xautodl/datasets/synthetic_core.py b/xautodl/datasets/synthetic_core.py index 1e43672..8caf860 100644 --- a/xautodl/datasets/synthetic_core.py +++ b/xautodl/datasets/synthetic_core.py @@ -21,7 +21,7 @@ def get_synthetic_env(total_timestamp=1600, num_per_task=1000, mode=None, versio mean_generator = ConstantFunc(0) std_generator = ConstantFunc(1) data_generator = GaussianDGenerator( - [mean_generator], [[std_generator]], (-2, 2) + [mean_generator], [[std_generator]], (-3, 3) ) time_generator = TimeStamp( min_timestamp=0, max_timestamp=max_time, num=total_timestamp, mode=mode @@ -40,7 +40,7 @@ def get_synthetic_env(total_timestamp=1600, num_per_task=1000, mode=None, versio mean_generator = ConstantFunc(0) std_generator = ConstantFunc(1) data_generator = GaussianDGenerator( - [mean_generator], [[std_generator]], (-2, 2) + [mean_generator], [[std_generator]], (-3, 3) ) time_generator = TimeStamp( min_timestamp=0, max_timestamp=max_time, num=total_timestamp, mode=mode @@ -60,7 +60,7 @@ def get_synthetic_env(total_timestamp=1600, num_per_task=1000, mode=None, versio mean_generator = SinFunc(params={0: 1, 1: 1, 2: 0}) # sin(t) std_generator = CosFunc(params={0: 0.5, 1: 1, 2: 1}) # 0.5 cos(t) + 1 data_generator = GaussianDGenerator( - [mean_generator], [[std_generator]], (-2, 2) + [mean_generator], [[std_generator]], (-3, 3) ) time_generator = TimeStamp( min_timestamp=0, max_timestamp=max_time, num=total_timestamp, mode=mode @@ -77,6 +77,9 @@ def get_synthetic_env(total_timestamp=1600, num_per_task=1000, mode=None, versio ) dynamic_env.set_regression() elif version.lower() == "v4": + dynamic_env = SyntheticDEnv( + data_generator, oracle_map, time_generator, num_per_task, noise=0.05 + ) dynamic_env.set_classification(2) else: raise ValueError("Unknown version: {:}".format(version)) diff --git a/xautodl/datasets/synthetic_env.py b/xautodl/datasets/synthetic_env.py index c4839e3..6ba8c24 100644 --- a/xautodl/datasets/synthetic_env.py +++ b/xautodl/datasets/synthetic_env.py @@ -46,15 +46,19 @@ class SyntheticDEnv(data.Dataset): def set_regression(self): self._meta_info["task"] = "regression" self._meta_info["input_dim"] = self._data_generator.ndim - self._meta_info["output_shape"] = self._oracle_map.output_shape(self._data_generator.output_shape()) - self._meta_info['output_dim'] = int(np.prod(self._meta_info["output_shape"])) + self._meta_info["output_shape"] = self._oracle_map.output_shape( + self._data_generator.output_shape() + ) + self._meta_info["output_dim"] = int(np.prod(self._meta_info["output_shape"])) def set_classification(self, num_classes): self._meta_info["task"] = "classification" self._meta_info["input_dim"] = self._data_generator.ndim self._meta_info["num_classes"] = int(num_classes) - self._meta_info["output_shape"] = self._oracle_map.output_shape(self._data_generator.output_shape()) - self._meta_info['output_dim'] = int(np.prod(self._meta_info["output_shape"])) + self._meta_info["output_shape"] = self._oracle_map.output_shape( + self._data_generator.output_shape() + ) + self._meta_info["output_dim"] = int(np.prod(self._meta_info["output_shape"])) @property def oracle_map(self):