MCPcopy Create free account
hub / github.com/FreeformRobotics/OTS / NumericTestCase

Class NumericTestCase

lib/nn/modules/tests/test_numeric_batchnorm.py:29–52  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27
28
29class NumericTestCase(TorchTestCase):
30 def testNumericBatchNorm(self):
31 a = torch.rand(16, 10)
32 bn = nn.BatchNorm2d(10, momentum=1, eps=1e-5, affine=False)
33 bn.train()
34
35 a_var1 = Variable(a, requires_grad=True)
36 b_var1 = bn(a_var1)
37 loss1 = b_var1.sum()
38 loss1.backward()
39
40 a_var2 = Variable(a, requires_grad=True)
41 a_mean2 = a_var2.mean(dim=0, keepdim=True)
42 a_std2 = torch.sqrt(handy_var(a_var2, unbias=False).clamp(min=1e-5))
43 # a_std2 = torch.sqrt(a_var2.var(dim=0, keepdim=True, unbiased=False) + 1e-5)
44 b_var2 = (a_var2 - a_mean2) / a_std2
45 loss2 = b_var2.sum()
46 loss2.backward()
47
48 self.assertTensorClose(bn.running_mean, a.mean(dim=0))
49 self.assertTensorClose(bn.running_var, handy_var(a))
50 self.assertTensorClose(a_var1.data, a_var2.data)
51 self.assertTensorClose(b_var1.data, b_var2.data)
52 self.assertTensorClose(a_var1.grad, a_var2.grad)
53
54
55if __name__ == '__main__':

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected