1# Copyright 2020 Huawei Technologies Co., Ltd 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14# ============================================================================ 15 16import pytest 17import mindspore.context as context 18import mindspore.nn as nn 19from mindspore.ops import operations as P 20 21context.set_context(mode=context.GRAPH_MODE, device_target="CPU") 22 23 24class Net(nn.Cell): 25 def __init__(self, shape, seed=0, seed2=0): 26 super(Net, self).__init__() 27 self.shape = shape 28 self.seed = seed 29 self.seed2 = seed2 30 self.stdnormal = P.StandardNormal(seed, seed2) 31 32 def construct(self): 33 return self.stdnormal(self.shape) 34 35 36@pytest.mark.level0 37@pytest.mark.platform_x86_cpu 38@pytest.mark.env_onecard 39def test_net(): 40 seed = 10 41 seed2 = 10 42 shape = (5, 6, 8) 43 net = Net(shape, seed, seed2) 44 output = net() 45 assert output.shape == (5, 6, 8) 46 outnumpyflatten_1 = output.asnumpy().flatten() 47 48 seed = 0 49 seed2 = 10 50 shape = (5, 6, 8) 51 net = Net(shape, seed, seed2) 52 output = net() 53 assert output.shape == (5, 6, 8) 54 outnumpyflatten_2 = output.asnumpy().flatten() 55 # same seed should generate same random number 56 assert (outnumpyflatten_1 == outnumpyflatten_2).all() 57 58 seed = 0 59 seed2 = 0 60 shape = (130, 120, 141) 61 net = Net(shape, seed, seed2) 62 output = net() 63 assert output.shape == (130, 120, 141) 64