def sample(self, m): """ Samples m samples from the current LpNestedSymmetric distribution. :param m: Number of samples to draw. :type m: int. :returns: A Data object containing the samples :rtype: natter.DataModule.Data """ ret = zeros((self.param['f'].n[()], m)) r = beta(float(self.param['f'].n[()]), 1.0, (1, m)) _recsample((), r, self.param['f'], m, ret) ret = Data(ret, 'Samples from ' + self.name) ret.scale(self.param['rp'].sample(m).X / self.param['f'].f(ret).X) return ret
def sample(self,m): """ Samples m samples from the current LpSphericallySymmetric distribution. :param m: Number of samples to draw. :type m: int. :returns: A Data object containing the samples :rtype: natter.DataModule.Data """ # sample from a p-generlized normal with scale 1 z = gamma(1/self.param['p'],1.0,(self.param['n'],m)) z = abs(z)**(1/self.param['p']) dat = Data(z * sign(randn(self.param['n'],m)),'Samples from ' + self.name, \ ['sampled ' + str(m) + ' examples from Lp-generalized Normal']) # normalize the samples to get a uniform distribution. dat.normalize(self.param['p']) r = self.param['rp'].sample(m) dat.scale(r) return dat
def sample(self, m): """ Samples m samples from the current LpSphericallySymmetric distribution. :param m: Number of samples to draw. :type m: int. :returns: A Data object containing the samples :rtype: natter.DataModule.Data """ # sample from a p-generlized normal with scale 1 z = gamma(1 / self.param['p'], 1.0, (self.param['n'], m)) z = abs(z)**(1 / self.param['p']) dat = Data(z * sign(randn(self.param['n'],m)),'Samples from ' + self.name, \ ['sampled ' + str(m) + ' examples from Lp-generalized Normal']) # normalize the samples to get a uniform distribution. dat.normalize(self.param['p']) r = self.param['rp'].sample(m) dat.scale(r) return dat