mindspore/docs/api/api_python/mindspore.common.initialize...

204 lines
7.6 KiB
ReStructuredText
Raw Normal View History

2021-12-01 10:29:28 +08:00
mindspore.common.initializer
=============================
初始化神经元参数。
.. py:class:: mindspore.common.initializer.Initializer(**kwargs)
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
初始化器的抽象基类。
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
**参数:**
2021-12-04 20:36:47 +08:00
- **kwargs** (dict) `Initializer` 的关键字参数。
2021-12-01 10:29:28 +08:00
2021-12-13 18:05:59 +08:00
.. py:class:: mindspore.common.initializer.TruncatedNormal(sigma=0.01)
2021-12-04 20:36:47 +08:00
2021-12-18 22:53:06 +08:00
生成一个服从截断正态高斯分布的随机数组用于初始化Tensor。
2021-12-04 20:36:47 +08:00
**参数:**
2021-12-01 10:29:28 +08:00
2021-12-13 18:05:59 +08:00
**sigma** (float) - 截断正态分布的标准差默认值为0.01。
2021-12-01 10:29:28 +08:00
**样例:**
2021-12-01 10:29:28 +08:00
>>> import mindspore
2021-12-13 18:05:59 +08:00
>>> from mindspore.common.initializer import initializer, TruncatedNormal
>>> tensor1 = initializer(TruncatedNormal(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('truncatedNormal', [1,2,3], mindspore.float32)
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
.. py:class:: mindspore.common.initializer.Normal(sigma=0.01, mean=0.0)
2021-12-18 22:53:06 +08:00
生成一个服从正态分布N(sigma, mean)的随机数组用于初始化Tensor。
2021-12-01 10:29:28 +08:00
.. math::
f(x) = \frac{1} {\sqrt{2*π} * sigma}exp(-\frac{(x - mean)^2} {2*{sigma}^2})
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
**参数:**
2021-12-01 15:58:19 +08:00
- **sigma** (float) - 正态分布的标准差默认值为0.01。
- **mean** (float) - 正态分布的均值默认值为0.0。
2021-12-04 20:36:47 +08:00
2021-12-13 18:05:59 +08:00
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, Normal
>>> tensor1 = initializer(Normal(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('normal', [1,2,3], mindspore.float32)
2021-12-01 10:29:28 +08:00
.. py:class:: mindspore.common.initializer.Uniform(scale=0.07)
2021-12-18 22:53:06 +08:00
生成一个服从均匀分布U(-scale, scale)的随机数组用于初始化Tensor。
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
**参数:**
2021-12-13 18:05:59 +08:00
**scale** (float) - 均匀分布的边界默认值为0.07。
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, Uniform
>>> tensor1 = initializer(Uniform(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('uniform', [1,2,3], mindspore.float32)
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
.. py:class:: mindspore.common.initializer.HeUniform(negative_slope=0, mode="fan_in", nonlinearity="leaky_relu")
2021-12-18 22:53:06 +08:00
生成一个服从HeKaiming均匀分布U(-boundary, boundary)的随机数组用于初始化Tensor。
HeKaiming均匀分布范围的上下界
2021-12-01 10:29:28 +08:00
.. math::
boundary = \sqrt{\frac{6}{(1 + a^2) \times \text{fan_in}}}
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
**参数:**
2021-12-01 15:58:19 +08:00
- **negative_slope** (int, float, bool) - 本层激活函数的负数区间斜率(仅适用于非线性激活函数"leaky_relu"默认值为0。
- **mode** (str) - 可选"fan_in"或"fan_out""fan_in"会保留前向传递中权重方差的量级,"fan_out"会保留反向传递的量级,默认为"fan_in"。
- **nonlinearity** (str) - 非线性激活函数,推荐使用"relu"或"leaky_relu",默认为"leaky_relu"。
2021-12-04 20:36:47 +08:00
2021-12-13 18:05:59 +08:00
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, HeUniform
>>> tensor1 = initializer(HeUniform(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('he_uniform', [1,2,3], mindspore.float32)
2021-12-01 10:29:28 +08:00
.. py:class:: mindspore.common.initializer.HeNormal(negative_slope=0, mode="fan_in", nonlinearity="leaky_relu")
2021-12-18 22:53:06 +08:00
生成一个服从HeKaiming正态分布N(0, sigma^2)的随机数组用于初始化Tensor其中
2021-12-01 10:29:28 +08:00
.. math::
sigma = \frac{gain} {\sqrt{N}}
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
其中gain是一个可选的缩放因子。如果mode是"fan_in" N是权重Tensor中输入单元的数量如果mode是"fan_out" N是权重Tensor中输出单元的数量。
HeUniform 算法的详细信息,请查看 https://arxiv.org/abs/1502.01852。
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
**参数:**
2021-12-01 15:58:19 +08:00
- **negative_slope** (int, float, bool) - 本层激活函数的负数区间斜率(仅适用于非线性激活函数"leaky_relu"默认值为0。
- **mode** (str) - 可选"fan_in"或"fan_out""fan_in"会保留前向传递中权重方差的量级,"fan_out"会保留反向传递的量级,默认为"fan_in"。
- **nonlinearity** (str) - 非线性激活函数,推荐使用"relu"或"leaky_relu",默认为"leaky_relu"。
2021-12-04 20:36:47 +08:00
2021-12-13 18:05:59 +08:00
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, HeNormal
>>> tensor1 = initializer(HeNormal(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('he_normal', [1,2,3], mindspore.float32)
2021-12-01 10:29:28 +08:00
.. py:class:: mindspore.common.initializer.XavierUniform(gain=1)
2021-12-18 22:53:06 +08:00
生成一个服从Xarvier均匀分布U(-boundary, boundary)的随机数组用于初始化Tensor均匀分布的取值范围为[-boundary, boundary],其中:
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
.. math::
boundary = gain * \sqrt{\frac{6}{n_{in} + n_{out}}}
2021-12-04 20:36:47 +08:00
2021-12-04 18:37:47 +08:00
- :math:`gain` 是一个可选的缩放因子。
- :math:`n_{in}` 为权重Tensor中输入单元的数量。
- :math:`n_{out}` 为权重Tensor中输出单元的数量。
2021-12-01 10:29:28 +08:00
有关 XavierUniform 算法的详细信息,请查看 http://proceedings.mlr.press/v9/glorot10a.html。
2021-12-04 20:36:47 +08:00
**参数:**
2021-12-13 18:05:59 +08:00
**gain** (float) - 可选的缩放因子默认值为1。
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, XavierUniform
>>> tensor1 = initializer(XavierUniform(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('xavier_uniform', [1,2,3], mindspore.float32)
2021-12-01 10:29:28 +08:00
2021-12-13 18:05:59 +08:00
.. py:class:: mindspore.common.initializer.One
2021-12-01 10:29:28 +08:00
生成一个值全为1的常量数组用于初始化Tensor。
2021-12-04 20:36:47 +08:00
2021-12-13 18:05:59 +08:00
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, One
>>> tensor1 = initializer(One(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('ones', [1,2,3], mindspore.float32)
.. py:class:: mindspore.common.initializer.Zero
2021-12-01 10:29:28 +08:00
生成一个值全为0的常量数组用于初始化Tensor。
2021-12-04 20:36:47 +08:00
2021-12-13 18:05:59 +08:00
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, Zero
>>> tensor1 = initializer(Zero(), [1,2,3], mindspore.float32)
>>> tensor2 = initializer('zeros', [1,2,3], mindspore.float32)
2021-12-01 10:29:28 +08:00
.. py:class:: mindspore.common.initializer.Constant(value)
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
生成一个常量数组用于初始化Tensor。
2021-12-04 20:36:47 +08:00
2021-12-01 10:29:28 +08:00
**参数:**
2021-12-13 18:05:59 +08:00
**value** (Union[int, numpy.ndarray]) - 用于初始化的常数值或者数组。
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer
>>> tensor1 = initializer(0, [1,2,3], mindspore.float32)
>>> tensor2 = initializer(5, [1,2,3], mindspore.float32)
.. py:function:: mindspore.common.initializer.initializer(init, shape=None, dtype=mstype.float32)
创建并初始化一个Tensor。
**参数:**
- **init** (Union[Tensor, str, Initializer, numbers.Number]) 初始化方式。
- **str** - `init` 是继承自 `Initializer` 的类的别名,实际使用时会调用相应的类。`init` 的值可以是"normal"、"ones"或"zeros"等。
- **Initializer** - `init` 是继承自 `Initializer` 用于初始化Tensor的类。
2021-12-18 22:53:06 +08:00
- **numbers.Number** - 用于初始化Tensor的常量。
2021-12-13 18:05:59 +08:00
- **shape** (Union[[tuple, list, int]) - 被初始化的Tensor的shape默认值为None。
- **dtype** (mindspore.dtype) 被初始化的Tensor的数据类型默认值为 `mindspore.float32`
**返回:**
Tensor返回一个张量对象。
**异常:**
- **TypeError** - 参数 `init` 的类型不正确。
2021-12-18 22:53:06 +08:00
- **ValueError** - 当 `init` 传入Tensor对象时 `init` 的shape与形参 `shape` 内的数值不一致。
2021-12-13 18:05:59 +08:00
**样例:**
>>> import mindspore
>>> from mindspore.common.initializer import initializer, One
>>> tensor = initializer('ones', [1, 2, 3], mindspore.float32)
>>> tensor = initializer(One(), [1, 2, 3], mindspore.float32)
>>> tensor = initializer(0, [1, 2, 3], mindspore.float32)