def rescale(self, Xrange, Yrange): ''' Rescales the entire dataset so that all inputs X lie within (Xrange[0],Xrange[1]) and all targets Y lie within (Yrange[0],Yrange[1]). The same scaling factor is applied to all folds. ''' if Xrange != self.Xrange and self._X.dtype != 'uint8': Xscale = self.Xrange[1] - self.Xrange[0] if isscalar(Xscale): Xscale = (Xrange[1] - Xrange[0]) / maximum(1e-5, Xscale) else: bm.maximum(Xscale, 1e-5, out=Xscale) bm.reciprocal(Xscale, out=Xscale) bm.multiply(Xscale, Xrange[1] - Xrange[0], out=Xscale) bm.isub(self._X, self.Xrange[0]) bm.imul(self._X, Xscale) bm.iadd(self._X, Xrange[0]) if Yrange != self.Yrange and not (self._X is self._Y): Yscale = self.Yrange[1] - self.Yrange[0] if isscalar(Yscale): Yscale = (Yrange[1] - Yrange[0]) / maximum(1e-5, Yscale) else: bm.maximum(Yscale, 1e-5, out=Yscale) bm.reciprocal(Yscale, out=Yscale) bm.multiply(Yscale, Yrange[1] - Yrange[0], out=Yscale) bm.isub(self._Y, self.Yrange[0]) bm.imul(self._Y, Yscale) bm.iadd(self._Y, Yrange[0]) self.Xrange = Xrange self.Yrange = Yrange
def rescale(self,Xrange,Yrange): ''' Rescales the entire dataset so that all inputs X lie within (Xrange[0],Xrange[1]) and all targets Y lie within (Yrange[0],Yrange[1]). The same scaling factor is applied to all folds. ''' if Xrange != self.Xrange and self._X.dtype != 'uint8': Xscale = self.Xrange[1]-self.Xrange[0] if isscalar(Xscale): Xscale = (Xrange[1]-Xrange[0]) / maximum(1e-5,Xscale) else: bm.maximum(Xscale,1e-5,out=Xscale) bm.reciprocal(Xscale,out=Xscale) bm.multiply(Xscale,Xrange[1]-Xrange[0],out=Xscale) bm.isub(self._X,self.Xrange[0]) bm.imul(self._X,Xscale) bm.iadd(self._X,Xrange[0]) if Yrange != self.Yrange and not (self._X is self._Y): Yscale = self.Yrange[1]-self.Yrange[0] if isscalar(Yscale): Yscale = (Yrange[1]-Yrange[0]) / maximum(1e-5,Yscale) else: bm.maximum(Yscale,1e-5,out=Yscale) bm.reciprocal(Yscale,out=Yscale) bm.multiply(Yscale,Yrange[1]-Yrange[0],out=Yscale) bm.isub(self._Y,self.Yrange[0]) bm.imul(self._Y,Yscale) bm.iadd(self._Y,Yrange[0]) self.Xrange = Xrange self.Yrange = Yrange
def next(self): if self._index >= len(self._batches): raise StopIteration s = slice(*(self._batches[self._index])) Xbuf = self._X[s,:] if Xbuf.dtype == 'uint8': if self._Xbuf == None: self._Xbuf = bm.empty((self._batchsize,self._X.shape[1])) self._Xbuf[:s.stop-s.start,:] = Xbuf # copy Xbuf = self._Xbuf[:s.stop-s.start,:] # point to copy bm.imul(Xbuf,1./255) batch = DataFold(Xbuf,self._Y[s,:],self._S[s,:] if self._S != None else None) self._index += 1 return batch
def next(self): if self._index >= len(self._batches): raise StopIteration s = slice(*(self._batches[self._index])) Xbuf = self._X[s, :] if Xbuf.dtype == 'uint8': if self._Xbuf == None: self._Xbuf = bm.empty((self._batchsize, self._X.shape[1])) self._Xbuf[:s.stop - s.start, :] = Xbuf # copy Xbuf = self._Xbuf[:s.stop - s.start, :] # point to copy bm.imul(Xbuf, 1. / 255) batch = DataFold(Xbuf, self._Y[s, :], self._S[s, :] if self._S != None else None) self._index += 1 return batch