Exemplo n.º 1
0
def getAlpha_mpg(M, Dict): # GPU
    PATCh_SIZE = 16
    IMAGE_SIZE = 256
    kin = 32
    minabsin = 0

    X = im2col(M, (PATCh_SIZE, PATCh_SIZE))
    X = X.transpose()
    A = np.empty([58081, 256])

    A_gpu1 = mpg.mp(Dict.transpose(), X[0:32000, :],     k=kin, minabs=minabsin)
    A_gpu2 = mpg.mp(Dict.transpose(), X[32000:58080, :], k=kin, minabs=minabsin)
    A[0:32000, :] = A_gpu1
    A[32000:58080, :] = A_gpu2

    Alpha = np.dot(A, Dict.transpose())
    A[58080, :] = X[58080, :]
    result = col2im(Alpha.transpose(), [IMAGE_SIZE, IMAGE_SIZE], (PATCh_SIZE, PATCh_SIZE))
    return result
Exemplo n.º 2
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_numbaprog(self):
     dictionary = self.rng.randn(self.numDict,self.dataSize)
     dictionary = np.array((np.sqrt(np.diag(1/np.diag(dictionary.dot(dictionary.T))))).dot(dictionary),dtype=np.float32,order='F')
     stimuli = np.array(self.rng.randn(self.numBatch,self.dataSize),dtype=np.float32,order='F')
     c = mpg.mp(dictionary,stimuli)
     assert np.allclose(c.dot(dictionary),stimuli,atol=1e-5)