Browse Source

fix(test/random): set a random seed for random unit test

GitOrigin-RevId: ad4b01eac7
tags/v1.7.0
Megvii Engine Team 4 years ago
parent
commit
884a07ffd2
1 changed files with 13 additions and 4 deletions
  1. +13
    -4
      imperative/python/test/unit/random/test_rng.py

+ 13
- 4
imperative/python/test/unit/random/test_rng.py View File

@@ -27,13 +27,16 @@ from megengine.core.ops.builtin import (
UniformRNG, UniformRNG,
) )
from megengine.device import get_device_count from megengine.device import get_device_count
from megengine.random import RNG, seed, uniform
from megengine.random import RNG
from megengine.random import seed as set_global_seed
from megengine.random import uniform




@pytest.mark.skipif( @pytest.mark.skipif(
get_device_count("xpu") <= 2, reason="xpu counts need > 2", get_device_count("xpu") <= 2, reason="xpu counts need > 2",
) )
def test_gaussian_op(): def test_gaussian_op():
set_global_seed(1024)
shape = ( shape = (
8, 8,
9, 9,
@@ -64,6 +67,7 @@ def test_gaussian_op():
get_device_count("xpu") <= 2, reason="xpu counts need > 2", get_device_count("xpu") <= 2, reason="xpu counts need > 2",
) )
def test_uniform_op(): def test_uniform_op():
set_global_seed(1024)
shape = ( shape = (
8, 8,
9, 9,
@@ -92,6 +96,7 @@ def test_uniform_op():
get_device_count("xpu") <= 2, reason="xpu counts need > 2", get_device_count("xpu") <= 2, reason="xpu counts need > 2",
) )
def test_gamma_op(): def test_gamma_op():
set_global_seed(1024)
_shape, _scale = 2, 0.8 _shape, _scale = 2, 0.8
_expected_mean, _expected_std = _shape * _scale, np.sqrt(_shape) * _scale _expected_mean, _expected_std = _shape * _scale, np.sqrt(_shape) * _scale


@@ -120,6 +125,7 @@ def test_gamma_op():
get_device_count("xpu") <= 2, reason="xpu counts need > 2", get_device_count("xpu") <= 2, reason="xpu counts need > 2",
) )
def test_beta_op(): def test_beta_op():
set_global_seed(1024)
_alpha, _beta = 2, 0.8 _alpha, _beta = 2, 0.8
_expected_mean = _alpha / (_alpha + _beta) _expected_mean = _alpha / (_alpha + _beta)
_expected_std = np.sqrt( _expected_std = np.sqrt(
@@ -151,6 +157,7 @@ def test_beta_op():
get_device_count("xpu") <= 2, reason="xpu counts need > 2", get_device_count("xpu") <= 2, reason="xpu counts need > 2",
) )
def test_poisson_op(): def test_poisson_op():
set_global_seed(1024)
lam = F.full([8, 9, 11, 12], value=2, dtype="float32") lam = F.full([8, 9, 11, 12], value=2, dtype="float32")
op = PoissonRNG(seed=get_global_rng_seed()) op = PoissonRNG(seed=get_global_rng_seed())
(output,) = apply(op, lam) (output,) = apply(op, lam)
@@ -174,6 +181,7 @@ def test_poisson_op():
get_device_count("xpu") <= 2, reason="xpu counts need > 2", get_device_count("xpu") <= 2, reason="xpu counts need > 2",
) )
def test_permutation_op(): def test_permutation_op():
set_global_seed(1024)
n = 1000 n = 1000


def test_permutation_op_dtype(dtype): def test_permutation_op_dtype(dtype):
@@ -390,22 +398,23 @@ def test_PermutationRNG():




def test_seed(): def test_seed():
seed(10)
set_global_seed(10)
out1 = uniform(size=[10, 10]) out1 = uniform(size=[10, 10])
out2 = uniform(size=[10, 10]) out2 = uniform(size=[10, 10])
assert not (out1.numpy() == out2.numpy()).all() assert not (out1.numpy() == out2.numpy()).all()


seed(10)
set_global_seed(10)
out3 = uniform(size=[10, 10]) out3 = uniform(size=[10, 10])
np.testing.assert_equal(out1.numpy(), out3.numpy()) np.testing.assert_equal(out1.numpy(), out3.numpy())


seed(11)
set_global_seed(11)
out4 = uniform(size=[10, 10]) out4 = uniform(size=[10, 10])
assert not (out1.numpy() == out4.numpy()).all() assert not (out1.numpy() == out4.numpy()).all()




@pytest.mark.parametrize("is_symbolic", [None, False, True]) @pytest.mark.parametrize("is_symbolic", [None, False, True])
def test_rng_empty_tensor(is_symbolic): def test_rng_empty_tensor(is_symbolic):
set_global_seed(1024)
shapes = [ shapes = [
(0,), (0,),
(0, 0, 0), (0, 0, 0),


Loading…
Cancel
Save