PDNN: A Python Toolkit for Deep Learning
PDNN is a Python deep learning toolkit developed under the Theano environment. It was originally created by Yajie Miao.  Continuous
efforts have been made to enrich its features and extend its application. PDNN is released under Apache 2.0, one of the least restrictive
licenses available.

View on GitHub

Why use PDNN?
PDNN implements a complete set of models. Unsupervised learning (SDAs, RBMs), supervised learning (DNN, CNN) and multi-task
learning can be conducted within a single framework.
PDNN is an easy-to-use toolkit developed with the needs of non-DL reseachers in mind.  Training a DNN is as simple as calling the
following command. Switching between CPU and GPU is automatic, depending on if GPUs are detected.
python pdnn/cmds/run_DNN.py --train-data "train.pickle.gz,partition=600m,random=true" \
                            --valid-data "valid.pickle.gz,
partition=600m,random=true" \
                            --nnet-spec "784:1024:1024:1024:1024:1024:1901" \
                            --wdir ./  --param-output-file dnn.mdl
PDNN facilitates further development. Hierarchical code organization (commands --> models --> layers) poses nice readability. The
Theano environment supports gradient computation. This enables users to focus on algorithm/architecture design, saving the headache
of gradient derivation.

Install Theano. Refer to the Theano installation for more details. If you are running Ubuntu Linux, following steps in this document
    will set up Theano for you.
2. Check out the stable version of PDNN from GitHub
    > git clone https://github.com/yajiemiao/pdnn
3. Add the PDNN path to PYTHONPATH
    > export PYTHONPATH=/path/to/pdnn:$PYTHONPATH

Examples can be found under pdnn/examples. This example archive will be updated and enriched continuously.
At the bottom of each documentation page, you can find the example for each command.

Some general information about PDNN
Data Format and Reading
Learning Rate Specification
Speed up CNN Training with cuDNN

Commands under pdnn/cmds enable general-purpose DL including:
Training Deep Neural Networks
Training Convolutional Neural Networks
Training Stacked Restricted Boltzmann Machines

Training Stacked Denoising Autoencoders
Multi-task Learning of DNNs
Feature Extraction with a Trained Network

Documentation -- pdnn/cmds2
Commands under pdnn/cmds2 are specifically for ASR
Training SAT Models for DNNs
Generating and Save Convolution Layer Activation

Kaldi-formatted Feature Extraction with a Trained Network

Contacting us

(Recommended) Post your questions, suggestions, and discussions to GitHub Issues.

You can also send emails to Yajie Miao (yajiemiao AT gmail.com)


Please cite the following manuscript if you use PDNN in your papers/publications:
Yajie Miao, "Kaldi+PDNN: Building DNN-based ASR Systems with Kaldi and PDNN," arXiv:1401.6984, 2014.