This repository includes:
- A PyTorch implementation of Turbo encoding and decoding.
- TINYTURBO - A neural Turbo decoder. Code for our paper "TinyTurbo: Efficient Turbo decoders on Edge"
All Python libraries required can be installed using:
pip install -r requirements.txt
Models are saved (with frequency specified by args.save_every) at Results/args.id/models/weights_{step_number}.pt
python main.py --batch_size 5000 --block_len 40 --target gt --loss_type BCE --init_type ones --num_steps 5000 --tinyturbo_iters 3 --turbo_iters 6 --train_snr -1 --lr 0.0008 --noise_type awgn --gpu 0 --id *string_of_your_choice*
python main.py --batch_size 1000 --block_len 40 --target gt --loss_type BCE --init_type ones --num_steps 5000 --tinyturbo_iters 3 --turbo_iters 6 --train_snr -1 --lr 0.0008 --noise_type awgn --gpu 0 --id *string_of_your_choice* --load_model_train *path to .pt file to initialize from*
Tests the final model checkpoint at Results/args.id/models/weights.pt
python main.py --test_size 10000 --test_batch_size 10000 --block_len 40 --tinyturbo_iters 3 --turbo_iters 6 --noise_type awgn --gpu -1 --id *id of trained model* --test
Tests the final model checkpoint at Results/args.id/models/weights_{step_number}.pt
python main.py --test_batch_size 10000 --block_len 40 --tinyturbo_iters 3 --turbo_iters 6 --noise_type awgn --gpu -1 --id *id of trained model* --test --load_model_step *step_number*
- convcode.py/conv_encode : Convolutional code encoding
- turbo.py/bcjr_decode : BCJR (MAP) decoding of convolutional code
- turbo.py/turbo_encode : Turbo code encoding
- turbo.py/turbo_decode : Turbo decoder
- turbonet.py/tinyturbo_decode : TINYTURBO decoder
- turbonet.py/train : Train TINYTURBO
- turbonet.py/test : Test TINYTURBO