def testRunningStat(self): for shp in ((), (3,), (3, 4)): li = [] rs = RunningStat(shp) for _ in range(5): val = np.random.randn(*shp) rs.push(val) li.append(val) m = np.mean(li, axis=0) self.assertTrue(np.allclose(rs.mean, m)) v = np.square(m) if (len(li) == 1) else np.var(li, ddof=1, axis=0) self.assertTrue(np.allclose(rs.var, v))
def testRunningStat(self): for shp in ((), (3, ), (3, 4)): li = [] rs = RunningStat(shp) for _ in range(5): val = np.random.randn(*shp) rs.push(val) li.append(val) m = np.mean(li, axis=0) self.assertTrue(np.allclose(rs.mean, m)) v = (np.square(m) if (len(li) == 1) else np.var(li, ddof=1, axis=0)) self.assertTrue(np.allclose(rs.var, v))
def testCombiningStat(self): for shape in [(), (3, ), (3, 4)]: li = [] rs1 = RunningStat(shape) rs2 = RunningStat(shape) rs = RunningStat(shape) for _ in range(5): val = np.random.randn(*shape) rs1.push(val) rs.push(val) li.append(val) for _ in range(9): rs2.push(val) rs.push(val) li.append(val) rs1.update(rs2) assert np.allclose(rs.mean, rs1.mean) assert np.allclose(rs.std, rs1.std)