예제 #1
0
def main():
    """Times various versions of Matching Pursuit."""

    nshort = 6
    tshort = 2
    nmed = 3
    tmed = 6
    nlong = 1
    
    #Setup variables for inference
    numDict = int(9600)
    numBatch = int(1024)
    dataSize = int(256)
    dictsIn = np.random.randn(numDict,dataSize)
    dictsIn = (np.sqrt(np.diag(1/np.diag(dictsIn.dot(dictsIn.T))))).dot(dictsIn)
    stimuli = np.random.randn(numBatch,dataSize)
    kin = 32
    minabsin = 0.
    
    #MP
    params = """Parameters:
             numDict: """+str(numDict)+"""
             numBatch: """+str(numBatch)+"""
             dataSize: """+str(dataSize)+"""
             k-sparseness: """+str(kin)+"""\n"""
    print params
             
    start = timer()
    mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
    dt = timer()-start
    if dt < tshort:
        for ii in xrange(nshort-1):
            start = timer()
            mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
            dt = dt+timer()-start
        num = nshort
        dt = dt/(nshort)
    elif dt < tmed:
        for ii in xrange(nmed-1):
            start = timer()
            mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
            dt = dt+timer()-start
        num = nmed
        dt = dt/(nmed)
    else:
        for ii in xrange(nlong-1):
            start = timer()
            mpn.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
            dt = dt+timer()-start
        num = nlong
        dt = dt/(nlong)
    print '---------------Numpy based MP---------------'
    print 'Average time over '+str(num)+' trials:'
    print '%f s' % dt

    start = timer()
    mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
    dt = timer()-start
    if dt < tshort:
        for ii in xrange(nshort-1):
            start = timer()
            mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
            dt = dt+timer()-start
        num = nshort
        dt = dt/(nshort)
    elif dt < tmed:
        for ii in xrange(nmed-1):
            start = timer()
            mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
            dt = dt+timer()-start
        num = nmed
        dt = dt/(nmed)
    else:
        for ii in xrange(nlong-1):
            start = timer()
            mpg.mp(dictsIn,stimuli,k=kin,minabs=minabsin)
            dt = dt+timer()-start
        num = nlong
        dt = dt/(nlong)
    print '----------NumbaPro GPU based MP---------'
    print 'Average time over '+str(num)+' trials:'
    print '%f s' % dt
 def test_numpy(self):
     dictionary = self.rng.randn(self.numDict,self.dataSize)
     dictionary = (np.sqrt(np.diag(1/np.diag(dictionary.dot(dictionary.T))))).dot(dictionary)
     stimuli = self.rng.randn(self.numBatch,self.dataSize)
     c = mpn.mp(dictionary,stimuli)
     assert np.allclose(c.dot(dictionary),stimuli,atol=1e-5)