This repo provides the code to replicate the experiments in the paper
Xinyun Chen, Dawn Song, Yuandong Tian, Latent Execution for Neural Program Synthesis, in NeurIPS 2021.
- To run our full latent program synthesizer (LaSynth):
python run.py --latent_execution --operation_predictor --decoder_self_attention
- To run our program synthesizer without partial program execution (NoPartialExecutor):
python run.py --latent_execution --operation_predictor --decoder_self_attention --no_partial_execution
- To run the RobustFill model:
python run.py
- To run the Property Signatures model:
python run.py --use_properties
In the following we list some important arguments for experiments:
--data_folder
: path to the dataset.--model_dir
: path to the directory that stores the models.--load_model
: path to the pretrained model (optional).--eval
: adding this command will enable the evaluation mode; otherwise, the model will be trained by default.--num_epochs
: number of training epochs. The default value is10
, but usually 1 epoch is enough for a decent performance.--log_interval LOG_INTERVAL
: saving checkpoints everyLOG_INTERVAL
steps.--latent_execution
: Enable the model to learn the latent executor module.--no_partial_execution
: Enable the model to learn the latent executor module, but this module is not used by the program synthesizer, and only adds to the training loss.--operation_predictor
: Enable the model to learn the operation predictor module.--use_properties
: Run the Property Signatures baseline.--iterative_retraining_prog_gen
: Decode training programs for iterative retraining.
More details can be found in arguments.py
.
If you use the code in this repo, please cite the following paper:
@inproceedings{chen2021latent,
title={Latent Execution for Neural Program Synthesis},
author={Chen, Xinyun and Song, Dawn and Tian, Yuandong},
booktitle={Advances in Neural Information Processing Systems},
year={2021}
}
This repo is CC-BY-NC licensed, as found in the LICENSE file.
[1] Devlin et al., RobustFill: Neural Program Learning under Noisy I/O, ICML 2017.
[2] Odena and Sutton, Learning to Represent Programs with Property Signatures, ICLR 2020.
[3] Chen et al., Execution-Guided Neural Program Synthesis, ICLR 2019.