(self, dev)
| 45 | return fan_in, fan_out |
| 46 | |
| 47 | def he_uniform(self, dev): |
| 48 | |
| 49 | def init(shape): |
| 50 | fan_in, _ = self.compute_fan(shape) |
| 51 | limit = np.sqrt(6 / fan_in) |
| 52 | return limit |
| 53 | |
| 54 | self.t1.to_device(dev) |
| 55 | initializer.he_uniform(self.t1) |
| 56 | np_t1 = tensor.to_numpy(self.t1) |
| 57 | limit = init(self.t1.shape) |
| 58 | self.assertAlmostEqual(np_t1.max(), limit, delta=limit/10) |
| 59 | self.assertAlmostEqual(np_t1.min(), -limit, delta=limit/10) |
| 60 | self.assertAlmostEqual(np_t1.mean(), 0, delta=limit/10) |
| 61 | |
| 62 | self.t2.to_device(dev) |
| 63 | initializer.he_uniform(self.t2) |
| 64 | np_t2 = tensor.to_numpy(self.t2) |
| 65 | limit = init(self.t2.shape) |
| 66 | self.assertAlmostEqual(np_t2.max(), limit, delta=limit/10) |
| 67 | self.assertAlmostEqual(np_t2.min(), -limit, delta=limit/10) |
| 68 | self.assertAlmostEqual(np_t2.mean(), 0, delta=limit/10) |
| 69 | |
| 70 | self.t3.to_device(dev) |
| 71 | initializer.he_uniform(self.t3) |
| 72 | np_t3 = tensor.to_numpy(self.t3) |
| 73 | limit = init(self.t3.shape) |
| 74 | self.assertAlmostEqual(np_t3.max(), limit, delta=limit/10) |
| 75 | self.assertAlmostEqual(np_t3.min(), -limit, delta=limit/10) |
| 76 | self.assertAlmostEqual(np_t3.mean(), 0, delta=limit/10) |
| 77 | |
| 78 | |
| 79 | @unittest.skipIf(not singa_wrap.USE_CUDA, 'CUDA is not enabled') |
no test coverage detected