Skip to content

Commit

Permalink
Adding run.sh and rbm.py to numpy/
Browse files Browse the repository at this point in the history
  • Loading branch information
James Bergstra committed Apr 1, 2010
1 parent af162b0 commit 0b78f5f
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
44 changes: 44 additions & 0 deletions numpy/rbm.py
@@ -0,0 +1,44 @@
#!/usr/bin/env python2.5
from __future__ import absolute_import
import numpy as N
import sys
import time

# c: aa.cc

nin, nout, batchsize, niter = [int(a) for a in sys.argv[1:]]
lr = 0.01

rng = N.random.RandomState(342)

# declare data
x = (rng.rand(batchsize*niter, nin)-0.5) * 1.5

# declare model weights
a = rng.randn(nin) * 0.0
w = rng.rand(nin, nout)
b = rng.randn(nout) * 0.0

def sigm(x): return (N.tanh(x)+1)/2

def bern(x): return N.random.binomial(p=x,n=1)

t = time.time()
for i in xrange(niter):
pos_vis = x[i*batchsize:(i+1)*batchsize]

pos_hid = sigm(N.dot(pos_vis, w)+b)

neg_vis = sigm(N.dot(bern(pos_hid), w.T)+a)

neg_hid = sigm(N.dot(bern(neg_vis), w) + b)

a += lr * N.sum(pos_vis - neg_vis, axis=0)
b -= lr * N.sum(pos_hid - neg_hid, axis=0)
w -= lr * (N.dot(pos_vis.T, pos_hid) - N.dot(neg_vis.T, neg_hid))

total_time = time.time() - t
print 'cd1 rbm_bernoulli %i_%i\tnumpy{%i}\t%.2f' %(
nin, nout, batchsize, niter*batchsize/total_time)


2 changes: 2 additions & 0 deletions numpy/run.sh
Expand Up @@ -7,3 +7,5 @@ python logreg.py 784 10 1 1000 > ${HOSTNAME}_lr_784_1.bmark
python logreg.py 784 10 60 100 > ${HOSTNAME}_lr_784_60.bmark
python logreg.py 32 10 1 1000 > ${HOSTNAME}_lr_32_1.bmark
python logreg.py 32 10 60 100 > ${HOSTNAME}_lr_32_60.bmark
python rbm.py 1024 1024 1 100 > ${HOSTNAME}_rbm_1.bmark
python rbm.py 1024 1024 60 20 > ${HOSTNAME}_rbm_60.bmark

0 comments on commit 0b78f5f

Please sign in to comment.