I want to calculate the mean,standard deviation and Covariance matrix of MNIST Dataset for only digits 1,2,3…etc separately.  (http://www-inst.eecs.berkeley.edu/~cs70/sp15/notes/n21.pdf 1) Page 12
I calculated the mean and SD using the below. I need covariance matrix tooo

Any help would be really great.

Screen Shot 2020-04-02 at 11.56.26 PM
Screen Shot 2020-04-02 at 11.56.26 PM
2414×1014 295 KB

def online_mean_and_sd(trainLoader):
    """Compute the mean and sd in an online fashion

        Var[x] = E[X^2] - E^2[X]
    """
    cnt = 0
    fst_moment = torch.empty(3)
    snd_moment = torch.empty(3)

    for images, _ in trainLoader:

        b, c, h, w = images.shape
        nb_pixels = b * h * w
        sum_ = torch.sum(images, dim=[0, 2, 3])
        sum_of_square = torch.sum(images ** 2, dim=[0, 2, 3])
        fst_moment = (cnt * fst_moment + sum_) / (cnt + nb_pixels)
        snd_moment = (cnt * snd_moment + sum_of_square) / (cnt + nb_pixels)

        cnt += nb_pixels

    return fst_moment, torch.sqrt(snd_moment - fst_moment ** 2)


Screen Shot 2020-04-03 at 10.39.09 PM1478×888 183 KB