- config/: hydra hyperparameter configuration files. All hyperparameters can be directly modified in the CLI using hydra's override syntax
- datasets/: dataset data files
- src/: main codebase; implements the components necessary to semi-supervised training, such as :
- data/: data loaders
- models/: trainable model classes
- pretrained/: pre-trained teacher models
- train/: training components:
- bias_estimate_schedule.py: curriculum learning schedules; specifies how teacher bias estimates are introduced in semi-supervised losses
- criterion.py: loss functions and metrics
- loss.py: Doubly-Robust (DR) and Context-aware DR (CDR) semi-supervised training losses
- tuning.py: tuned DR (TDR) and CDR optimal tuning parameters computation
- study/: codebase containing the experiments presented in the paper
- protocols/: grid-search protocols:
- commands/: list of commands per protocol
- protocol_confs/: user-specified protocol configurations
- slurm/: execute protocol commands via Slurm batch scripts (requires Slurm install)
- train_model_cdr.py: TDR/CDR training
- train_model_dr.py: DR training
- train_model_supervised_erm.py: Supervised Empirical Risk Minimization (ERM) training
- train_model_pseudo_erm.py: Pseudo-ERM (P-ERM) training
- plots_toy_example.py: create
toy-example
experiment plots (see Reproduce Experiments) - plots_beamforming.py: create
beamforming
experiment plots (see Reproduce Experiments) - create_protocol.py: create custom grid-search protocols (see (see Extend experiments)
- protocols/: grid-search protocols:
- logs/: experimental data is stored in this folder by default. Can be changed by setting the keyword argument
logs_dir=<DIR>
to a custom directory<DIR>
when executing experiments - scripts/generate_beamforming_dataset.py: script used to generate the beamforming dataset from the ray-tracing data in the "Environment Aware Communications" repository. The ray-tracing data
raw.zip
file must be unzipped before executing this script.
- Download and install miniconda
- Install conda environment by running the command:
conda env create -f ./environment.yaml
- Source the environment by running:
conda activate cdr
- Execute
toy-example
protocols directly as:
bash ./study/protocols/commands/toy_example_supervised_erm.sh
bash ./study/protocols/commands/toy_example_pseudo_erm.sh
bash ./study/protocols/commands/toy_example_dr.sh
bash ./study/protocols/commands/toy_example_cdr.sh
- OR send protocols commands to Slurm cluster via:
sbatch ./study/protocols/slurm/toy_example_supervised.sh
sbatch ./study/protocols/slurm/toy_example_pseudo_erm.sh
sbatch ./study/protocols/slurm/toy_example_dr.sh
sbatch ./study/protocols/slurm/toy_example_cdr.sh
- Generate
toy-example
plots in./logs/figures
as:
python ./study/plots_toy_example.py +experiment=toy_example logs_subdir=toy_example
- Execute
beamforming
protocols directly as:
bash ./study/protocols/commands/beamforming_supervised_erm.sh
bash ./study/protocols/commands/beamforming_pseudo_erm.sh
bash ./study/protocols/commands/beamforming_dr.sh
bash ./study/protocols/commands/beamforming_tdr.sh
bash ./study/protocols/commands/beamforming_cdr.sh
- OR send protocols commands to Slurm cluster via:
sbatch ./study/protocols/slurm/toy_example_supervised.sh
sbatch ./study/protocols/slurm/toy_example_pseudo_erm.sh
sbatch ./study/protocols/slurm/toy_example_dr.sh
sbatch ./study/protocols/slurm/toy_example_tdr.sh
sbatch ./study/protocols/slurm/toy_example_cdr.sh
- Generate
beamforming
plots in./logs/figures
as:
python ./study/plots_beamforming.py +experiment=beamforming logs_subdir=beamforming