Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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)