The structure of the project is illustrated as follows:
- Evolutions: Evolutions control the training of all generations.
- Models: take the inputs and produce losses for updating params.
- Encoders: sub-module of models to encode different inputs.
- Decoders: sub-module of models to generate messages based on the representation from Encoders.
- Speakers: sub-module of models to encode inputs and generate messages.
- Listeners: sub-module of models to finish the game.
- Losses: sub-module of models to gain loss for training models.
- Pipelines: a pipeline model of all above modules.
- DataIterators: provide data to models under evolution.
- Prepocesses: sub-module of DataIterator to provide preprocessing functions.
- Voc: sub-module of DataIterator to provide dictionaries.
- Utils: Other functions to support evolutions.