Skip to content

Instantly share code, notes, and snippets.

@bayerj
Created March 29, 2010 19:15
Show Gist options
  • Select an option

  • Save bayerj/348281 to your computer and use it in GitHub Desktop.

Select an option

Save bayerj/348281 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python2.6
# -*- coding: utf-8 -*-
__author__ = 'Justin S Bayer, bayer.justin@googlemail.com'
import optparse
import sys
import time
import scipy
from rnn import RecurrentNetwork
from pybrain.tools.shortcuts import buildNetwork
def make_optparse():
parser = optparse.OptionParser()
return parser
def theano(num_inpt, num_hidden, num_output, inpts):
rnn = RecurrentNetwork()
inweights = scipy.random.standard_normal((num_hidden, num_inpt))
outweights = scipy.random.standard_normal((num_output, num_hidden))
recweights = scipy.random.standard_normal((num_hidden, num_hidden))
bias = scipy.random.standard_normal((num_hidden))
initialhidden = scipy.zeros(num_hidden)
initialout = scipy.zeros(num_output)
start = time.time()
for inpt in inpts:
rnn.net_func(inpt, initialhidden, initialout, bias, inweights,
outweights, recweights)
return time.time() - start
def pybrain(num_inpt, num_hidden, num_output, inpts):
net = buildNetwork(num_inpt, num_hidden, num_output, recurrent=True,
fast=False)
start = time.time()
for seq in inpts:
net.reset()
for inpt in seq:
net.activate(inpt)
return time.time() - start
def pybrainarac(num_inpt, num_hidden, num_output, inpts):
net = buildNetwork(num_inpt, num_hidden, num_output, recurrent=True,
fast=True)
start = time.time()
for seq in inpts:
net.reset()
for inpt in seq:
net.activate(inpt)
return time.time() - start
def main():
options, args = make_optparse().parse_args()
num_inpt = int(args[0])
num_hidden = int(args[1])
num_output = int(args[2])
print "Network stats"
print "-" * 20
print "Number of inputs: %i" % num_inpt
print "Number of hidden: %i" % num_hidden
print "Number of outputs: %i" % num_output
inpts = scipy.random.random((500, 100, num_inpt))
print
print "Durations"
print "-" * 20
pybrain_dur = pybrain(num_inpt, num_hidden, num_output, inpts)
print "Pybrain: %.2f" % pybrain_dur
pybrainarac_dur = pybrainarac(num_inpt, num_hidden, num_output, inpts)
print "Pybrain \w arac: %.2f" % pybrainarac_dur
theano_dur = theano(num_inpt, num_hidden, num_output, inpts)
print "Theano: %.2f" % theano_dur
print
print "Ratios"
print "-" * 20
print "Theano / PyBrain: %.2f" % (theano_dur / pybrain_dur)
print "Theano / PyBrain+arac: %.2f" % (theano_dur / pybrainarac_dur)
print "PyBrain+arac / PyBrain: %.2f" % (pybrainarac_dur / pybrain_dur)
return 0
if __name__ == '__main__':
sys.exit(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment