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.nn.probability.distribution.Gamma.rst 5.6 kB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. mindspore.nn.probability.distribution.Gamma
  2. ================================================
  3. .. py:class:: mindspore.nn.probability.distribution.Gamma(concentration=None, rate=None, seed=None, dtype=mstype.float3, name='Gamma')
  4. 伽马分布(Gamma distribution)。
  5. 连续随机分布,取值范围为 :math:`(0, \inf)` ,概率密度函数为
  6. .. math::
  7. f(x, \alpha, \beta) = \beta^\alpha / \Gamma(\alpha) x^{\alpha - 1} \exp(-\beta x).
  8. 其中 :math:`G` 为 Gamma 函数。
  9. **参数:**
  10. - **concentration** (int, float, list, numpy.ndarray, Tensor) - 浓度,也被称为伽马分布的alpha。默认值:None。
  11. - **rate** (int, float, list, numpy.ndarray, Tensor) - 逆尺度参数,也被称为伽马分布的beta。默认值:None。
  12. - **seed** (int) - 采样时使用的种子。如果为None,则使用全局种子。默认值:None。
  13. - **dtype** (mindspore.dtype) - 事件样例的类型。默认值:mindspore.float32。
  14. - **name** (str) - 分布的名称。默认值:'Gamma'。
  15. **支持平台:**
  16. ``Ascend``
  17. .. note::
  18. - `concentration` 和 `rate` 中的元素必须大于零。
  19. - `dtype` 必须是float,因为伽马分布是连续的。
  20. **异常:**
  21. - **ValueError** - `concentration` 或者 `rate` 中元素小于0。
  22. - **TypeError** - `dtype` 不是float的子类。
  23. **样例:**
  24. >>> import mindspore
  25. >>> import mindspore.nn as nn
  26. >>> import mindspore.nn.probability.distribution as msd
  27. >>> from mindspore import Tensor
  28. >>> # 初始化concentration为3.0和rate为4.0的伽马分布。
  29. >>> g1 = msd.Gamma([3.0], [4.0], dtype=mindspore.float32)
  30. >>> # 伽马分布可以在没有参数的情况下初始化。
  31. >>> # 在这种情况下,`concentration`和`rate`必须通过参数传入。
  32. >>> g2 = msd.Gamma(dtype=mindspore.float32)
  33. >>> # 下面是用于测试的Tensor
  34. >>> value = Tensor([1.0, 2.0, 3.0], dtype=mindspore.float32)
  35. >>> concentration_a = Tensor([2.0], dtype=mindspore.float32)
  36. >>> rate_a = Tensor([2.0, 2.0, 2.0], dtype=mindspore.float32)
  37. >>> concentration_b = Tensor([1.0], dtype=mindspore.float32)
  38. >>> rate_b = Tensor([1.0, 1.5, 2.0], dtype=mindspore.float32)
  39. >>>
  40. >>> # 公共接口对应的概率函数的私有接口,包括`prob`、`log_prob`、`cdf`、`log_cdf`、`survival_function`、`log_survival`,具有以下相同的参数。
  41. >>> # 参数:
  42. >>> # value (Tensor):要评估的值。
  43. >>> # concentration (Tensor):分布的浓度。默认值:self._concentration。
  44. >>> # rate (Tensor):分布的逆尺度。默认值:self._rate。
  45. >>> # `prob`示例。
  46. >>> # 通过将'prob'替换为函数的名称,可以对其他概率函数进行类似的调用
  47. >>> ans = g1.prob(value)
  48. >>> print(ans.shape)
  49. (3,)
  50. >>> # 根据分布b进行评估。
  51. >>> ans = g1.prob(value, concentration_b, rate_b)
  52. >>> print(ans.shape)
  53. (3,)
  54. >>> # 在g2的函数调用期间必须传入`concentration`和`rate`。
  55. >>> ans = g2.prob(value, concentration_a, rate_a)
  56. >>> print(ans.shape)
  57. (3,)
  58. >>> # 函数`mean`、`sd`、`mode`、`var`和`entropy`具有相同的参数。
  59. >>> # 参数:
  60. >>> # concentration (Tensor):分布的浓度。默认值:self._concentration。
  61. >>> # rate (Tensor):分布的逆尺度。默认值:self._rate。
  62. >>># `mean`、`sd`、`mode`、`var`和`entropy`的示例相似。
  63. >>> ans = g1.mean()
  64. >>> print(ans.shape)
  65. (1,)
  66. >>> ans = g1.mean(concentration_b, rate_b)
  67. >>> print(ans.shape)
  68. (3,)
  69. >>> # 在函数调用期间必须传入`concentration`和`rate`。
  70. >>> ans = g2.mean(concentration_a, rate_a)
  71. >>> print(ans.shape)
  72. (3,)
  73. >>> # 'kl_loss'和'cross_entropy'的接口相同:
  74. >>> # 参数:
  75. >>> # dist (str):分布的类型。仅支持"Gamma"。
  76. >>> # concentration_b (Tensor):分布b的浓度。
  77. >>> # rate_b (Tensor):分布b的逆尺度。
  78. >>> # concentration_a (Tensor):分布a的浓度。默认值:self._concentration。
  79. >>> # rate_a (Tensor):分布a的逆尺度。默认值:self._rate。
  80. >>> # `kl_loss`示例。`cross_entropy`也类似。
  81. >>> ans = g1.kl_loss('Gamma', concentration_b, rate_b)
  82. >>> print(ans.shape)
  83. (3,)
  84. >>> ans = g1.kl_loss('Gamma', concentration_b, rate_b, concentration_a, rate_a)
  85. >>> print(ans.shape)
  86. (3,)
  87. >>> # 必须传入额外的`concentration`和`rate`。
  88. >>> ans = g2.kl_loss('Gamma', concentration_b, rate_b, concentration_a, rate_a)
  89. >>> print(ans.shape)
  90. (3,)
  91. >>> # `sample`示例。
  92. >>> # 参数:
  93. >>> # shape (tuple):样本的shape。默认值:()
  94. >>> # concentration (Tensor):分布的浓度。默认值:self._concentration。
  95. >>> # rate (Tensor):分布的逆尺度。默认值:self._rate。
  96. >>> ans = g1.sample()
  97. >>> print(ans.shape)
  98. (1,)
  99. >>> ans = g1.sample((2,3))
  100. >>> print(ans.shape)
  101. (2, 3, 1)
  102. >>> ans = g1.sample((2,3), concentration_b, rate_b)
  103. >>> print(ans.shape)
  104. (2, 3, 3)
  105. >>> ans = g2.sample((2,3), concentration_a, rate_a)
  106. >>> print(ans.shape)
  107. (2, 3, 3)
  108. .. py:method:: concentration
  109. :property:
  110. 返回分布的浓度(也称为伽马分布的alpha)。
  111. **返回:**
  112. Tensor, concentration 的值。
  113. .. py:method:: rate
  114. :property:
  115. 返回分布的逆尺度(也称为伽马分布的beta)。
  116. **返回:**
  117. Tensor, rate 的值。