iterfaces change: _Constant to Constant

pull/915/head
guohongzilong 5 years ago committed by chang zherui
parent 434abe3f8c
commit 2de97f256f

@ -180,18 +180,18 @@ class HeUniform(Initializer):
_assignment(arr, data) _assignment(arr, data)
class _Constant(Initializer): class Constant(Initializer):
""" """
Initialize a constant. Initialize a constant.
Args: Args:
value (int or numpy.ndarray): The value to initialize. value (Union[int, numpy.ndarray]): The value to initialize.
Returns: Returns:
Array, initialize array. Array, initialize array.
""" """
def __init__(self, value): def __init__(self, value):
super(_Constant, self).__init__(value=value) super(Constant, self).__init__(value=value)
self.value = value self.value = value
def _initialize(self, arr): def _initialize(self, arr):
@ -266,6 +266,14 @@ def initializer(init, shape=None, dtype=mstype.float32):
Args: Args:
init (Union[Tensor, str, Initializer, numbers.Number]): Initialize value. init (Union[Tensor, str, Initializer, numbers.Number]): Initialize value.
- `str`: The `init` should be the alias of the class inheriting from `Initializer` and the corresponding
class will be called.
- `Initializer`: The `init` should be the class inheriting from `Initializer` to initialize tensor.
- `numbers.Number`: The `Constant` will be called to initialize tensor.
shape (Union[tuple, list, int]): A list of integers, a tuple of integers or an integer as the shape of shape (Union[tuple, list, int]): A list of integers, a tuple of integers or an integer as the shape of
output. Default: None. output. Default: None.
dtype (:class:`mindspore.dtype`): The type of data in initialized tensor. Default: mstype.float32. dtype (:class:`mindspore.dtype`): The type of data in initialized tensor. Default: mstype.float32.
@ -295,7 +303,7 @@ def initializer(init, shape=None, dtype=mstype.float32):
raise ValueError(msg) raise ValueError(msg)
if isinstance(init, numbers.Number): if isinstance(init, numbers.Number):
init_obj = _Constant(init) init_obj = Constant(init)
elif isinstance(init, str): elif isinstance(init, str):
init_obj = _INITIALIZER_ALIAS[init.lower()]() init_obj = _INITIALIZER_ALIAS[init.lower()]()
else: else:
@ -314,4 +322,5 @@ __all__ = [
'HeUniform', 'HeUniform',
'XavierUniform', 'XavierUniform',
'One', 'One',
'Zero'] 'Zero',
'Constant']

@ -37,7 +37,7 @@ def _check_value(tensor, value_min, value_max):
for ele in nd.flatten(): for ele in nd.flatten():
if value_min <= ele <= value_max: if value_min <= ele <= value_max:
continue continue
raise TypeError('value_min = %d, ele = %d, value_max = %d' raise ValueError('value_min = %d, ele = %d, value_max = %d'
% (value_min, ele, value_max)) % (value_min, ele, value_max))
@ -92,6 +92,11 @@ def test_init_one_alias():
_check_value(tensor, 1, 1) _check_value(tensor, 1, 1)
def test_init_constant():
tensor = init.initializer(init.Constant(1), [2, 2], ms.float32)
_check_value(tensor, 1, 1)
def test_init_uniform(): def test_init_uniform():
scale = 10 scale = 10
tensor = init.initializer(init.Uniform(scale=scale), [5, 4], ms.float32) tensor = init.initializer(init.Uniform(scale=scale), [5, 4], ms.float32)

Loading…
Cancel
Save