You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

mindspore.common.initializer.rst 7.8 kB

4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. mindspore.common.initializer
  2. =============================
  3. 初始化神经元参数。
  4. .. py:class:: mindspore.common.initializer.Initializer(**kwargs)
  5. 初始化器的抽象基类。
  6. **参数:**
  7. - **kwargs** (dict) – `Initializer` 的关键字参数。
  8. .. py:class:: mindspore.common.initializer.TruncatedNormal(sigma=0.01)
  9. 生成一个数组用于初始化Tensor,数组中的数值从截断正态分布中采样得到。
  10. **参数:**
  11. **sigma** (float) - 截断正态分布的标准差,默认值为0.01。
  12. **样例:**
  13. >>> import mindspore
  14. >>> from mindspore.common.initializer import initializer, TruncatedNormal
  15. >>> tensor1 = initializer(TruncatedNormal(), [1,2,3], mindspore.float32)
  16. >>> tensor2 = initializer('truncatedNormal', [1,2,3], mindspore.float32)
  17. .. py:class:: mindspore.common.initializer.Normal(sigma=0.01, mean=0.0)
  18. 生成一个数组用于初始化Tensor,数组中的数值从正态分布N(sigma, mean)中采样得到。
  19. .. math::
  20. f(x) = \frac{1} {\sqrt{2*π} * sigma}exp(-\frac{(x - mean)^2} {2*{sigma}^2})
  21. **参数:**
  22. - **sigma** (float) - 正态分布的标准差,默认值为0.01。
  23. - **mean** (float) - 正态分布的均值,默认值为0.0。
  24. **样例:**
  25. >>> import mindspore
  26. >>> from mindspore.common.initializer import initializer, Normal
  27. >>> tensor1 = initializer(Normal(), [1,2,3], mindspore.float32)
  28. >>> tensor2 = initializer('normal', [1,2,3], mindspore.float32)
  29. .. py:class:: mindspore.common.initializer.Uniform(scale=0.07)
  30. 生成一个数组用于初始化Tensor,数组中的数值从均匀分布U(-scale, scale)中采样得到。
  31. **参数:**
  32. **scale** (float) - 均匀分布的边界,默认值为0.07。
  33. **样例:**
  34. >>> import mindspore
  35. >>> from mindspore.common.initializer import initializer, Uniform
  36. >>> tensor1 = initializer(Uniform(), [1,2,3], mindspore.float32)
  37. >>> tensor2 = initializer('uniform', [1,2,3], mindspore.float32)
  38. .. py:class:: mindspore.common.initializer.HeUniform(negative_slope=0, mode="fan_in", nonlinearity="leaky_relu")
  39. 生成一个数组用于初始化Tensor,数组中的数值从HeKaiming均匀分布U[-boundary,boundary]中采样得到,其中
  40. .. math::
  41. boundary = \sqrt{\frac{6}{(1 + a^2) \times \text{fan_in}}}
  42. 是HeUniform分布的边界。
  43. **参数:**
  44. - **negative_slope** (int, float, bool) - 本层激活函数的负数区间斜率(仅适用于非线性激活函数"leaky_relu"),默认值为0。
  45. - **mode** (str) - 可选"fan_in"或"fan_out","fan_in"会保留前向传递中权重方差的量级,"fan_out"会保留反向传递的量级,默认为"fan_in"。
  46. - **nonlinearity** (str) - 非线性激活函数,推荐使用"relu"或"leaky_relu",默认为"leaky_relu"。
  47. **样例:**
  48. >>> import mindspore
  49. >>> from mindspore.common.initializer import initializer, HeUniform
  50. >>> tensor1 = initializer(HeUniform(), [1,2,3], mindspore.float32)
  51. >>> tensor2 = initializer('he_uniform', [1,2,3], mindspore.float32)
  52. .. py:class:: mindspore.common.initializer.HeNormal(negative_slope=0, mode="fan_in", nonlinearity="leaky_relu")
  53. 生成一个数组用于初始化Tensor,数组中的数值从HeKaiming正态分布N(0, sigma^2)中采样得到,其中
  54. .. math::
  55. sigma = \frac{gain} {\sqrt{N}}
  56. 其中,gain是一个可选的缩放因子。如果mode是"fan_in", N是权重Tensor中输入单元的数量,如果mode是"fan_out", N是权重Tensor中输出单元的数量。
  57. HeUniform 算法的详细信息,请查看 https://arxiv.org/abs/1502.01852。
  58. **参数:**
  59. - **negative_slope** (int, float, bool) - 本层激活函数的负数区间斜率(仅适用于非线性激活函数"leaky_relu"),默认值为0。
  60. - **mode** (str) - 可选"fan_in"或"fan_out","fan_in"会保留前向传递中权重方差的量级,"fan_out"会保留反向传递的量级,默认为"fan_in"。
  61. - **nonlinearity** (str) - 非线性激活函数,推荐使用"relu"或"leaky_relu",默认为"leaky_relu"。
  62. **样例:**
  63. >>> import mindspore
  64. >>> from mindspore.common.initializer import initializer, HeNormal
  65. >>> tensor1 = initializer(HeNormal(), [1,2,3], mindspore.float32)
  66. >>> tensor2 = initializer('he_normal', [1,2,3], mindspore.float32)
  67. .. py:class:: mindspore.common.initializer.XavierUniform(gain=1)
  68. 生成一个数组用于初始化Tensor,数组中的数值从Xarvier均匀分布U[-boundary,boundary]中采样得到,其中
  69. .. math::
  70. boundary = gain * \sqrt{\frac{6}{n_{in} + n_{out}}}
  71. - :math:`gain` 是一个可选的缩放因子。
  72. - :math:`n_{in}` 为权重Tensor中输入单元的数量。
  73. - :math:`n_{out}` 为权重Tensor中输出单元的数量。
  74. 有关 XavierUniform 算法的详细信息,请查看 http://proceedings.mlr.press/v9/glorot10a.html。
  75. **参数:**
  76. **gain** (float) - 可选的缩放因子,默认值为1。
  77. **样例:**
  78. >>> import mindspore
  79. >>> from mindspore.common.initializer import initializer, XavierUniform
  80. >>> tensor1 = initializer(XavierUniform(), [1,2,3], mindspore.float32)
  81. >>> tensor2 = initializer('xavier_uniform', [1,2,3], mindspore.float32)
  82. .. py:class:: mindspore.common.initializer.One
  83. 生成一个值全为1的常量数组用于初始化Tensor。
  84. **样例:**
  85. >>> import mindspore
  86. >>> from mindspore.common.initializer import initializer, One
  87. >>> tensor1 = initializer(One(), [1,2,3], mindspore.float32)
  88. >>> tensor2 = initializer('ones', [1,2,3], mindspore.float32)
  89. .. py:class:: mindspore.common.initializer.Zero
  90. 生成一个值全为0的常量数组用于初始化Tensor。
  91. **样例:**
  92. >>> import mindspore
  93. >>> from mindspore.common.initializer import initializer, Zero
  94. >>> tensor1 = initializer(Zero(), [1,2,3], mindspore.float32)
  95. >>> tensor2 = initializer('zeros', [1,2,3], mindspore.float32)
  96. .. py:class:: mindspore.common.initializer.Constant(value)
  97. 生成一个常量数组用于初始化Tensor。
  98. **参数:**
  99. **value** (Union[int, numpy.ndarray]) - 用于初始化的常数值或者数组。
  100. **样例:**
  101. >>> import mindspore
  102. >>> from mindspore.common.initializer import initializer
  103. >>> tensor1 = initializer(0, [1,2,3], mindspore.float32)
  104. >>> tensor2 = initializer(5, [1,2,3], mindspore.float32)
  105. .. py:function:: mindspore.common.initializer.initializer(init, shape=None, dtype=mstype.float32)
  106. 创建并初始化一个Tensor。
  107. **参数:**
  108. - **init** (Union[Tensor, str, Initializer, numbers.Number]) – 初始化方式。
  109. - **str** - `init` 是继承自 `Initializer` 的类的别名,实际使用时会调用相应的类。`init` 的值可以是"normal"、"ones"或"zeros"等。
  110. - **Initializer** - `init` 是继承自 `Initializer` ,用于初始化Tensor的类。
  111. - **numbers.Number** - 调用常量来初始化张量。
  112. - **shape** (Union[[tuple, list, int]) - 被初始化的Tensor的shape,默认值为None。
  113. - **dtype** (mindspore.dtype) – 被初始化的Tensor的数据类型,默认值为 `mindspore.float32` 。
  114. **返回:**
  115. Tensor,返回一个张量对象。
  116. **异常:**
  117. - **TypeError** - 参数 `init` 的类型不正确。
  118. - **ValueError** - 通过 `init` 传入的Tensor的shape和作为参数传入的shape不一致。
  119. **样例:**
  120. >>> import mindspore
  121. >>> from mindspore.common.initializer import initializer, One
  122. >>> tensor = initializer('ones', [1, 2, 3], mindspore.float32)
  123. >>> tensor = initializer(One(), [1, 2, 3], mindspore.float32)
  124. >>> tensor = initializer(0, [1, 2, 3], mindspore.float32)