in torchnet/meter/averagevaluemeter.py [0:0]
def add(self, value, n=1):
self.val = value
self.sum += value * n
if n <= 0:
raise ValueError("Cannot use a non-positive weight for the running stat.")
elif self.n == 0:
self.mean = 0.0 + value # This is to force a copy in torch/numpy
self.std = np.inf
self.mean_old = self.mean
self.m_s = 0.0
else:
self.mean = self.mean_old + n * (value - self.mean_old) / float(self.n + n)
self.m_s += n * (value - self.mean_old) * (value - self.mean)
self.mean_old = self.mean
self.std = np.sqrt(self.m_s / (self.n + n - 1.0))
self.var = self.std ** 2
self.n += n