def update(self, samples) -> None: """ Update the online calculation of the mean and variance. Notes: Modifies the metrics in place. Args: samples: data samples Returns: None """ n = len(samples) sample_mean = be.tsum(samples) / n sample_square = be.tsum(be.square(samples - sample_mean)) delta = sample_mean - self.mean new_num = self.num + n correction = n * self.num * delta**2 / max(new_num, 1) self.square += sample_square + correction self.var = self.square / max(new_num - 1, 1) self.mean = (self.num * self.mean + n * sample_mean) / max(new_num, 1) self.num = new_num
def update(self, samples, axis=0) -> None: """ Update the online calculation of the mean and variance. Notes: Modifies the metrics in place. Args: samples: data samples Returns: None """ # compute the sample size and sample mean n = len(samples) sample_mean = be.tsum(samples, axis=axis) / max(n, 1) sample_square = be.tsum(be.square(be.subtract(sample_mean, samples)), axis=axis) if self.mean is None: self.mean = be.zeros_like(sample_mean) self.square = be.zeros_like(sample_square) self.var = be.zeros_like(sample_square) self.num = 0 delta = sample_mean - self.mean new_num = self.num + n correction = n * self.num * be.square(delta) / max(new_num, 1) self.square += sample_square + correction self.var = self.square / max(new_num - 1, 1) self.mean = (self.num * self.mean + n * sample_mean) / max(new_num, 1) self.num = new_num
def update(self, samples, axis=0) -> None: """ Update the online calculation of the mean. Notes: Modifies the metrics in place. Args: samples: data samples Returns: None """ # compute the sample size and sample mean n = len(samples) sample_mean = be.tsum(samples, axis=axis) / n # initialize the num and mean attributes if necessary if self.mean is None: self.mean = be.zeros_like(sample_mean) self.num = 0 # update the num and mean attributes tmp = self.num * self.mean + n * sample_mean self.num += n self.mean = tmp / self.num
def update(self, samples) -> None: """ Update the online calculation of the mean. Notes: Modifies the metrics in place. Args: samples: data samples Returns: None """ n = len(samples) sample_mean = be.tsum(samples) / n self.num += n self.mean += (sample_mean - self.mean) * n / max(self.num, 1)
def test_l1_normalize(): result_pre = [ be.tsum(pre.l1_normalize(tensor), axis=1) for tensor in tensors ] result_ref = [be.ones((len(tensor), )) for tensor in tensors] assert compare_lists(result_pre, result_ref)