Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

deep neural network library in Python

Project Description

pydnn is a deep neural network library written in Python using Theano (symbolic math and optimizing compiler package). I wrote it as a learning project while competing in Kaggle’s National Data Science Bowl in March 2015 (where it produced an entry finishing in the top 6%) and plan to continue developing it by adding support for the most important deep learning techniques (including RNNs).

Design Goals

  • Simplicity
    Wherever possible simplify code to make it a clear expression of underlying deep learning algorithms. Minimize cognitive overhead, so that it is easy for someone who has completed the tutorials to pickup this library as a next step and easily start learning about, using, and coding more advanced techniques.
  • Completeness
    Include all the important and popular techniques for effective deep learning and not techniques with more marginal or ambiguous benefit.
  • Ease of use
    Make preparing a dataset, building a model and training a deep network only a few lines of code; enable users to work with NumPy rather than Theano.
  • Performance
    Should be roughly on par with other Theano neural net libraries so that pydnn is a viable choice for computationally intensive deep learning.


  • High performance GPU training (courtesy of Theano)
  • Quick start tools to instantly get started training on inexpensive Amazon EC2 GPU instances.
  • Implementations of important new techniques recently reported in the literature:
  • Implementations of standard deep learning techniques:
    • Stochastic Gradient Descent with Momentum
    • Dropout
    • convolutions with max-pooling using overlapping windows
    • ReLU/Tanh/sigmoid activation functions
    • etc.


First download and unzip raw image data from somewhere (e.g. Kaggle). Then:

import pydnn
import numpy as np
rng = np.random.RandomState(e.rng_seed)

# build data, split into training/validation sets, preprocess
train_dir = 'home\ubuntu\train'
data =
data = pydnn.preprocess.split_training_data(data, 64, 80, 15, 5)
resizer = pydnn.preprocess.StretchResizer()
pre = pydnn.preprocess.Rotator360(data, (64, 64), resizer, rng)

# build the neural network
net = pydnn.nn.NN(pre, 'images', 121, 64, rng, pydnn.nn.relu)
net.add_convolution(72, (7, 7), (2, 2))
net.add_convolution(128, (5, 5), (2, 2))
net.add_convolution(128, (3, 3), (2, 2))

# train the network
lr = pydnn.nn.Adam(learning_rate=pydnn.nn.LearningRateDecay(

From raw data to trained network (including specifying network architecture) in 25 lines of code.

Short Term Goals

  • Implement popular RNN techniques.
  • Integrate with Amazon EC2 clustering software (such as StarCluster).
  • Integrate with hyper-parameter optimization frameworks (such as Spearmint and hyperopt).


Isaac Kriegman

Release History

This version
History Node

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Hash SHA256 Hash Help Version File Type Upload Date
(75.1 kB) Copy SHA256 Hash SHA256
py2.py3 Wheel Mar 26, 2015

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers DreamHost DreamHost Log Hosting