def computeLayerData(self, layerOut): """ Override computeLayer so we call into C++ code for fast performance. @param layerOut: the output HmaxLayer to store results in. """ if len(self.learned) == 0: # if untrained, do not compute return if self.cLearnedW == None: self.cLearnedW = hmaxc.floatCArray(len(self.learned) * 16) self.cLearnedPF = hmaxc.floatCArray(len(self.learned) * 16) for f in xrange(len(self.learned)): fi = f * 16 # self.learned is [f][4][4][2] array...need to copy correctly for xi in xrange(4): for yi in xrange(4): w, pf = self.learned[f][xi][yi] self.cLearnedW[fi + ((yi * 4) + xi)] = w self.cLearnedPF[fi + ((yi * 4) + xi)] = pf # print "C++ GRBF:" layerIn = layerOut.inputLayers[0] self.cGRBFFilter.computeLayer( self.cLearnedW, self.cLearnedPF, len(self.learned) * 16, layerIn.cLayer, layerOut.cLayer ) layerOut.setLayerDataFromCArray(checkSame=True)
def __init__(self, level, xySize, fSize, xyStart, xySpace, inputLayers=[]): Layer.__init__(self, level, xySize, fSize, xyStart, xySpace, inputLayers) #int xSize, int ySize, int fSize, float xStart, float yStart, # float xSpace, float ySpace self.cArray = hmaxc.floatCArray(self.fSize * self.xSize*self.ySize) self.cLayer = hmaxc.LayerC(xySize[0], xySize[1], fSize, xyStart[0], \ xyStart[1], xySpace[0], xySpace[1], self.cArray)
def __init__(self, level, xySize, fSize, xyStart, xySpace, inputLayers=[]): Layer.__init__(self, level, xySize, fSize, xyStart, xySpace, inputLayers) #int xSize, int ySize, int fSize, float xStart, float yStart, # float xSpace, float ySpace self.cArray = hmaxc.floatCArray(self.fSize * self.xSize * self.ySize) self.cLayer = hmaxc.LayerC(xySize[0], xySize[1], fSize, xyStart[0], \ xyStart[1], xySpace[0], xySpace[1], self.cArray)
def getLayerDataAsCArray(self, f=0): """ Return a copy of the layer's data matrix for index f converted into a flattened 1D float array (C float[]). """ if self.cArray == None: self.cArray = hmaxc.floatCArray(self.xSize * self.ySize) for j in xrange(self.ySize): for i in xrange(self.xSize): self.cArray[(j * self.xSize) + i] = self.array[f][i][j] return self.cArray
def computeLayerData(self, layerOut): """ Override computeLayer so we call into C++ code for fast performance. @param layerOut: the output HmaxLayer to store results in. """ if len(self.learned)==0: #if untrained, do not compute return if self.cLearnedW==None: self.cLearnedW = hmaxc.floatCArray(len(self.learned)*16) self.cLearnedPF = hmaxc.floatCArray(len(self.learned)*16) for f in xrange(len(self.learned)): fi = f*16 #self.learned is [f][4][4][2] array...need to copy correctly for xi in xrange(4): for yi in xrange(4): w,pf = self.learned[f][xi][yi] self.cLearnedW[fi+((yi*4)+xi)] = w self.cLearnedPF[fi+((yi*4)+xi)] = pf #print "C++ GRBF:" layerIn = layerOut.inputLayers[0] self.cGRBFFilter.computeLayer(self.cLearnedW, self.cLearnedPF, \ len(self.learned)*16, layerIn.cLayer, layerOut.cLayer) layerOut.setLayerDataFromCArray(checkSame=True)
def __init__(self, thetas, size=11, lam=5.6, sigma=4.5, aspect=0.3): """ @param size: the integer size (length and width) for this filter. @param thetas: the set of angle orientations, in radians, to use for this filter. @param lam: the lambda wavelength this filter is tuned with. @param sigma: @param aspect: the aspect ratio. """ #GaborFilterC(float thetas[], int thetaCount, int size=11, # float lam=5.6, float sigma=4.5, float aspect=0.3); self.size = size cthetas = hmaxc.floatCArray(len(thetas)) for i in xrange(len(thetas)): print "pyTheta"+str(i)+": ",thetas[i] cthetas[i] = thetas[i] self.cGabor = hmaxc.GaborFilterC(cthetas, len(thetas), size, lam, sigma, aspect)
def __init__(self, thetas, size=11, lam=5.6, sigma=4.5, aspect=0.3): """ @param size: the integer size (length and width) for this filter. @param thetas: the set of angle orientations, in radians, to use for this filter. @param lam: the lambda wavelength this filter is tuned with. @param sigma: @param aspect: the aspect ratio. """ #GaborFilterC(float thetas[], int thetaCount, int size=11, # float lam=5.6, float sigma=4.5, float aspect=0.3); self.size = size cthetas = hmaxc.floatCArray(len(thetas)) for i in xrange(len(thetas)): #print "pyTheta"+str(i)+": ",thetas[i] cthetas[i] = thetas[i] self.cGabor = hmaxc.GaborFilterC(cthetas, len(thetas), size, lam, sigma, aspect)