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 8.5 kB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. mindspore.common.initializer
  2. =============================
  3. 初始化神经元参数。
  4. .. py:class:: mindspore.common.initializer.Initializer(**kwargs)
  5. 初始化器的抽象基类。
  6. **参数:**
  7. - **kwargs** (dict) – `Initializer` 的关键字参数。
  8. .. py:function:: mindspore.common.initializer.initializer(init, shape=None, dtype=mstype.float32)
  9. 创建并初始化一个Tensor。
  10. **参数:**
  11. - **init** (Union[Tensor, str, Initializer, numbers.Number]) – 初始化方式。
  12. - **str** - `init` 是继承自 `Initializer` 的类的别名,实际使用时会调用相应的类。`init` 的值可以是"normal"、"ones"或"zeros"等。
  13. - **Initializer** - `init` 是继承自 `Initializer` ,用于初始化Tensor的类。
  14. - **numbers.Number** - 用于初始化Tensor的常量。
  15. - **Tensor** - 用于初始化Tensor的Tensor。
  16. - **shape** (Union[tuple, list, int]) - 被初始化的Tensor的shape,默认值为None。
  17. - **dtype** (mindspore.dtype) – 被初始化的Tensor的数据类型,默认值为 `mindspore.float32` 。
  18. **返回:**
  19. Tensor。
  20. **异常:**
  21. - **TypeError** - 参数 `init` 的类型不正确。
  22. - **ValueError** - 当 `init` 传入Tensor对象时, `init` 的shape与形参 `shape` 内的数值不一致。
  23. .. py:class:: mindspore.common.initializer.TruncatedNormal(sigma=0.01)
  24. 生成一个服从截断正态(高斯)分布的随机数组用于初始化Tensor。
  25. **参数:**
  26. **sigma** (float) - 截断正态分布的标准差,默认值为0.01。
  27. .. py:class:: mindspore.common.initializer.Normal(sigma=0.01, mean=0.0)
  28. 生成一个服从正态分布 :math:`{N}(\text{sigma}, \text{mean})` 的随机数组用于初始化Tensor。
  29. .. math::
  30. f(x) = \frac{1} {\sqrt{2*π} * sigma}exp(-\frac{(x - mean)^2} {2*{sigma}^2})
  31. **参数:**
  32. - **sigma** (float) - 正态分布的标准差,默认值为0.01。
  33. - **mean** (float) - 正态分布的均值,默认值为0.0。
  34. .. py:class:: mindspore.common.initializer.Uniform(scale=0.07)
  35. 生成一个服从均匀分布 :math:`{U}(-\text{scale}, \text{scale})` 的随机数组用于初始化Tensor。
  36. **参数:**
  37. **scale** (float) - 均匀分布的边界,默认值为0.07。
  38. .. py:class:: mindspore.common.initializer.HeUniform(negative_slope=0, mode='fan_in', nonlinearity='leaky_relu')
  39. 生成一个服从HeKaiming均匀分布 :math:`{U}(-\text{boundary}, \text{boundary})` 的随机数组用于初始化Tensor,其中:
  40. .. math::
  41. boundary = \text{gain} \times \sqrt{\frac{3}{fan\_mode}}
  42. :math:`gain` 是一个可选的缩放因子。 :math:`fan\_mode` 是权重Tensor中输入或输出单元的数量,取决于 `mode` 是'fan_in'或是'fan_out'。
  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. .. py:class:: mindspore.common.initializer.HeNormal(negative_slope=0, mode='fan_in', nonlinearity='leaky_relu')
  48. 生成一个服从HeKaiming正态分布 :math:`{N}(0, \text{sigma}^2)` 的随机数组用于初始化Tensor,其中:
  49. .. math::
  50. sigma = \frac{gain} {\sqrt{fan\_mode}}
  51. 其中, :math:`gain` 是一个可选的缩放因子。如果 `mode` 是'fan_in',则 :math:`fan\_mode` 是权重Tensor中输入单元的数量,如果 `mode` 是'fan_out',
  52. :math:`fan\_mode` 是权重Tensor中输出单元的数量。
  53. HeUniform 算法的详细信息,请查看 https://arxiv.org/abs/1502.01852。
  54. **参数:**
  55. - **negative_slope** (int, float, bool) - 本层激活函数的负数区间斜率(仅适用于非线性激活函数'leaky_relu'),默认值为0。
  56. - **mode** (str) - 可选'fan_in'或'fan_out','fan_in'会保留前向传递中权重方差的量级,'fan_out'会保留反向传递的量级,默认为'fan_in'。
  57. - **nonlinearity** (str) - 非线性激活函数,推荐使用'relu'或'leaky_relu',默认为'leaky_relu'。
  58. .. py:class:: mindspore.common.initializer.XavierUniform(gain=1)
  59. 生成一个服从Xarvier均匀分布U(-boundary, boundary)的随机数组用于初始化Tensor,均匀分布的取值范围为[-boundary, boundary],其中:
  60. .. math::
  61. boundary = gain * \sqrt{\frac{6}{n_{in} + n_{out}}}
  62. :math:`gain` 是一个可选的缩放因子。:math:`n_{in}` 为权重Tensor中输入单元的数量。:math:`n_{out}` 为权重Tensor中输出单元的数量。
  63. 有关 XavierUniform 算法的详细信息,请查看 http://proceedings.mlr.press/v9/glorot10a.html。
  64. **参数:**
  65. **gain** (float) - 可选的缩放因子,默认值为1。
  66. .. py:class:: mindspore.common.initializer.One(**kwargs)
  67. 生成一个值全为1的常量数组用于初始化Tensor。
  68. .. py:class:: mindspore.common.initializer.Zero(**kwargs)
  69. 生成一个值全为0的常量数组用于初始化Tensor。
  70. .. py:class:: mindspore.common.initializer.Constant(value)
  71. 生成一个常量数组用于初始化Tensor。
  72. **参数:**
  73. **value** (Union[int, numpy.ndarray]) - 用于初始化的常数值或者数组。
  74. .. automodule:: mindspore.common.initializer
  75. :members:
  76. .. py:class:: mindspore.common.initializer.Identity(**kwargs)
  77. 生成一个2维的单位矩阵用于初始化Tensor。
  78. **异常:**
  79. - **ValueError** - 被初始化的Tensor的维度不等于2。
  80. .. py:class:: mindspore.common.initializer.Sparse(sparsity, sigma=0.01)
  81. 生成一个2维的稀疏矩阵用于初始化Tensor。矩阵非0的位置的值服从正态分布 :math:`N(0, 0.01)` 。
  82. **参数:**
  83. - **sparsity** (float) - 矩阵每列中元素被置0的比例。
  84. - **sigma** (float) - 正态分布的标准差,默认值为0.01。
  85. **异常:**
  86. - **ValueError** - 被初始化的Tensor的维度不等于2。
  87. .. py:class:: mindspore.common.initializer.Dirac(groups=1)
  88. 利用Dirac delta函数生成一个矩阵用于初始化Tensor。这种初始化方式将会保留卷积层的输入。对于group
  89. 卷积,通道的每个分组会被分别保留。
  90. **参数:**
  91. **groups** (int) - 卷积层中的分组,默认值为1。
  92. **异常:**
  93. - **ValueError** - 被初始化的Tensor的维度不在[3, 4, 5]的范围内。
  94. - **ValueError** - 初始化的Tensor的第一个维度不能被groups整除。
  95. .. py:class:: mindspore.common.initializer.Orthogonal(gain=1.)
  96. 生成一个正交或半正交矩阵用于初始化Tensor。被初始化的Tensor的维度至少为2。
  97. 如果维度大于2,多余的维度将会被展平。
  98. **参数:**
  99. **gain** (float) - 可选的比例因子,默认值为1。
  100. **异常:**
  101. - **ValueError** - 被初始化的Tensor的维度小于2。
  102. .. py:class:: mindspore.common.initializer.VarianceScaling(scale=1.0, mode='fan_in', distribution='truncated_normal')
  103. 生成一个随机的矩阵用于初始化Tensor。
  104. 当 `distribution` 是'truncated_normal'或者'untruncated_normal'时,矩阵中的值将服从均值为0,标准差
  105. 为 :math:`stddev = \sqrt{\frac{scale}{n}}` 的截断或者非截断正太分布。如果 `mode` 是'fan_in', :math:`n` 是输入单元的数量;
  106. 如果 `mode` 是'fan_out', :math:`n` 是输出单元的数量;如果 `mode` 是'fan_avg', :math:`n` 是输入输出单元数量的均值。
  107. 当 `distribution` 是'uniform'时,矩阵中的值将服从均匀分布 :math:`[-\sqrt{\frac{3*scale}{n}}, \sqrt{\frac{3*scale}{n}}]`。
  108. **参数:**
  109. - **scale** (float) - 比例因子,默认值为1.0。
  110. - **mode** (str) - 其值应为'fan_in','fan_out'或者'fan_avg',默认值为'fan_in'。
  111. - **distribution** (str) - 用于采样的分布类型。它可以是 'uniform','truncated_normal'或'untruncated_normal',默认值为'truncated_normal'。
  112. **异常:**
  113. - **ValueError** - `scale` 小于等于0。
  114. - **ValueError** - `mode` 不是'fan_in','fan_out'或者'fan_avg'。
  115. - **ValueError** - `distribution` 不是'truncated_normal','untruncated_normal'或者'uniform'。