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.Beta.rst 5.8 kB

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