The highest level structure contains:
ibc/
data/
<-- tools to generate datasets, and feed data for trainingenvironments/
<-- a collection of environmentsnetworks/
<-- TensorFlow models for state inputs and/or vision inputs- ...
The above directories are algorithm-agnostic, and the implementation of specific algorithms are mostly in:
ibc/ibc/
agents/
<-- holds the majority of the BC algorithm details, including:ibc_agent.py
<-- class for IBC trainingibc_policy.py
<-- class for IBC inferencemcmc.py
<-- implements optimizers used for IBC training/inference- similar files for MSE and MDN policies.
losses/
<-- loss functionsebm_loss.py
<-- several different EBM-style loss functions.gradient_loss.py
<-- gradient penalty for Langevin
configs/
<-- configurations for different trainings (including hyperparams)- ... other various utils for making training and evaluation happen.
A couple more notes for you the reader:
- The codebase was optimized for large-scale experimentation and trying out many different ideas. With hindsight it could be much simpler to implement a simplified version of only the core essentials.
- The codebase heavily uses TF Agents, so we don't have to re-invent various wheels, and it is recommended you take a look at the Guide to get a sense: https://www.tensorflow.org/agents/overview