mindspore 2.0.0a0__cp37-cp37m-win_amd64.whl → 2.0.0rc1__cp37-cp37m-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mindspore might be problematic. Click here for more details.

Files changed (655) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +4 -2
  3. mindspore/_c_dataengine.cp37-win_amd64.pyd +0 -0
  4. mindspore/_c_expression.cp37-win_amd64.pyd +0 -0
  5. mindspore/_c_mindrecord.cp37-win_amd64.pyd +0 -0
  6. mindspore/_check_jit_forbidden_api.py +102 -0
  7. mindspore/_checkparam.py +1066 -1001
  8. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +4 -3
  9. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +50 -48
  10. mindspore/_extends/parallel_compile/akg_compiler/util.py +9 -4
  11. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +4 -4
  12. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +9 -4
  13. mindspore/_extends/parse/__init__.py +5 -3
  14. mindspore/_extends/parse/namespace.py +16 -1
  15. mindspore/_extends/parse/parser.py +107 -22
  16. mindspore/_extends/parse/resources.py +0 -7
  17. mindspore/_extends/parse/standard_method.py +885 -413
  18. mindspore/amp.py +52 -57
  19. mindspore/boost/boost.py +2 -2
  20. mindspore/boost/boost_cell_wrapper.py +38 -20
  21. mindspore/boost/dim_reduce.py +3 -3
  22. mindspore/boost/group_loss_scale_manager.py +1 -1
  23. mindspore/common/__init__.py +4 -6
  24. mindspore/common/_decorator.py +2 -0
  25. mindspore/common/_register_for_adapter.py +55 -0
  26. mindspore/common/_stub_tensor.py +201 -0
  27. mindspore/common/_utils.py +41 -7
  28. mindspore/common/api.py +215 -141
  29. mindspore/common/dtype.py +8 -1
  30. mindspore/common/dump.py +2 -2
  31. mindspore/common/initializer.py +4 -2
  32. mindspore/common/jit_config.py +17 -13
  33. mindspore/common/mutable.py +33 -13
  34. mindspore/common/parameter.py +23 -21
  35. mindspore/common/seed.py +8 -24
  36. mindspore/common/sparse_tensor.py +62 -41
  37. mindspore/common/tensor.py +852 -1154
  38. mindspore/communication/__init__.py +2 -2
  39. mindspore/communication/_comm_helper.py +11 -4
  40. mindspore/communication/management.py +22 -21
  41. mindspore/config/op_info.config +501 -1008
  42. mindspore/context.py +201 -23
  43. mindspore/dataset/__init__.py +6 -6
  44. mindspore/dataset/audio/__init__.py +7 -7
  45. mindspore/dataset/audio/transforms.py +670 -30
  46. mindspore/dataset/audio/utils.py +47 -4
  47. mindspore/dataset/audio/validators.py +223 -1
  48. mindspore/dataset/callback/ds_callback.py +2 -2
  49. mindspore/dataset/core/config.py +210 -14
  50. mindspore/dataset/core/validator_helpers.py +2 -2
  51. mindspore/{parallel/nn/layers.py → dataset/debug/__init__.py} +7 -8
  52. mindspore/dataset/debug/debug_hook.py +65 -0
  53. mindspore/dataset/debug/pre_defined_hook.py +67 -0
  54. mindspore/dataset/engine/__init__.py +7 -3
  55. mindspore/dataset/engine/cache_client.py +1 -1
  56. mindspore/dataset/engine/datasets.py +322 -66
  57. mindspore/dataset/engine/datasets_audio.py +80 -76
  58. mindspore/dataset/engine/datasets_standard_format.py +51 -38
  59. mindspore/dataset/engine/datasets_text.py +232 -118
  60. mindspore/dataset/engine/datasets_user_defined.py +41 -17
  61. mindspore/dataset/engine/datasets_vision.py +746 -225
  62. mindspore/dataset/engine/graphdata.py +75 -10
  63. mindspore/dataset/engine/iterators.py +45 -5
  64. mindspore/dataset/engine/offload.py +48 -28
  65. mindspore/dataset/engine/validators.py +117 -8
  66. mindspore/dataset/text/__init__.py +6 -5
  67. mindspore/dataset/text/transforms.py +86 -3
  68. mindspore/dataset/text/utils.py +6 -4
  69. mindspore/dataset/text/validators.py +25 -0
  70. mindspore/dataset/transforms/__init__.py +3 -2
  71. mindspore/dataset/transforms/c_transforms.py +1 -1
  72. mindspore/dataset/transforms/transforms.py +2 -2
  73. mindspore/dataset/utils/__init__.py +2 -1
  74. mindspore/dataset/utils/line_reader.py +121 -0
  75. mindspore/dataset/vision/__init__.py +2 -3
  76. mindspore/dataset/vision/c_transforms.py +9 -9
  77. mindspore/dataset/vision/py_transforms.py +5 -5
  78. mindspore/dataset/vision/py_transforms_util.py +2 -0
  79. mindspore/dataset/vision/transforms.py +160 -161
  80. mindspore/dataset/vision/utils.py +3 -3
  81. mindspore/experimental/map_parameter.py +38 -26
  82. mindspore/include/OWNERS +0 -1
  83. mindspore/include/api/callback/callback.h +9 -13
  84. mindspore/include/api/callback/ckpt_saver.h +2 -2
  85. mindspore/include/api/callback/loss_monitor.h +2 -2
  86. mindspore/include/api/callback/lr_scheduler.h +5 -5
  87. mindspore/include/api/callback/time_monitor.h +2 -2
  88. mindspore/include/api/callback/train_accuracy.h +4 -6
  89. mindspore/include/api/cfg.h +19 -6
  90. mindspore/include/api/context.h +44 -9
  91. mindspore/include/api/delegate.h +1 -1
  92. mindspore/include/api/metrics/accuracy.h +2 -2
  93. mindspore/include/api/metrics/metrics.h +4 -3
  94. mindspore/include/api/model.h +9 -4
  95. mindspore/include/api/model_parallel_runner.h +2 -2
  96. mindspore/include/api/net.h +12 -11
  97. mindspore/include/api/serialization.h +19 -3
  98. mindspore/include/api/types.h +3 -3
  99. mindspore/include/dataset/constants.h +7 -0
  100. mindspore/include/dataset/text.h +59 -0
  101. mindspore/jpeg62.dll +0 -0
  102. mindspore/log.py +1 -1
  103. mindspore/mindrecord/filereader.py +18 -0
  104. mindspore/mindrecord/filewriter.py +197 -34
  105. mindspore/mindrecord/shardreader.py +9 -0
  106. mindspore/mindrecord/shardwriter.py +1 -1
  107. mindspore/mindrecord/tools/cifar100_to_mr.py +3 -3
  108. mindspore/mindrecord/tools/cifar10_to_mr.py +3 -3
  109. mindspore/mindrecord/tools/csv_to_mr.py +3 -3
  110. mindspore/mindrecord/tools/imagenet_to_mr.py +16 -11
  111. mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
  112. mindspore/mindrecord/tools/tfrecord_to_mr.py +6 -6
  113. mindspore/mindspore_backend.dll +0 -0
  114. mindspore/mindspore_common.dll +0 -0
  115. mindspore/mindspore_core.dll +0 -0
  116. mindspore/mindspore_glog.dll +0 -0
  117. mindspore/mindspore_shared_lib.dll +0 -0
  118. mindspore/nn/__init__.py +0 -4
  119. mindspore/nn/cell.py +204 -132
  120. mindspore/nn/dynamic_lr.py +1 -1
  121. mindspore/nn/grad/cell_grad.py +7 -6
  122. mindspore/nn/layer/__init__.py +5 -4
  123. mindspore/nn/layer/activation.py +40 -89
  124. mindspore/nn/layer/basic.py +255 -624
  125. mindspore/nn/layer/channel_shuffle.py +7 -6
  126. mindspore/nn/layer/combined.py +1 -1
  127. mindspore/nn/layer/container.py +41 -4
  128. mindspore/nn/layer/conv.py +64 -28
  129. mindspore/nn/layer/dense.py +9 -8
  130. mindspore/nn/layer/embedding.py +27 -25
  131. mindspore/nn/layer/image.py +53 -46
  132. mindspore/nn/layer/math.py +97 -105
  133. mindspore/nn/layer/normalization.py +117 -86
  134. mindspore/nn/layer/padding.py +185 -95
  135. mindspore/nn/layer/pooling.py +817 -414
  136. mindspore/nn/layer/rnn_cells.py +10 -15
  137. mindspore/nn/layer/rnns.py +37 -38
  138. mindspore/nn/layer/thor_layer.py +11 -12
  139. mindspore/nn/layer/timedistributed.py +5 -5
  140. mindspore/nn/layer/transformer.py +701 -0
  141. mindspore/nn/learning_rate_schedule.py +8 -8
  142. mindspore/nn/loss/__init__.py +5 -4
  143. mindspore/nn/loss/loss.py +334 -199
  144. mindspore/nn/optim/ada_grad.py +6 -6
  145. mindspore/nn/optim/adadelta.py +2 -3
  146. mindspore/nn/optim/adafactor.py +4 -5
  147. mindspore/nn/optim/adam.py +126 -62
  148. mindspore/nn/optim/adamax.py +3 -4
  149. mindspore/nn/optim/adasum.py +6 -6
  150. mindspore/nn/optim/asgd.py +2 -2
  151. mindspore/nn/optim/ftrl.py +67 -38
  152. mindspore/nn/optim/lamb.py +4 -5
  153. mindspore/nn/optim/lars.py +2 -2
  154. mindspore/nn/optim/lazyadam.py +43 -4
  155. mindspore/nn/optim/momentum.py +6 -5
  156. mindspore/nn/optim/optimizer.py +3 -1
  157. mindspore/nn/optim/proximal_ada_grad.py +2 -2
  158. mindspore/nn/optim/rmsprop.py +1 -1
  159. mindspore/nn/optim/rprop.py +8 -9
  160. mindspore/nn/optim/sgd.py +19 -13
  161. mindspore/nn/optim/thor.py +10 -15
  162. mindspore/nn/probability/__init__.py +0 -2
  163. mindspore/nn/probability/bijector/bijector.py +4 -4
  164. mindspore/nn/probability/bijector/invert.py +1 -1
  165. mindspore/nn/probability/bijector/softplus.py +2 -2
  166. mindspore/nn/probability/bnn_layers/dense_variational.py +1 -1
  167. mindspore/nn/probability/bnn_layers/layer_distribution.py +2 -2
  168. mindspore/nn/probability/distribution/_utils/utils.py +9 -15
  169. mindspore/nn/probability/distribution/bernoulli.py +3 -3
  170. mindspore/nn/probability/distribution/beta.py +1 -1
  171. mindspore/nn/probability/distribution/categorical.py +5 -7
  172. mindspore/nn/probability/distribution/cauchy.py +3 -3
  173. mindspore/nn/probability/distribution/distribution.py +2 -2
  174. mindspore/nn/probability/distribution/exponential.py +2 -2
  175. mindspore/nn/probability/distribution/gamma.py +3 -3
  176. mindspore/nn/probability/distribution/geometric.py +1 -1
  177. mindspore/nn/probability/distribution/gumbel.py +3 -3
  178. mindspore/nn/probability/distribution/half_normal.py +15 -11
  179. mindspore/nn/probability/distribution/laplace.py +16 -13
  180. mindspore/nn/probability/distribution/logistic.py +2 -2
  181. mindspore/nn/probability/distribution/normal.py +1 -1
  182. mindspore/nn/probability/distribution/poisson.py +1 -1
  183. mindspore/nn/probability/distribution/student_t.py +20 -15
  184. mindspore/nn/probability/distribution/transformed_distribution.py +4 -4
  185. mindspore/nn/probability/distribution/uniform.py +2 -2
  186. mindspore/nn/reinforcement/_tensors_queue.py +3 -3
  187. mindspore/nn/reinforcement/tensor_array.py +2 -2
  188. mindspore/nn/sparse/sparse.py +2 -2
  189. mindspore/nn/wrap/cell_wrapper.py +27 -10
  190. mindspore/nn/wrap/grad_reducer.py +2 -2
  191. mindspore/nn/wrap/loss_scale.py +40 -24
  192. mindspore/numpy/array_creations.py +33 -22
  193. mindspore/numpy/array_ops.py +35 -30
  194. mindspore/numpy/logic_ops.py +6 -27
  195. mindspore/numpy/math_ops.py +22 -19
  196. mindspore/numpy/utils.py +1 -1
  197. mindspore/numpy/utils_const.py +108 -58
  198. mindspore/opencv_core452.dll +0 -0
  199. mindspore/opencv_imgcodecs452.dll +0 -0
  200. mindspore/opencv_imgproc452.dll +0 -0
  201. mindspore/ops/_constants.py +0 -6
  202. mindspore/ops/_grad/__init__.py +2 -1
  203. mindspore/ops/_grad/grad_array_ops.py +86 -117
  204. mindspore/ops/_grad/grad_base.py +23 -1
  205. mindspore/ops/_grad/grad_clip_ops.py +2 -3
  206. mindspore/ops/_grad/grad_comm_ops.py +34 -24
  207. mindspore/ops/_grad/grad_implementations.py +9 -45
  208. mindspore/ops/_grad/grad_inner_ops.py +47 -4
  209. mindspore/ops/_grad/grad_math_ops.py +142 -117
  210. mindspore/ops/_grad/grad_nn_ops.py +71 -165
  211. mindspore/ops/_grad/grad_sequence_ops.py +296 -0
  212. mindspore/ops/_grad/grad_sparse.py +7 -6
  213. mindspore/ops/_grad_experimental/__init__.py +1 -0
  214. mindspore/ops/_grad_experimental/grad_array_ops.py +150 -15
  215. mindspore/ops/_grad_experimental/grad_image_ops.py +16 -7
  216. mindspore/ops/_grad_experimental/grad_inner_ops.py +1 -22
  217. mindspore/ops/_grad_experimental/grad_linalg_ops.py +4 -11
  218. mindspore/ops/_grad_experimental/grad_math_ops.py +210 -89
  219. mindspore/ops/_grad_experimental/grad_nn_ops.py +26 -22
  220. mindspore/ops/_grad_experimental/grad_scalar_ops.py +112 -0
  221. mindspore/ops/_grad_experimental/grad_sparse_ops.py +49 -8
  222. mindspore/ops/_op_impl/_custom_op/batch_matmul_impl.py +1 -1
  223. mindspore/ops/_op_impl/_custom_op/batchnorm_fold.py +2 -2
  224. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2.py +2 -2
  225. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad.py +2 -2
  226. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad_reduce.py +4 -4
  227. mindspore/ops/_op_impl/_custom_op/batchnorm_fold_grad.py +3 -3
  228. mindspore/ops/_op_impl/_custom_op/cholesky_trsm_impl.py +1 -1
  229. mindspore/ops/_op_impl/_custom_op/correction_mul.py +2 -2
  230. mindspore/ops/_op_impl/_custom_op/correction_mul_grad.py +2 -2
  231. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -5
  232. mindspore/ops/_op_impl/_custom_op/dsd_impl.py +1 -1
  233. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel.py +2 -2
  234. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad.py +2 -2
  235. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad_reduce.py +2 -2
  236. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer.py +2 -2
  237. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad.py +2 -2
  238. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad_reduce.py +2 -2
  239. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel.py +2 -2
  240. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel_grad.py +2 -2
  241. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer.py +2 -2
  242. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer_grad.py +2 -2
  243. mindspore/ops/_op_impl/_custom_op/fused_abs_max1_impl.py +1 -1
  244. mindspore/ops/_op_impl/_custom_op/img2col_impl.py +1 -1
  245. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_left_impl.py +2 -2
  246. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_right_impl.py +1 -1
  247. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_left_cast_impl.py +1 -1
  248. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_right_mul_impl.py +1 -1
  249. mindspore/ops/_op_impl/_custom_op/matmul_cube_impl.py +2 -2
  250. mindspore/ops/_op_impl/_custom_op/matmul_dds_impl.py +0 -4
  251. mindspore/ops/_op_impl/_custom_op/matrix_combine_impl.py +1 -1
  252. mindspore/ops/_op_impl/_custom_op/minmax_update_perchannel.py +2 -2
  253. mindspore/ops/_op_impl/_custom_op/minmax_update_perlayer.py +2 -2
  254. mindspore/ops/_op_impl/_custom_op/transpose02314_impl.py +1 -1
  255. mindspore/ops/_op_impl/aicpu/__init__.py +236 -4
  256. mindspore/ops/_op_impl/aicpu/abs.py +36 -0
  257. mindspore/ops/_op_impl/aicpu/{adaptive_avg_pool_2d_v1.py → adaptive_avg_pool_2d.py} +6 -5
  258. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d_grad.py +34 -0
  259. mindspore/ops/_op_impl/aicpu/add.py +43 -0
  260. mindspore/ops/_op_impl/aicpu/addcdiv.py +0 -32
  261. mindspore/ops/_op_impl/aicpu/addcmul.py +0 -84
  262. mindspore/ops/_op_impl/aicpu/affine_grid_grad.py +35 -0
  263. mindspore/ops/_op_impl/aicpu/batch_matmul.py +43 -43
  264. mindspore/ops/_op_impl/aicpu/bernoulli.py +48 -0
  265. mindspore/{compression/common/__init__.py → ops/_op_impl/aicpu/bessel_i0.py} +15 -8
  266. mindspore/ops/_op_impl/aicpu/channel_shuffle.py +40 -0
  267. mindspore/ops/_op_impl/aicpu/conj.py +11 -0
  268. mindspore/ops/_op_impl/aicpu/cumulative_logsumexp.py +0 -3
  269. mindspore/ops/_op_impl/aicpu/deformable_offsets.py +38 -0
  270. mindspore/ops/_op_impl/aicpu/deformable_offsets_grad.py +43 -0
  271. mindspore/ops/_op_impl/aicpu/{adaptive_avg_pool_2d_grad_v1.py → digamma.py} +7 -9
  272. mindspore/ops/_op_impl/aicpu/flatten.py +1 -0
  273. mindspore/ops/_op_impl/aicpu/fmax.py +36 -0
  274. mindspore/ops/_op_impl/aicpu/fmin.py +37 -0
  275. mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_with_fixed_ksize.py +1 -1
  276. mindspore/ops/_op_impl/aicpu/fse_decode.py +43 -0
  277. mindspore/ops/_op_impl/aicpu/greater.py +41 -0
  278. mindspore/ops/_op_impl/aicpu/greater_equal.py +41 -0
  279. mindspore/ops/_op_impl/aicpu/index_put.py +50 -0
  280. mindspore/ops/_op_impl/aicpu/less.py +41 -0
  281. mindspore/{nn/probability/infer/variational/__init__.py → ops/_op_impl/aicpu/lgamma.py} +16 -10
  282. mindspore/ops/_op_impl/aicpu/mirror_pad.py +0 -4
  283. mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py +0 -4
  284. mindspore/ops/_op_impl/aicpu/mul.py +3 -1
  285. mindspore/ops/_op_impl/aicpu/multinomial.py +14 -6
  286. mindspore/ops/_op_impl/aicpu/nllloss.py +38 -0
  287. mindspore/ops/_op_impl/aicpu/nllloss_grad.py +39 -0
  288. mindspore/ops/_op_impl/aicpu/ones_like.py +0 -2
  289. mindspore/ops/_op_impl/aicpu/polar.py +32 -0
  290. mindspore/ops/_op_impl/aicpu/polygamma.py +34 -0
  291. mindspore/ops/_op_impl/aicpu/quant_dtype_cast.py +40 -0
  292. mindspore/ops/_op_impl/aicpu/quantile.py +35 -0
  293. mindspore/ops/_op_impl/aicpu/ragged_tensor_to_sparse.py +73 -0
  294. mindspore/ops/_op_impl/aicpu/randperm_v2.py +41 -0
  295. mindspore/ops/_op_impl/aicpu/resize_bicubic.py +2 -8
  296. mindspore/ops/_op_impl/aicpu/resize_bicubic_grad.py +1 -1
  297. mindspore/ops/_op_impl/aicpu/resize_v2.py +68 -0
  298. mindspore/ops/_op_impl/aicpu/resize_v2_grad.py +68 -0
  299. mindspore/ops/_op_impl/aicpu/scatter_elements.py +4 -0
  300. mindspore/ops/_op_impl/aicpu/scatter_nd_update.py +2 -0
  301. mindspore/ops/_op_impl/aicpu/sequence_add.py +34 -0
  302. mindspore/ops/_op_impl/aicpu/sequence_add_offset.py +34 -0
  303. mindspore/ops/_op_impl/aicpu/sequence_addn.py +38 -0
  304. mindspore/ops/_op_impl/aicpu/smooth_l1_loss.py +35 -0
  305. mindspore/ops/_op_impl/aicpu/smooth_l1_loss_grad.py +37 -0
  306. mindspore/ops/_op_impl/aicpu/sparse_apply_adagrad_da.py +0 -24
  307. mindspore/ops/_op_impl/aicpu/sparse_cross.py +42 -0
  308. mindspore/ops/_op_impl/aicpu/sparse_slice.py +4 -0
  309. mindspore/ops/_op_impl/aicpu/sparse_slice_grad.py +6 -0
  310. mindspore/ops/_op_impl/aicpu/tensor_scatter_update.py +59 -0
  311. mindspore/ops/_op_impl/aicpu/trans_data.py +1 -0
  312. mindspore/ops/_op_impl/aicpu/tril_indices.py +34 -0
  313. mindspore/ops/_op_impl/aicpu/uniform.py +34 -0
  314. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +1 -0
  315. mindspore/ops/_op_impl/aicpu/unique_consecutive.py +10 -2
  316. mindspore/ops/_op_impl/cpu/dynamic_shape.py +5 -1
  317. mindspore/ops/_op_impl/cpu/sparse_slice.py +4 -0
  318. mindspore/ops/_op_impl/cpu/sparse_slice_grad.py +6 -0
  319. mindspore/ops/_op_impl/cpu/tensor_shape.py +5 -1
  320. mindspore/ops/_op_impl/tbe/__init__.py +27 -611
  321. mindspore/ops/_op_impl/tbe/assign_add_ds.py +1 -0
  322. mindspore/ops/_op_impl/tbe/atomic_addr_clean.py +1 -1
  323. mindspore/ops/_op_impl/tbe/avg_pool_3d_grad.py +1 -1
  324. mindspore/ops/_op_impl/tbe/batch_matmul_ds.py +1 -0
  325. mindspore/ops/_op_impl/tbe/batch_to_space.py +1 -1
  326. mindspore/ops/_op_impl/tbe/batch_to_space_nd.py +1 -1
  327. mindspore/ops/_op_impl/tbe/bn_infer_grad.py +4 -2
  328. mindspore/ops/_op_impl/tbe/bn_training_update.py +0 -1
  329. mindspore/ops/_op_impl/tbe/bn_training_update_ds.py +0 -1
  330. mindspore/ops/_op_impl/tbe/broadcast_to_ds.py +6 -4
  331. mindspore/ops/_op_impl/tbe/cast.py +0 -2
  332. mindspore/ops/_op_impl/tbe/cast_ds.py +3 -3
  333. mindspore/ops/_op_impl/tbe/data_format_dim_map_ds.py +1 -0
  334. mindspore/ops/_op_impl/tbe/depthwise_conv2d.py +2 -2
  335. mindspore/ops/_op_impl/tbe/dynamic_atomic_addr_clean.py +1 -1
  336. mindspore/ops/_op_impl/tbe/gather_nd.py +1 -0
  337. mindspore/ops/_op_impl/tbe/{index_add.py → inplace_index_add.py} +3 -6
  338. mindspore/ops/_op_impl/tbe/matmul_ds.py +2 -0
  339. mindspore/ops/_op_impl/tbe/npu_clear_float_status_v2.py +35 -0
  340. mindspore/ops/_op_impl/tbe/npu_get_float_status_v2.py +35 -0
  341. mindspore/ops/_op_impl/tbe/scatter_mul.py +2 -0
  342. mindspore/ops/_op_impl/tbe/scatter_nd_add.py +0 -2
  343. mindspore/ops/_op_impl/tbe/space_to_batch.py +1 -1
  344. mindspore/ops/_op_impl/tbe/space_to_batch_nd.py +1 -1
  345. mindspore/ops/_op_impl/tbe/trans_data_ds.py +15 -5
  346. mindspore/ops/_register_for_op.py +1 -0
  347. mindspore/ops/_utils/__init__.py +1 -2
  348. mindspore/ops/_utils/utils.py +19 -40
  349. mindspore/ops/_vmap/vmap_array_ops.py +116 -38
  350. mindspore/ops/_vmap/vmap_base.py +16 -9
  351. mindspore/ops/_vmap/vmap_convolution_ops.py +7 -10
  352. mindspore/ops/_vmap/vmap_grad_math_ops.py +4 -4
  353. mindspore/ops/_vmap/vmap_grad_nn_ops.py +7 -5
  354. mindspore/ops/_vmap/vmap_image_ops.py +12 -5
  355. mindspore/ops/_vmap/vmap_math_ops.py +46 -5
  356. mindspore/ops/_vmap/vmap_nn_ops.py +15 -21
  357. mindspore/ops/_vmap/vmap_random_ops.py +1 -1
  358. mindspore/ops/bprop_mindir/AdaptiveAvgPool2D_bprop.mindir +0 -0
  359. mindspore/ops/bprop_mindir/AdaptiveMaxPool2D_bprop.mindir +0 -0
  360. mindspore/ops/bprop_mindir/AvgPool3D_bprop.mindir +150 -0
  361. mindspore/ops/bprop_mindir/AvgPool_bprop.mindir +66 -0
  362. mindspore/ops/bprop_mindir/BCEWithLogitsLoss_bprop.mindir +0 -0
  363. mindspore/ops/bprop_mindir/BatchNormGrad_bprop.mindir +0 -0
  364. mindspore/ops/bprop_mindir/BiasAddGrad_bprop.mindir +0 -0
  365. mindspore/ops/bprop_mindir/BinaryCrossEntropy_bprop.mindir +33 -0
  366. mindspore/ops/bprop_mindir/BroadcastTo_bprop.mindir +220 -106
  367. mindspore/ops/bprop_mindir/CTCLoss_bprop.mindir +0 -0
  368. mindspore/ops/bprop_mindir/Conv2DBackpropFilter_bprop.mindir +240 -0
  369. mindspore/ops/bprop_mindir/Conv2DBackpropInput_bprop.mindir +247 -0
  370. mindspore/ops/bprop_mindir/Conv2DTranspose_bprop.mindir +247 -0
  371. mindspore/ops/bprop_mindir/Conv3DTranspose_bprop.mindir +315 -0
  372. mindspore/ops/bprop_mindir/Conv3D_bprop.mindir +278 -0
  373. mindspore/ops/bprop_mindir/DeformableOffsets_bprop.mindir +58 -0
  374. mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +138 -0
  375. mindspore/ops/bprop_mindir/Dropout2D_bprop.mindir +0 -0
  376. mindspore/ops/bprop_mindir/Dropout3D_bprop.mindir +0 -0
  377. mindspore/ops/bprop_mindir/DropoutDoMask_bprop.mindir +22 -23
  378. mindspore/ops/bprop_mindir/DropoutGenMask_bprop.mindir +16 -17
  379. mindspore/ops/bprop_mindir/DropoutGrad_bprop.mindir +27 -0
  380. mindspore/ops/bprop_mindir/Dropout_bprop.mindir +0 -0
  381. mindspore/ops/bprop_mindir/DynamicGRUV2_bprop.mindir +0 -0
  382. mindspore/ops/bprop_mindir/DynamicRNN_bprop.mindir +0 -0
  383. mindspore/ops/bprop_mindir/Elu_bprop.mindir +16 -0
  384. mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
  385. mindspore/ops/bprop_mindir/ExpandDims_bprop.mindir +39 -41
  386. mindspore/ops/bprop_mindir/FastGeLU_bprop.mindir +16 -0
  387. mindspore/ops/bprop_mindir/Flatten_bprop.mindir +41 -43
  388. mindspore/ops/bprop_mindir/GatherNd_bprop.mindir +51 -57
  389. mindspore/ops/bprop_mindir/Gather_bprop.mindir +0 -0
  390. mindspore/ops/bprop_mindir/HSigmoid_bprop.mindir +16 -0
  391. mindspore/ops/bprop_mindir/HSwish_bprop.mindir +16 -0
  392. mindspore/ops/bprop_mindir/InstanceNorm_bprop.mindir +0 -0
  393. mindspore/ops/bprop_mindir/KLDivLoss_bprop.mindir +126 -0
  394. mindspore/ops/bprop_mindir/L2Loss_bprop.mindir +15 -0
  395. mindspore/ops/bprop_mindir/L2Normalize_bprop.mindir +30 -0
  396. mindspore/ops/bprop_mindir/LRN_bprop.mindir +43 -0
  397. mindspore/ops/bprop_mindir/LayerNormGrad_bprop.mindir +0 -0
  398. mindspore/ops/bprop_mindir/LogSoftmax_bprop.mindir +23 -0
  399. mindspore/ops/bprop_mindir/MaxPool3DGradGrad_bprop.mindir +74 -0
  400. mindspore/ops/bprop_mindir/MaxPool3DGrad_bprop.mindir +74 -0
  401. mindspore/ops/bprop_mindir/MaxPool3D_bprop.mindir +75 -0
  402. mindspore/ops/bprop_mindir/MaxPoolGradGrad_bprop.mindir +65 -0
  403. mindspore/ops/bprop_mindir/MaxPoolWithArgmax_bprop.mindir +0 -0
  404. mindspore/ops/bprop_mindir/MirrorPad_bprop.mindir +27 -0
  405. mindspore/ops/bprop_mindir/Mish_bprop.mindir +35 -0
  406. mindspore/ops/bprop_mindir/MulNoNan_bprop.mindir +0 -0
  407. mindspore/ops/bprop_mindir/NLLLoss_bprop.mindir +0 -0
  408. mindspore/ops/bprop_mindir/OneHot_bprop.mindir +24 -25
  409. mindspore/ops/bprop_mindir/PReLU_bprop.mindir +0 -0
  410. mindspore/ops/bprop_mindir/Pad_bprop.mindir +0 -0
  411. mindspore/ops/bprop_mindir/Padding_bprop.mindir +0 -0
  412. mindspore/ops/bprop_mindir/RNNTLoss_bprop.mindir +29 -0
  413. mindspore/ops/bprop_mindir/ROIAlign_bprop.mindir +82 -0
  414. mindspore/ops/bprop_mindir/ReLU6_bprop.mindir +16 -0
  415. mindspore/ops/bprop_mindir/ReLUV2_bprop.mindir +0 -0
  416. mindspore/ops/bprop_mindir/ReluGrad_bprop.mindir +18 -19
  417. mindspore/ops/bprop_mindir/Reshape_bprop.mindir +53 -53
  418. mindspore/ops/bprop_mindir/ResizeBilinear_bprop.mindir +29 -0
  419. mindspore/ops/bprop_mindir/ResizeNearestNeighbor_bprop.mindir +77 -85
  420. mindspore/ops/bprop_mindir/SeLU_bprop.mindir +21 -0
  421. mindspore/ops/bprop_mindir/SigmoidCrossEntropyWithLogits_bprop.mindir +21 -0
  422. mindspore/ops/bprop_mindir/SigmoidGrad_bprop.mindir +0 -0
  423. mindspore/ops/bprop_mindir/Sigmoid_bprop.mindir +16 -0
  424. mindspore/ops/bprop_mindir/SmoothL1Loss_bprop.mindir +36 -0
  425. mindspore/ops/bprop_mindir/SoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  426. mindspore/ops/bprop_mindir/Softplus_bprop.mindir +16 -0
  427. mindspore/ops/bprop_mindir/Softsign_bprop.mindir +33 -0
  428. mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  429. mindspore/ops/bprop_mindir/Squeeze_bprop.mindir +37 -39
  430. mindspore/ops/bprop_mindir/StridedSlice_bprop.mindir +70 -72
  431. mindspore/ops/bprop_mindir/TanhGrad_bprop.mindir +0 -0
  432. mindspore/ops/bprop_mindir/Tanh_bprop.mindir +66 -0
  433. mindspore/ops/bprop_mindir/Tile_bprop.mindir +0 -0
  434. mindspore/ops/bprop_mindir/TopK_bprop.mindir +0 -0
  435. mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +17 -17
  436. mindspore/ops/bprop_mindir/UpsampleNearest3D_bprop.mindir +32 -0
  437. mindspore/ops/bprop_mindir/UpsampleTrilinear3D_bprop.mindir +38 -0
  438. mindspore/ops/bprop_mindir/generate_mindir.py +2 -0
  439. mindspore/ops/composite/__init__.py +7 -8
  440. mindspore/ops/composite/base.py +101 -47
  441. mindspore/ops/composite/math_ops.py +188 -158
  442. mindspore/ops/composite/multitype_ops/_compile_utils.py +415 -170
  443. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +142 -87
  444. mindspore/ops/composite/multitype_ops/add_impl.py +6 -1
  445. mindspore/ops/composite/multitype_ops/div_impl.py +2 -3
  446. mindspore/ops/composite/multitype_ops/getitem_impl.py +31 -3
  447. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +31 -0
  448. mindspore/ops/composite/multitype_ops/greater_impl.py +31 -0
  449. mindspore/ops/composite/multitype_ops/in_impl.py +9 -0
  450. mindspore/ops/composite/multitype_ops/less_equal_impl.py +31 -0
  451. mindspore/ops/composite/multitype_ops/less_impl.py +31 -0
  452. mindspore/ops/composite/multitype_ops/mul_impl.py +21 -5
  453. mindspore/ops/composite/multitype_ops/not_in_impl.py +9 -0
  454. mindspore/ops/composite/multitype_ops/ones_like_impl.py +2 -4
  455. mindspore/ops/composite/multitype_ops/setitem_impl.py +21 -3
  456. mindspore/ops/composite/multitype_ops/sub_impl.py +1 -1
  457. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +35 -4
  458. mindspore/ops/function/__init__.py +152 -8
  459. mindspore/ops/function/array_func.py +2555 -674
  460. mindspore/ops/function/clip_func.py +209 -13
  461. mindspore/ops/function/debug_func.py +2 -2
  462. mindspore/ops/function/grad/__init__.py +2 -1
  463. mindspore/ops/function/grad/grad_func.py +147 -62
  464. mindspore/ops/function/image_func.py +54 -38
  465. mindspore/ops/function/linalg_func.py +167 -16
  466. mindspore/ops/function/math_func.py +4849 -1492
  467. mindspore/ops/function/nn_func.py +2573 -988
  468. mindspore/ops/function/other_func.py +115 -0
  469. mindspore/ops/function/parameter_func.py +3 -3
  470. mindspore/ops/function/random_func.py +790 -73
  471. mindspore/ops/function/sparse_func.py +98 -78
  472. mindspore/ops/function/sparse_unary_func.py +54 -53
  473. mindspore/ops/function/spectral_func.py +27 -24
  474. mindspore/ops/function/vmap_func.py +22 -2
  475. mindspore/ops/functional.py +97 -37
  476. mindspore/ops/op_info_register.py +70 -28
  477. mindspore/ops/operations/__init__.py +47 -14
  478. mindspore/ops/operations/_csr_ops.py +7 -7
  479. mindspore/ops/operations/_embedding_cache_ops.py +5 -5
  480. mindspore/ops/operations/_grad_ops.py +276 -187
  481. mindspore/ops/operations/_inner_ops.py +319 -113
  482. mindspore/ops/operations/_ms_kernel.py +10 -8
  483. mindspore/ops/operations/_ocr_ops.py +9 -9
  484. mindspore/ops/operations/_opaque_predicate_registry.py +4 -0
  485. mindspore/ops/operations/_quant_ops.py +137 -102
  486. mindspore/ops/operations/_rl_inner_ops.py +121 -60
  487. mindspore/ops/operations/_scalar_ops.py +466 -0
  488. mindspore/ops/operations/_sequence_ops.py +1004 -2
  489. mindspore/ops/operations/_tensor_array.py +10 -11
  490. mindspore/ops/operations/_thor_ops.py +1 -1
  491. mindspore/ops/operations/array_ops.py +801 -466
  492. mindspore/ops/operations/comm_ops.py +51 -49
  493. mindspore/ops/operations/control_ops.py +2 -2
  494. mindspore/ops/operations/custom_ops.py +123 -44
  495. mindspore/ops/operations/debug_ops.py +24 -24
  496. mindspore/ops/operations/image_ops.py +240 -153
  497. mindspore/ops/operations/inner_ops.py +34 -50
  498. mindspore/ops/operations/linalg_ops.py +31 -9
  499. mindspore/ops/operations/math_ops.py +988 -757
  500. mindspore/ops/operations/nn_ops.py +965 -819
  501. mindspore/ops/operations/other_ops.py +51 -40
  502. mindspore/ops/operations/random_ops.py +204 -122
  503. mindspore/ops/operations/rl_ops.py +8 -9
  504. mindspore/ops/operations/sparse_ops.py +254 -93
  505. mindspore/ops/operations/spectral_ops.py +35 -3
  506. mindspore/ops/primitive.py +111 -9
  507. mindspore/parallel/_auto_parallel_context.py +189 -83
  508. mindspore/parallel/_offload_context.py +185 -0
  509. mindspore/parallel/_parallel_serialization.py +99 -7
  510. mindspore/parallel/_ps_context.py +9 -5
  511. mindspore/parallel/_recovery_context.py +1 -1
  512. mindspore/parallel/_tensor.py +7 -1
  513. mindspore/{nn/transformer → parallel/_transformer}/__init__.py +6 -6
  514. mindspore/{nn/transformer → parallel/_transformer}/layers.py +6 -37
  515. mindspore/{nn/transformer → parallel/_transformer}/loss.py +4 -7
  516. mindspore/{nn/transformer → parallel/_transformer}/moe.py +20 -16
  517. mindspore/{nn/transformer → parallel/_transformer}/op_parallel_config.py +3 -3
  518. mindspore/{nn/transformer → parallel/_transformer}/transformer.py +48 -111
  519. mindspore/parallel/_utils.py +1 -2
  520. mindspore/parallel/algo_parameter_config.py +1 -1
  521. mindspore/parallel/checkpoint_transform.py +37 -34
  522. mindspore/parallel/shard.py +17 -18
  523. mindspore/profiler/common/validator/validate_path.py +2 -2
  524. mindspore/profiler/envprofiling.py +69 -47
  525. mindspore/profiler/parser/ascend_timeline_generator.py +49 -42
  526. mindspore/profiler/parser/base_timeline_generator.py +49 -56
  527. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +98 -78
  528. mindspore/profiler/parser/hwts_log_parser.py +1 -1
  529. mindspore/profiler/parser/integrator.py +15 -14
  530. mindspore/profiler/parser/minddata_analyzer.py +2 -2
  531. mindspore/profiler/parser/msadvisor_analyzer.py +12 -25
  532. mindspore/profiler/parser/msadvisor_parser.py +2 -4
  533. mindspore/profiler/parser/optime_parser.py +17 -18
  534. mindspore/profiler/parser/profiler_info.py +2 -1
  535. mindspore/profiler/profiling.py +218 -186
  536. mindspore/rewrite/__init__.py +3 -1
  537. mindspore/rewrite/api/node.py +1 -114
  538. mindspore/rewrite/api/node_type.py +3 -0
  539. mindspore/rewrite/api/pattern_engine.py +31 -1
  540. mindspore/rewrite/api/scoped_value.py +4 -4
  541. mindspore/rewrite/api/symbol_tree.py +3 -78
  542. mindspore/rewrite/api/tree_node_helper.py +1 -1
  543. mindspore/rewrite/ast_creator_register.py +1 -0
  544. mindspore/rewrite/ast_helpers/__init__.py +2 -2
  545. mindspore/rewrite/ast_helpers/ast_creator.py +1 -2
  546. mindspore/rewrite/ast_helpers/ast_finder.py +65 -0
  547. mindspore/rewrite/ast_helpers/ast_modifier.py +11 -3
  548. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +18 -2
  549. mindspore/rewrite/namespace.py +0 -2
  550. mindspore/rewrite/node.py +157 -11
  551. mindspore/rewrite/parsers/assign_parser.py +231 -53
  552. mindspore/rewrite/parsers/class_def_parser.py +187 -109
  553. mindspore/rewrite/parsers/for_parser.py +24 -14
  554. mindspore/rewrite/parsers/function_def_parser.py +21 -4
  555. mindspore/rewrite/parsers/if_parser.py +6 -2
  556. mindspore/rewrite/sparsify/__init__.py +0 -0
  557. mindspore/rewrite/sparsify/sparse_transformer.py +448 -0
  558. mindspore/rewrite/sparsify/sparsify.py +109 -0
  559. mindspore/rewrite/sparsify/utils.py +173 -0
  560. mindspore/rewrite/symbol_tree.py +256 -133
  561. mindspore/rewrite/symbol_tree_builder.py +38 -1
  562. mindspore/run_check/_check_version.py +69 -63
  563. mindspore/run_check/run_check.py +2 -1
  564. mindspore/tinyxml2.dll +0 -0
  565. mindspore/train/__init__.py +1 -1
  566. mindspore/train/_utils.py +28 -5
  567. mindspore/train/amp.py +273 -102
  568. mindspore/train/callback/_backup_and_restore.py +5 -5
  569. mindspore/train/callback/_callback.py +2 -2
  570. mindspore/train/callback/_checkpoint.py +3 -3
  571. mindspore/train/callback/_early_stop.py +3 -3
  572. mindspore/train/callback/_lambda_callback.py +2 -2
  573. mindspore/train/callback/_landscape.py +29 -31
  574. mindspore/train/callback/_loss_monitor.py +3 -3
  575. mindspore/train/callback/_on_request_exit.py +3 -3
  576. mindspore/train/callback/_reduce_lr_on_plateau.py +4 -4
  577. mindspore/train/callback/_summary_collector.py +23 -16
  578. mindspore/train/callback/_time_monitor.py +3 -3
  579. mindspore/train/checkpoint_pb2.py +68 -8
  580. mindspore/train/data_sink.py +15 -3
  581. mindspore/train/dataset_helper.py +10 -15
  582. mindspore/train/loss_scale_manager.py +8 -11
  583. mindspore/train/metrics/__init__.py +1 -1
  584. mindspore/train/metrics/bleu_score.py +1 -1
  585. mindspore/train/metrics/confusion_matrix.py +1 -1
  586. mindspore/train/metrics/cosine_similarity.py +1 -1
  587. mindspore/train/metrics/dice.py +2 -2
  588. mindspore/train/metrics/fbeta.py +1 -1
  589. mindspore/train/metrics/hausdorff_distance.py +4 -3
  590. mindspore/train/metrics/mean_surface_distance.py +2 -2
  591. mindspore/train/metrics/occlusion_sensitivity.py +1 -1
  592. mindspore/train/metrics/perplexity.py +1 -1
  593. mindspore/train/metrics/precision.py +1 -1
  594. mindspore/train/metrics/recall.py +1 -1
  595. mindspore/train/metrics/roc.py +2 -2
  596. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  597. mindspore/train/mind_ir_pb2.py +116 -37
  598. mindspore/train/model.py +45 -28
  599. mindspore/train/serialization.py +295 -188
  600. mindspore/train/summary/_summary_adapter.py +1 -1
  601. mindspore/train/summary/summary_record.py +43 -13
  602. mindspore/train/train_thor/convert_utils.py +2 -2
  603. mindspore/train/train_thor/dataset_helper.py +3 -3
  604. mindspore/turbojpeg.dll +0 -0
  605. mindspore/version.py +1 -1
  606. {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/METADATA +3 -2
  607. {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/RECORD +610 -541
  608. mindspore/compression/__init__.py +0 -19
  609. mindspore/compression/common/constant.py +0 -124
  610. mindspore/compression/export/__init__.py +0 -19
  611. mindspore/compression/export/quant_export.py +0 -515
  612. mindspore/compression/quant/__init__.py +0 -28
  613. mindspore/compression/quant/qat.py +0 -634
  614. mindspore/compression/quant/quant_utils.py +0 -462
  615. mindspore/compression/quant/quantizer.py +0 -68
  616. mindspore/nn/layer/quant.py +0 -1868
  617. mindspore/nn/layer/rnn_utils.py +0 -90
  618. mindspore/nn/probability/dpn/__init__.py +0 -22
  619. mindspore/nn/probability/dpn/vae/__init__.py +0 -25
  620. mindspore/nn/probability/dpn/vae/cvae.py +0 -140
  621. mindspore/nn/probability/dpn/vae/vae.py +0 -124
  622. mindspore/nn/probability/infer/__init__.py +0 -22
  623. mindspore/nn/probability/infer/variational/elbo.py +0 -70
  624. mindspore/nn/probability/infer/variational/svi.py +0 -84
  625. mindspore/nn/probability/toolbox/__init__.py +0 -22
  626. mindspore/nn/probability/toolbox/anomaly_detection.py +0 -99
  627. mindspore/nn/probability/toolbox/uncertainty_evaluation.py +0 -364
  628. mindspore/nn/probability/transforms/__init__.py +0 -22
  629. mindspore/nn/probability/transforms/transform_bnn.py +0 -262
  630. mindspore/nn/probability/zhusuan/__init__.py +0 -18
  631. mindspore/nn/probability/zhusuan/framework/__init__.py +0 -18
  632. mindspore/nn/probability/zhusuan/framework/bn.py +0 -95
  633. mindspore/nn/probability/zhusuan/variational/__init__.py +0 -18
  634. mindspore/nn/probability/zhusuan/variational/elbo.py +0 -46
  635. mindspore/ops/_op_impl/aicpu/parallel_concat.py +0 -42
  636. mindspore/ops/_op_impl/tbe/gather_v2.py +0 -56
  637. mindspore/ops/bprop_mindir/AssignAdd_bprop.mindir +0 -19
  638. mindspore/ops/bprop_mindir/Cast_bprop.mindir +0 -19
  639. mindspore/ops/bprop_mindir/LogicalOr_bprop.mindir +0 -19
  640. mindspore/ops/bprop_mindir/MatMul_bprop.mindir +0 -0
  641. mindspore/ops/bprop_mindir/ReLU_bprop.mindir +0 -17
  642. mindspore/ops/bprop_mindir/Transpose_bprop.mindir +0 -0
  643. mindspore/ops/bprop_mindir/UpdateState_bprop.mindir +0 -15
  644. mindspore/ops/composite/array_ops.py +0 -241
  645. mindspore/ops/composite/clip_ops.py +0 -134
  646. mindspore/ops/composite/random_ops.py +0 -426
  647. mindspore/ops/composite/vmap_ops.py +0 -38
  648. mindspore/parallel/nn/__init__.py +0 -42
  649. mindspore/parallel/nn/loss.py +0 -22
  650. mindspore/parallel/nn/moe.py +0 -21
  651. mindspore/parallel/nn/op_parallel_config.py +0 -22
  652. mindspore/parallel/nn/transformer.py +0 -31
  653. {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/WHEEL +0 -0
  654. {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/entry_points.txt +0 -0
  655. {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -14,20 +14,23 @@
14
14
  # ============================================================================
15
15
  """Defines parameter operators with functional form."""
16
16
 
17
- import numpy as np
17
+ from __future__ import absolute_import
18
+
19
+ from mindspore import context
18
20
  from mindspore.ops import operations as P
19
21
  from mindspore.ops import functional as F
20
- from mindspore.ops.primitive import constexpr
22
+ from mindspore.ops.primitive import constexpr, _primexpr
21
23
  from mindspore.ops.composite.multitype_ops import _constexpr_utils as const_utils
22
24
  from mindspore.common import dtype as mstype
23
25
  from mindspore.common.seed import _get_graph_seed
24
26
  from mindspore.common.tensor import Tensor
25
- from mindspore.ops.operations.random_ops import RandomShuffle, RandomChoiceWithMask
27
+ from mindspore.ops.operations.random_ops import RandomShuffle, RandomChoiceWithMask, RandpermV2
26
28
  from mindspore.ops._primitive_cache import _get_cache_prim
27
- from mindspore.ops._utils import get_broadcast_shape
29
+ from mindspore.common.api import _function_forbid_reuse
28
30
 
29
31
 
30
- def random_gamma(shape, alpha, seed=0, seed2=0):
32
+ @_function_forbid_reuse
33
+ def random_gamma(shape, alpha, seed=None):
31
34
  r"""
32
35
  Outputs random values from the Gamma distribution(s) described by alpha.
33
36
 
@@ -35,12 +38,10 @@ def random_gamma(shape, alpha, seed=0, seed2=0):
35
38
  Args:
36
39
  shape (Tensor): The shape of random tensor to be generated.
37
40
  Must be one of the following types: int32, int64. 1-D integer tensor.
38
- alpha (Tensor): The alpha α distribution parameter.
41
+ alpha (Tensor): The :math:`\alpha` distribution parameter.
39
42
  A Tensor. Must be one of the following types: half, float32, float64.
40
- seed (int): Seed is used as entropy source for the random number engines to generate
41
- pseudo-random numbers, must be non-negative. Default: None, which will be treated as 0.
42
- seed2 (int): Seed2 is used as entropy source for the random number engines to generate
43
- pseudo-random numbers, must be non-negative. Default: None, which will be treated as 0.
43
+ seed (int, optional): Seed is used as entropy source for Random number engines generating pseudo-random numbers.
44
+ Default: None, which will be treated as 0.
44
45
 
45
46
  Returns:
46
47
  Tensor. The shape should be equal to the concat shape between the input `shape` and the broadcast
@@ -67,48 +68,38 @@ def random_gamma(shape, alpha, seed=0, seed2=0):
67
68
  >>> print(result)
68
69
  (7, 5, 2)
69
70
  """
70
-
71
- alpha_type = P.DType()(alpha)
72
- beta = Tensor(np.array([1.0]), alpha_type)
73
- alpha_shape = P.Shape()(alpha)
74
- beta_shape = P.Shape()(beta)
75
- broadcast_shape = get_broadcast_shape(alpha_shape, beta_shape, "random_gamma", arg_name1="alpha", arg_name2="beta")
76
- broadcast_shape_t = tuple(broadcast_shape)
77
- broadcast_to = P.BroadcastTo(broadcast_shape_t)
78
- alpha_broadcast = broadcast_to(alpha)
79
- random_gamma_op = _get_cache_prim(P.RandomGamma)(seed=seed, seed2=seed2)
80
- output = random_gamma_op(shape, alpha_broadcast)
81
-
71
+ seed1, seed2 = _get_seed(seed, "random_gamma")
72
+ random_gamma_op = _get_cache_prim(P.RandomGamma)(seed1, seed2)
73
+ output = random_gamma_op(shape, alpha)
82
74
  return output
83
75
 
84
76
 
85
77
  @constexpr(reuse_result=False)
86
78
  def _get_seed(op_seed, kernel_name):
87
- "Get the graph-level seed."
79
+ """Get the graph-level seed."""
88
80
  return _get_graph_seed(op_seed, kernel_name)
89
81
 
90
82
 
91
- def standard_laplace(shape, seed=0, seed2=0):
83
+ @_function_forbid_reuse
84
+ def standard_laplace(shape, seed=None):
92
85
  r"""
93
86
  Generates random numbers according to the Laplace random number distribution (mean=0, lambda=1).
94
87
  It is defined as:
95
88
 
96
89
  .. math::
97
- \text{f}(x) = \frac{1}{2}\exp(-|x|),
90
+ \text{f}(x) = \frac{1}{2}\exp(-|x|)
98
91
 
99
92
  Args:
100
93
  shape (Union[tuple, Tensor]): The shape of random tensor to be generated. Only constant value is allowed
101
94
  when the input type is tuple. And the operator supports dynamic shape only when the input type is Tensor.
102
- seed (int): Random seed. Default: 0.
103
- seed2 (int): Random seed2. Default: 0.
95
+ seed (int, optional): Seed is used as entropy source for Random number engines generating pseudo-random numbers.
96
+ Default: None, which will be treated as 0.
104
97
 
105
98
  Returns:
106
99
  Tensor. The shape that the input 'shape' denotes. The dtype is float32.
107
100
 
108
101
  Raises:
109
- TypeError: If seed or seed2 is not an int.
110
102
  TypeError: If shape is neither a tuple nor a Tensor.
111
- ValueError: If seed or seed2 is not a non-negative int.
112
103
  ValueError: If shape is a tuple containing non-positive items.
113
104
  ValueError: If shape is a Tensor, and the rank of the Tensor is not equal to 1.
114
105
 
@@ -123,10 +114,12 @@ def standard_laplace(shape, seed=0, seed2=0):
123
114
  >>> print(result)
124
115
  (4, 4)
125
116
  """
126
- standard_laplace_op = _get_cache_prim(P.StandardLaplace)(seed=seed, seed2=seed2)
117
+ seed1, seed2 = _get_seed(seed, "standard_laplace")
118
+ standard_laplace_op = _get_cache_prim(P.StandardLaplace)(seed=seed1, seed2=seed2)
127
119
  return standard_laplace_op(shape)
128
120
 
129
121
 
122
+ @_function_forbid_reuse
130
123
  def random_categorical(logits, num_sample, seed=0, dtype=mstype.int64):
131
124
  r"""
132
125
  Generates random samples from a given categorical distribution tensor.
@@ -164,9 +157,12 @@ def random_categorical(logits, num_sample, seed=0, dtype=mstype.int64):
164
157
  return random_categorical_(logits, num_sample, seed)
165
158
 
166
159
 
160
+ @_function_forbid_reuse
167
161
  def multinomial_with_replacement(x, seed, offset, numsamples, replacement=False):
168
162
  r"""
169
- Returns a tensor where each row contains `numsamples` elements sampled from the multinomial distribution.
163
+ Returns a tensor where each row contains numsamples indices sampled from the
164
+ multinomial distribution with replacement. It is different from `multinomial` in that it allows
165
+ the same outcome to be chosen multiple times.
170
166
 
171
167
  Note:
172
168
  The rows of input do not need to sum to one (in which case we use the values as weights),
@@ -177,37 +173,48 @@ def multinomial_with_replacement(x, seed, offset, numsamples, replacement=False)
177
173
  dimensions. Must be one of the following types: float16, float32, float64.
178
174
  seed (int): If seed is set to be -1, and offset is set to be 0, the random number
179
175
  generator is seeded by a random seed. Otherwise, it is seeded by the given seed.
180
- offset (int): To avoid seed collision.
176
+ offset (int): Offset used to avoid seed collision.
181
177
  numsamples (int): the number of samples to draw.
182
- replacement (bool): Whether to draw with replacement or not. Defaults to false.
178
+ replacement (bool, optional): Whether to draw with replacement or not. Default: False.
183
179
 
184
180
  Returns:
185
- Tensor with the same rows as `x`, each row has numsamples sampled indices.
181
+ Tensor with the same rows as `x`, each row has `numsamples` sampled indices.
186
182
 
187
183
  Raises:
188
- TypeError: If `x` is not a Tensor whose dtype is float16, float32, float64.
184
+ TypeError: If `x` is not a 1D or 2D Tensor.
185
+ TypeError: If dtype of `x` is not float16, float32 or float64.
189
186
  TypeError: If `numsamples` is not an int.
190
187
  TypeError: If `replacement` is not a bool.
191
- ValueError: If `x` rank is not 1 or 2.
192
- ValueError: If the value of `numsamples` must larger than x_shape[-1], when `replacement` is false.
188
+ ValueError: If the value of `numsamples` is not greater than x_shape[-1] when `replacement` is False.
193
189
  ValueError: If the sum of one row of `x` less than 0.
194
190
  ValueError: If one of the element of each row of `x` less than 0.
195
191
  ValueError: If `numsamples` equal or less than 0.
196
192
 
197
193
  Supported Platforms:
198
- ``Ascend`` ``CPU``
194
+ ``CPU``
199
195
 
200
196
  Examples:
201
197
  >>> x = Tensor([[0., 9., 4., 0.]], mstype.float32)
202
- >>> output = multinomialwithreplacement(x, 2, 5, 2, True)
198
+ >>> output = ops.multinomial_with_replacement(x, 2, 5, 2, True)
203
199
  >>> print(output)
204
200
  [[1 1]]
205
201
  """
206
- multinomial_with_replacement_ = _get_cache_prim(P.MultinomialWithReplacement) \
207
- (numsamples=numsamples, replacement=replacement)
202
+ if not isinstance(seed, Tensor):
203
+ if not isinstance(seed, int):
204
+ raise TypeError("For multinomial_with_replacement,",
205
+ "the input[seed] must be int, but got {}.".format(type(seed)))
206
+ seed = Tensor(seed, dtype=mstype.int64)
207
+ if not isinstance(offset, Tensor):
208
+ if not isinstance(offset, int):
209
+ raise TypeError("For multinomial_with_replacement,",
210
+ "the input[offset] must be int, but got {}.".format(type(offset)))
211
+ offset = Tensor(offset, dtype=mstype.int64)
212
+ multinomial_with_replacement_ = _get_cache_prim(P.MultinomialWithReplacement)(numsamples=numsamples,
213
+ replacement=replacement)
208
214
  return multinomial_with_replacement_(x, seed, offset)
209
215
 
210
216
 
217
+ @_function_forbid_reuse
211
218
  def uniform(shape, minval, maxval, seed=None, dtype=mstype.float32):
212
219
  """
213
220
  Generates random numbers according to the Uniform random number distribution.
@@ -216,9 +223,7 @@ def uniform(shape, minval, maxval, seed=None, dtype=mstype.float32):
216
223
  The number in tensor minval should be strictly less than maxval at any position after broadcasting.
217
224
 
218
225
  Args:
219
- shape (tuple): The shape of random tensor to be generated.
220
- The format is :math:`(N,*)` where :math:`*` means, any number of additional dimensions
221
- and the length of :math:`(N,*)` should be less than 8 in broadcast operation.
226
+ shape (Union[tuple, Tensor]): The shape of random tensor to be generated.
222
227
  minval (Tensor): The distribution parameter `a`.
223
228
  It defines the minimum possible generated value, with int32 or float32 data type.
224
229
  If dtype is int32, only one number is allowed.
@@ -237,14 +242,14 @@ def uniform(shape, minval, maxval, seed=None, dtype=mstype.float32):
237
242
  The dtype is designated as the input `dtype`.
238
243
 
239
244
  Raises:
240
- TypeError: If `shape` is not tuple.
245
+ TypeError: If `shape` is neither a tuple nor a Tensor.
241
246
  TypeError: If 'minval' or 'maxval' is neither int32 nor float32
242
247
  and dtype of 'minval' is not the same as 'maxval'.
243
248
  TypeError: If `seed` is not an int.
244
249
  TypeError: If 'dtype' is neither int32 nor float32.
245
250
 
246
251
  Supported Platforms:
247
- ``Ascend`` ``GPU`` ``CPU``
252
+ ``GPU`` ``CPU``
248
253
 
249
254
  Examples:
250
255
  >>> from mindspore import Tensor, ops
@@ -284,7 +289,8 @@ def uniform(shape, minval, maxval, seed=None, dtype=mstype.float32):
284
289
  return value
285
290
 
286
291
 
287
- def standard_normal(shape, seed=0, seed2=0):
292
+ @_function_forbid_reuse
293
+ def standard_normal(shape, seed=None):
288
294
  r"""
289
295
  Generates random numbers according to the standard Normal (or Gaussian) random number distribution.
290
296
 
@@ -297,16 +303,14 @@ def standard_normal(shape, seed=0, seed2=0):
297
303
  Args:
298
304
  shape (Union[tuple, Tensor]): The shape of random tensor to be generated. Only constant value is allowed
299
305
  when the input type is tuple. And the operator supports dynamic shape only when the input type is Tensor.
300
- seed (int): Random seed, must be non-negative. Default: 0.
301
- seed2 (int): Random seed2, must be non-negative. A second seed to avoid seed collision. Default: 0.
306
+ seed (int, optional): Seed is used as entropy source for Random number engines generating pseudo-random numbers.
307
+ Default: None, which will be treated as 0.
302
308
 
303
309
  Returns:
304
310
  Tensor. The shape that the input 'shape' denotes. The dtype is float32.
305
311
 
306
312
  Raises:
307
- TypeError: If `seed` or `seed2` is not an int.
308
313
  TypeError: If `shape` is neither a tuple nor a Tensor.
309
- ValueError: If `seed` or `seed2` is not a non-negative int.
310
314
  ValueError: If `shape` is a tuple containing non-positive items.
311
315
 
312
316
  Supported Platforms:
@@ -320,10 +324,12 @@ def standard_normal(shape, seed=0, seed2=0):
320
324
  >>> print(result)
321
325
  (4, 4)
322
326
  """
323
- standard_normal_op = _get_cache_prim(P.StandardNormal)(seed=seed, seed2=seed2)
327
+ seed1, seed2 = _get_seed(seed, "standard_normal")
328
+ standard_normal_op = _get_cache_prim(P.StandardNormal)(seed=seed1, seed2=seed2)
324
329
  return standard_normal_op(shape)
325
330
 
326
331
 
332
+ @_function_forbid_reuse
327
333
  def uniform_candidate_sampler(true_classes,
328
334
  num_true,
329
335
  num_sampled,
@@ -338,7 +344,7 @@ def uniform_candidate_sampler(true_classes,
338
344
  If unique=True, candidates are drawn without replacement, else unique=False with replacement.
339
345
 
340
346
  Args:
341
- true_classes (Tensor): A Tensor. The target classes with a Tensor shape of (batch_size, num_true).
347
+ true_classes (Tensor): A Tensor. The target classes with a Tensor shape of :math:`(batch_size, num_true)` .
342
348
  num_true (int): The number of target classes in each training example.
343
349
  num_sampled (int): The number of classes to randomly sample. The sampled_candidates will have a shape
344
350
  of num_sampled. If unique=True, num_sampled must be less than or equal to range_max.
@@ -350,11 +356,11 @@ def uniform_candidate_sampler(true_classes,
350
356
 
351
357
  Returns:
352
358
  - **sampled_candidates** (Tensor) - The sampled_candidates is independent of the true classes.
353
- Shape: (num_sampled, ).
359
+ Shape: :math:`(num_sampled, )` .
354
360
  - **true_expected_count** (Tensor) - The expected counts under the sampling distribution of each
355
- of true_classes. Shape: (batch_size, num_true).
361
+ of true_classes. Shape: :math:`(batch_size, num_true)` .
356
362
  - **sampled_expected_count** (Tensor) - The expected counts under the sampling distribution of
357
- each of sampled_candidates. Shape: (num_sampled, ).
363
+ each of sampled_candidates. Shape: :math:`(num_sampled, )` .
358
364
 
359
365
  Raises:
360
366
  TypeError: If neither `num_true` nor `num_sampled` is an int.
@@ -385,6 +391,7 @@ def uniform_candidate_sampler(true_classes,
385
391
  return sampled_candidates, true_expected_count, sampled_expected_count
386
392
 
387
393
 
394
+ @_function_forbid_reuse
388
395
  def random_poisson(shape, rate, seed=None, dtype=mstype.float32):
389
396
  r"""
390
397
  Generates random number Tensor with shape `shape` according to a Poisson distribution with mean `rate`.
@@ -397,11 +404,12 @@ def random_poisson(shape, rate, seed=None, dtype=mstype.float32):
397
404
  Args:
398
405
  shape (Tensor): The shape of random tensor to be sampled from each poisson distribution, 1-D `Tensor` whose
399
406
  dtype is mindspore.dtype.int32 or mindspore.dtype.int64.
400
- rate (Tensor): The μ parameter the distribution is constructed with. It represents the mean of the distribution
407
+ rate (Tensor): The :math:`μ` parameter the distribution is constructed with.
408
+ It represents the mean of the distribution
401
409
  and also the variance of the distribution. It should be a `Tensor` whose dtype is mindspore.dtype.int64,
402
410
  mindspore.dtype.int32, mindspore.dtype.float64, mindspore.dtype.float32 or mindspore.dtype.float16.
403
- seed (int): Seed is used as entropy source for the random number engines to generate pseudo-random numbers
404
- and must be non-negative. Default: None, which will be treated as 0.
411
+ seed (int, optional): Seed is used as entropy source for the random number engines to generate pseudo-random
412
+ numbers and must be non-negative. Default: None, which will be treated as 0.
405
413
  dtype (mindspore.dtype): The data type of output: mindspore.dtype.int64, mindspore.dtype.int32,
406
414
  mindspore.dtype.float64, mindspore.dtype.float32 or mindspore.dtype.float16. Default: mindspore.dtype.float32.
407
415
 
@@ -422,7 +430,7 @@ def random_poisson(shape, rate, seed=None, dtype=mstype.float32):
422
430
  ValueError: If any element of input `shape` tensor is not positive.
423
431
 
424
432
  Supported Platforms:
425
- ``CPU``
433
+ ``GPU`` ``CPU``
426
434
 
427
435
  Examples:
428
436
  >>> import mindspore
@@ -433,7 +441,7 @@ def random_poisson(shape, rate, seed=None, dtype=mstype.float32):
433
441
  >>> rate = Tensor(np.array([[5.0, 10.0], [5.0, 1.0]]), mindspore.float32)
434
442
  >>> output = ops.random_poisson(shape, rate, seed=5, dtype=mindspore.float64)
435
443
  >>> print(output.shape, output.dtype)
436
- (2, 2, 2, 2) float64
444
+ (2, 2, 2, 2) Float64
437
445
  >>> # case 2: 1-D shape, scalar rate, int64 output
438
446
  >>> shape = Tensor(np.array([2, 2]), mindspore.int64)
439
447
  >>> rate = Tensor(5.0, mindspore.float64)
@@ -447,14 +455,15 @@ def random_poisson(shape, rate, seed=None, dtype=mstype.float32):
447
455
  return value
448
456
 
449
457
 
458
+ @_function_forbid_reuse
450
459
  def shuffle(x, seed=None):
451
460
  r"""
452
461
  Randomly shuffles a Tensor along its first dimension.
453
462
 
454
463
  Args:
455
464
  x (Tensor): The Tensor need be shuffled.
456
- seed (int): Random seed used for random number generation, must be non-negative. If `seed` is 0, which will be
457
- replaced with a randomly generated value. Default: None, which will be treated as 0.
465
+ seed (int, optional): Random seed used for random number generation, must be non-negative. If `seed` is 0,
466
+ which will be replaced with a randomly generated value. Default: None, which will be treated as 0.
458
467
 
459
468
  Returns:
460
469
  Tensor. The shape and type are the same as the input `x`.
@@ -468,8 +477,8 @@ def shuffle(x, seed=None):
468
477
  Examples:
469
478
  >>> x = Tensor(np.array([1, 2, 3, 4]), mstype.float32)
470
479
  >>> output = ops.shuffle(x, seed=1)
471
- >>> print(output.shape)
472
- (4,)
480
+ >>> print(output)
481
+ (3. 4. 2. 1.)
473
482
  """
474
483
  seed, seed2 = _get_seed(seed, "shuffle")
475
484
  random_shuffle_ = _get_cache_prim(RandomShuffle)(seed=seed, seed2=seed2)
@@ -477,6 +486,7 @@ def shuffle(x, seed=None):
477
486
  return output
478
487
 
479
488
 
489
+ @_function_forbid_reuse
480
490
  def log_uniform_candidate_sampler(true_classes, num_true=1, num_sampled=5, unique=True, range_max=5, seed=0):
481
491
  r"""
482
492
  Generates random labels with a log-uniform distribution for sampled_candidates.
@@ -529,11 +539,12 @@ def log_uniform_candidate_sampler(true_classes, num_true=1, num_sampled=5, uniqu
529
539
  return sampler(true_classes)
530
540
 
531
541
 
532
- def choice_with_mask(input_x, count=256, seed=0, seed2=0):
542
+ @_function_forbid_reuse
543
+ def choice_with_mask(input_x, count=256, seed=None):
533
544
  """
534
545
  Generates a random sample as index tensor with a mask tensor from a given tensor.
535
546
 
536
- The `input_x` must be a tensor whose rank is not less than 1. If its rank is greater than or equal to 2,
547
+ The `input_x` must be a tensor whose dimension is not less than 1. If its dimension is greater than or equal to 2,
537
548
  the first dimension specifies the number of samples.
538
549
  The returned index tensor denotes the index of the nonzero
539
550
  sample, the mask tensor denotes which elements in the index tensor are valid.
@@ -541,9 +552,9 @@ def choice_with_mask(input_x, count=256, seed=0, seed2=0):
541
552
  Args:
542
553
  input_x (Tensor[bool]): The input tensor.
543
554
  The input tensor rank must be greater than or equal to 1 and less than or equal to 5.
544
- count (int): Number of items expected to get and the number must be greater than 0. Default: 256.
545
- seed (int): Random seed. Default: 0.
546
- seed2 (int): Random seed2. Default: 0.
555
+ count (int, optional): Number of items expected to get and the number must be greater than 0. Default: 256.
556
+ seed (int, optional): Seed is used as entropy source for Random number engines generating pseudo-random numbers.
557
+ Default: None, which will be treated as 0.
547
558
 
548
559
  Returns:
549
560
  Two tensors, the first one is the index tensor and the other one is the mask tensor.
@@ -553,7 +564,7 @@ def choice_with_mask(input_x, count=256, seed=0, seed2=0):
553
564
 
554
565
  Raises:
555
566
  TypeError: If `count` is not an int.
556
- TypeError: If neither `seed` nor `seed2` is an int.
567
+ TypeError: If `seed` is not an int.
557
568
  TypeError: If `input_x` is not a Tensor.
558
569
 
559
570
  Supported Platforms:
@@ -569,13 +580,719 @@ def choice_with_mask(input_x, count=256, seed=0, seed2=0):
569
580
  >>> print(result)
570
581
  (256,)
571
582
  """
572
- choice_with_mask_ = _get_cache_prim(RandomChoiceWithMask)(count=count, seed=seed, seed2=seed2)
583
+ seed1, seed2 = _get_seed(seed, "choice_with_mask")
584
+ choice_with_mask_ = _get_cache_prim(RandomChoiceWithMask)(count=count, seed=seed1, seed2=seed2)
573
585
  output = choice_with_mask_(input_x)
574
586
  return output
575
587
 
576
588
 
589
+ @constexpr
590
+ def is_cpu_backend():
591
+ """Check if the CPU is used"""
592
+ return context.get_context('device_target') == 'CPU'
593
+
594
+
595
+ @_function_forbid_reuse
596
+ def randperm(n, seed=0, offset=0, dtype=mstype.int64):
597
+ r"""
598
+ Generates random permutation of integers from 0 to n-1.
599
+
600
+ Returns the tensor with the determined shape inferred by n, the random numbers in it drawn from the data range
601
+ that a given type can represent.
602
+
603
+ Args:
604
+ n (Union[Tensor, int]): The input n Tensor with shape: () or (1,) and with data type of int64.
605
+ The value of `n` must be greater than zero.
606
+ seed (int, optional): Random seed. Default: 0. When seed is -1(only negative value), offset is 0,
607
+ it's determined by time.
608
+ offset (int, optional): Offset to generate random numbers. Priority is higher than random seed.
609
+ Default: 0. It must be non-negative.
610
+ dtype (mindspore.dtype, optional): The type of output.
611
+ Its value must be one of the following types: int32, int16, int8,
612
+ uint8, int64, float64, float32, float16. Default: int64.
613
+
614
+ Returns:
615
+ Tensor. Its shape is specified by the required args `n`. Its type is spcified by `dtype`. Otherwise is default.
616
+
617
+ Raises:
618
+ TypeError: If `dtype` is not allowed.
619
+ ValueError: If `n` is a negative or 0 element.
620
+ ValueError: If `seed` is a negative element.
621
+ ValueError: If `n` is larger than the maximal data of the set dtype.
622
+
623
+ Supported Platforms:
624
+ ``CPU``
625
+
626
+ Examples:
627
+ >>> n = 4
628
+ >>> seed = 0
629
+ >>> offset = 0
630
+ >>> output = ops.randperm(n, seed, offset, dtype=mstype.int64)
631
+ >>> print(output)
632
+ [1 0 2 3]
633
+ """
634
+ if not isinstance(n, Tensor):
635
+ n = Tensor(n)
636
+ randperm_ = _get_cache_prim(RandpermV2)(dtype=dtype)
637
+ return randperm_(n, seed, offset)
638
+
639
+
640
+ @_function_forbid_reuse
641
+ def normal(shape, mean, stddev, seed=None):
642
+ """
643
+ Generates random numbers according to the Normal (or Gaussian) random number distribution.
644
+
645
+ Args:
646
+ shape (tuple): The shape of random tensor to be generated.
647
+ The format is :math:`(N,*)` where :math:`*` means, any number of additional dimensions.
648
+ mean (Union[Tensor, int, float]): The mean μ distribution parameter, which specifies the location of the peak,
649
+ with data type in [int8, int16, int32, int64, float16, float32].
650
+ stddev (Union[Tensor, int, float]): The deviation σ distribution parameter. It should be greater than 0,
651
+ with data type in [int8, int16, int32, int64, float16, float32].
652
+ seed (int): Seed is used as entropy source for the Random number engines to generate pseudo-random numbers.
653
+ The value must be non-negative. Default: None, which will be treated as 0.
654
+
655
+ Returns:
656
+ Tensor. The shape should be equal to the broadcasted shape between the input `shape` and shapes
657
+ of `mean` and `stddev`.
658
+ The dtype is float32.
659
+
660
+ Supported Platforms:
661
+ ``Ascend`` ``GPU`` ``CPU``
662
+
663
+ Examples:
664
+ >>> import mindspore
665
+ >>> import numpy as np
666
+ >>> from mindspore import Tensor, ops
667
+ >>> shape = (3, 1, 2)
668
+ >>> mean = Tensor(np.array([[3, 4], [5, 6]]), mindspore.float32)
669
+ >>> stddev = Tensor(1.0, mindspore.float32)
670
+ >>> output = ops.normal(shape, mean, stddev, seed=5)
671
+ >>> result = output.shape
672
+ >>> print(result)
673
+ (3, 2, 2)
674
+ >>> shape = (3, 1, 3)
675
+ >>> mean = Tensor(np.array([[3, 4, 3], [3, 5, 6]]), mindspore.float32)
676
+ >>> stddev = Tensor(1.0, mindspore.float32)
677
+ >>> output = ops.normal(shape, mean, stddev, seed=5)
678
+ >>> result = output.shape
679
+ >>> print(result)
680
+ (3, 2, 3)
681
+ >>> shape = (3, 1, 3)
682
+ >>> mean = Tensor(np.array([[1, 2, 3], [3, 4, 3], [3, 5, 6]]), mindspore.float32)
683
+ >>> stddev = Tensor(1.0, mindspore.float32)
684
+ >>> output = ops.normal(shape, mean, stddev, seed=5)
685
+ >>> result = output.shape
686
+ >>> print(result)
687
+ (3, 3, 3)
688
+ """
689
+ _check_param("normal", "mean", mean)
690
+ _check_param("normal", "stddev", stddev)
691
+ if not isinstance(mean, Tensor):
692
+ mean = Tensor(mean)
693
+ if not isinstance(stddev, Tensor):
694
+ stddev = Tensor(stddev)
695
+ mean_dtype = F.dtype(mean)
696
+ stddev_dtype = F.dtype(stddev)
697
+ const_utils.check_type_valid(mean_dtype, mstype.int_type + (mstype.float16, mstype.float32), 'normal')
698
+ const_utils.check_type_valid(stddev_dtype, mstype.int_type + (mstype.float16, mstype.float32), 'normal')
699
+ seed1, seed2 = _get_seed(seed, "normal")
700
+ stdnormal = P.StandardNormal(seed1, seed2)
701
+ _check_shape(shape)
702
+ random_normal = stdnormal(shape)
703
+ value = random_normal * stddev + mean
704
+ return value
705
+
706
+
707
+ @_function_forbid_reuse
708
+ def laplace(shape, mean, lambda_param, seed=None):
709
+ r"""
710
+ Generates random numbers according to the Laplace random number distribution.
711
+ It is defined as:
712
+
713
+ .. math::
714
+ \text{f}(x;μ,λ) = \frac{1}{2λ}\exp(-\frac{|x-μ|}{λ}),
715
+
716
+ Args:
717
+ shape (tuple): The shape of random tensor to be generated.
718
+ The format is :math:`(N,*)` where :math:`*` means, any number of additional dimensions.
719
+ mean (Tensor): The mean μ distribution parameter, which specifies the location of the peak.
720
+ With float32 data type.
721
+ lambda_param (Tensor): The parameter used for controlling the variance of this random distribution. The
722
+ variance of Laplace distribution is equal to twice the square of lambda_param. With float32 data type.
723
+ seed (int, optional): Seed is used as entropy source for Random number engines generating pseudo-random numbers.
724
+ Default: None, which will be treated as 0.
725
+
726
+ Returns:
727
+ Tensor. The shape should be the broadcasted shape of input `shape` and shapes of `mean` and `lambda_param`.
728
+ The dtype is float32.
729
+
730
+ Supported Platforms:
731
+ ``Ascend`` ``GPU`` ``CPU``
732
+
733
+ Examples:
734
+ >>> import mindspore
735
+ >>> from mindspore import Tensor
736
+ >>> from mindspore import ops as ops
737
+ >>> shape = (2, 3)
738
+ >>> mean = Tensor(1.0, mindspore.float32)
739
+ >>> lambda_param = Tensor(1.0, mindspore.float32)
740
+ >>> output = ops.laplace(shape, mean, lambda_param, seed=5)
741
+ >>> print(output.shape)
742
+ (2, 3)
743
+ """
744
+ mean_dtype = F.dtype(mean)
745
+ lambda_param_dtype = F.dtype(lambda_param)
746
+ const_utils.check_tensors_dtype_same(mean_dtype, mstype.float32, "laplace")
747
+ const_utils.check_tensors_dtype_same(lambda_param_dtype, mstype.float32, "laplace")
748
+ seed1, seed2 = _get_seed(seed, "laplace")
749
+ stdlaplace = P.StandardLaplace(seed1, seed2)
750
+ _check_shape(shape)
751
+ rnd = stdlaplace(shape)
752
+ value = rnd * lambda_param + mean
753
+ return value
754
+
755
+
756
+ @_function_forbid_reuse
757
+ def gamma(shape, alpha, beta, seed=None):
758
+ r"""
759
+ Generates random numbers according to the Gamma random number distribution.
760
+
761
+ Args:
762
+ shape (tuple): The shape of random tensor to be generated.
763
+ alpha (Tensor): The :math:`\alpha` distribution parameter. It should be greater than 0 with float32 data type.
764
+ beta (Tensor): The :math:`\beta` distribution parameter. It should be greater than 0 with float32 data type.
765
+ seed (int): Seed is used as entropy source for the random number engines to generate
766
+ pseudo-random numbers, must be non-negative. Default: None, which will be treated as 0.
767
+
768
+ Returns:
769
+ Tensor. The shape should be equal to the broadcasted shape between the input `shape` and shapes
770
+ of `alpha` and `beta`.
771
+ The dtype is float32.
772
+
773
+ Raises:
774
+ TypeError: If `shape` is not a tuple.
775
+ TypeError: If neither `alpha` nor `beta` is a Tensor.
776
+ TypeError: If `seed` is not an int.
777
+ TypeError: If dtype of `alpha` and `beta` is not float32.
778
+
779
+ Supported Platforms:
780
+ ``Ascend``
781
+
782
+ Examples:
783
+ >>> import mindspore
784
+ >>> import numpy as np
785
+ >>> from mindspore import Tensor, ops
786
+ >>> # case 1: alpha_shape is (2, 2)
787
+ >>> shape = (3, 1, 2)
788
+ >>> alpha = Tensor(np.array([[3, 4], [5, 6]]), mindspore.float32)
789
+ >>> beta = Tensor(np.array([1.0]), mindspore.float32)
790
+ >>> output = ops.gamma(shape, alpha, beta, seed=5)
791
+ >>> result = output.shape
792
+ >>> print(result)
793
+ (3, 2, 2)
794
+ >>> # case 2: alpha_shape is (2, 3), so shape is (3, 1, 3)
795
+ >>> shape = (3, 1, 3)
796
+ >>> alpha = Tensor(np.array([[1, 3, 4], [2, 5, 6]]), mindspore.float32)
797
+ >>> beta = Tensor(np.array([1.0]), mindspore.float32)
798
+ >>> output = ops.gamma(shape, alpha, beta, seed=5)
799
+ >>> result = output.shape
800
+ >>> print(result)
801
+ (3, 2, 3)
802
+ >>> # case 3: beta_shape is (1, 2), the output is different.
803
+ >>> shape = (3, 1, 2)
804
+ >>> alpha = Tensor(np.array([[3, 4], [5, 6]]), mindspore.float32)
805
+ >>> beta = Tensor(np.array([1.0, 2]), mindspore.float32)
806
+ >>> output = ops.gamma(shape, alpha, beta, seed=5)
807
+ >>> result = output.shape
808
+ >>> print(output)
809
+ [[[ 2.2132034 5.8855834]]
810
+ [ 3.3981476 7.5805717]
811
+ [[ 3.3981476 7.5805717]]
812
+ [ 3.7190282 19.941492]
813
+ [[ 2.9512358 2.5969937]]
814
+ [ 3.786061 5.160872 ]]]
815
+ >>> # case 4: beta_shape is (2, 1), the output is different.
816
+ >>> shape = (3, 1, 2)
817
+ >>> alpha = Tensor(np.array([[3, 4], [5, 6]]), mindspore.float32)
818
+ >>> beta = Tensor(np.array([[1.0], [2.0]]), mindspore.float32)
819
+ >>> output = ops.gamma(shape, alpha, beta, seed=5)
820
+ >>> result = output.shape
821
+ >>> print(output)
822
+ [[[ 5.6085486 7.8280783]]
823
+ [ 15.97684 16.116285]
824
+ [[ 1.8347423 1.713663]]
825
+ [ 3.2434065 15.667398]
826
+ [[ 4.2922077 7.3365674]]
827
+ [ 5.3876944 13.159832 ]]]
828
+ """
829
+ seed1, seed2 = _get_seed(seed, "gamma")
830
+ gamma_v = P.Gamma(seed1, seed2)
831
+ value = gamma_v(shape, alpha, beta)
832
+ return value
833
+
834
+
835
+ @_primexpr
836
+ def _generate_shapes(shape):
837
+ """Generate shapes for randn and rand."""
838
+ if not shape:
839
+ size = (1,)
840
+ elif len(shape) == 1:
841
+ if isinstance(shape[0], int):
842
+ size = shape
843
+ elif isinstance(shape[0], list):
844
+ size = tuple(shape[0])
845
+ elif isinstance(shape[0], tuple):
846
+ size = shape[0]
847
+ else:
848
+ raise TypeError("If the length of the argument 'shape' is 1, the type of the argument 'shape' must be "
849
+ "one of ['int', 'list', 'tuple'], but got ", shape[0])
850
+ else:
851
+ for value in shape:
852
+ if not isinstance(value, int):
853
+ raise TypeError("If the length of the argument 'shape' is > 1, the type of the argument 'shape' must "
854
+ "all be int, but got ", value)
855
+ size = shape
856
+ return size
857
+
858
+
859
+ @_function_forbid_reuse
860
+ def rand(*size, dtype=None, seed=None):
861
+ r"""
862
+ Returns a new tensor that fills numbers from the uniform distribution over an interval :math:`[0, 1)`
863
+ based on the given shape and dtype.
864
+
865
+ Args:
866
+ size (Union[int, tuple(int), list(int)]): Shape of the new tensor, e.g. :math:`(2, 3)` or :math:`2`.
867
+
868
+ Keyword Args:
869
+ dtype (:class:`mindspore.dtype`, optional): Designated tensor dtype, it must be float type. If None,
870
+ `mindspore.float32` will be applied. Default: None.
871
+ seed (int, optional): Random seed, must be greater or equal to 0. Default: None, and 0 will be used.
872
+
873
+ Returns:
874
+ Tensor, with the designated shape and dtype, filled with random numbers from the uniform distribution on
875
+ the interval :math:`[0, 1)`.
876
+
877
+ Raises:
878
+ TypeError: `seed` is not a non-negative integer.
879
+ ValueError: If `dtype` is not a `mstype.float_type` type.
880
+
881
+ Supported Platforms:
882
+ ``Ascend`` ``GPU`` ``CPU``
883
+
884
+ Examples:
885
+ >>> import mindspore.ops as ops
886
+ >>> print(ops.rand((2,3)))
887
+ [[4.1702199e-01 9.9718481e-01 7.2032452e-01]
888
+ [9.3255734e-01 1.1438108e-04 1.2812445e-01]]
889
+ """
890
+ if dtype is None:
891
+ dtype = mstype.float32
892
+ elif dtype not in mstype.float_type:
893
+ raise ValueError(f"For 'rand', the 'dtype' must be a float type, but got {dtype}.")
894
+ shape = _generate_shapes(size)
895
+ cast_ = P.Cast()
896
+ seed1, seed2 = _get_seed(seed, 'rand')
897
+ rand_op = P.UniformReal(seed1, seed2)
898
+ output = rand_op(shape)
899
+ return cast_(output, dtype)
900
+
901
+
902
+ @_function_forbid_reuse
903
+ def rand_like(input, seed=None, *, dtype=None):
904
+ r"""
905
+ Returns a new tensor that fills numbers from the uniform distribution over an interval :math:`[0, 1)`
906
+ based on the given shape and dtype.
907
+
908
+ Args:
909
+ input (Tensor): Input Tensor to specify the output shape and its default dtype.
910
+ seed (int, optional): Random seed, must be greater or equal to 0. Default: None, and 0 will be used.
911
+
912
+ Keyword Args:
913
+ dtype (:class:`mindspore.dtype`, optional): Designated tensor dtype, it must be float type. If None,
914
+ the same dtype of `input` will be applied. Default: None.
915
+
916
+ Returns:
917
+ Tensor, with the designated shape and dtype, filled with random numbers from the uniform distribution on
918
+ the interval :math:`[0, 1)`.
919
+
920
+ Raises:
921
+ TypeError: If `seed` is not a non-negative integer.
922
+ ValueError: If `dtype` is not a `mstype.float_type` type.
923
+
924
+ Supported Platforms:
925
+ ``Ascend`` ``GPU`` ``CPU``
926
+
927
+ Examples:
928
+ >>> import mindspore as ms
929
+ >>> from mindspore import Tensor, ops
930
+ >>> a = Tensor([[2, 3, 4], [1, 2, 3]])
931
+ >>> print(ops.rand_like(a, dtype=ms.float32))
932
+ [[4.1702199e-01 9.9718481e-01 7.2032452e-01]
933
+ [9.3255734e-01 1.1438108e-04 1.2812445e-01]]
934
+ """
935
+
936
+ if dtype is None:
937
+ dtype = input.dtype
938
+ elif dtype not in mstype.float_type:
939
+ raise ValueError(f"For 'rand_like', the 'dtype' must be a float type, but got {dtype}.")
940
+ shape = input.shape
941
+ cast_ = P.Cast()
942
+ seed1, seed2 = _get_seed(seed, 'rand_like')
943
+ rand_op = P.UniformReal(seed1, seed2)
944
+ output = rand_op(shape)
945
+ return cast_(output, dtype)
946
+
947
+
948
+ @_function_forbid_reuse
949
+ def randn(*size, dtype=None, seed=None):
950
+ r"""
951
+ Returns a new Tensor with given shape and dtype, filled with a sample (or samples)
952
+ from the standard normal distribution.
953
+
954
+ Args:
955
+ size (Union[int, tuple(int), list(int)]): Shape of the new tensor, e.g., :math:`(2, 3)` or :math:`2`.
956
+
957
+ Keyword Args:
958
+ dtype (:class:`mindspore.dtype`, optional): Designated tensor dtype, it must be float type. If None,
959
+ `mindspore.float32` will be used. Default: None.
960
+ seed (int, optional): Random seed, must be greater or equal to 0. Default: None, and 0 will be used.
961
+
962
+ Returns:
963
+ Tensor, with the designated shape and dtype, filled with a sample (or samples) from the
964
+ "standard normal" distribution.
965
+
966
+ Raises:
967
+ TypeError: `seed` is not a non-negative integer.
968
+ ValueError: If `dtype` is not a `mstype.float_type`.
969
+ ValueError: If `size` contains invalid number.
970
+
971
+ Supported Platforms:
972
+ ``Ascend`` ``GPU`` ``CPU``
973
+
974
+ Examples:
975
+ >>> import mindspore.ops as ops
976
+ >>> print(ops.randn((2, 2)))
977
+ [[ 0.30639967 -0.42438635]
978
+ [-0.4287376 1.3054721 ]]
979
+ """
980
+ if dtype is None:
981
+ dtype = mstype.float32
982
+ elif dtype not in mstype.float_type:
983
+ raise ValueError(f"For 'randn', the 'dtype' must be a float type, but got {dtype}.")
984
+ shape = _generate_shapes(size)
985
+ cast_ = P.Cast()
986
+ seed1, seed2 = _get_seed(seed, 'randn')
987
+ rand_op = P.StandardNormal(seed1, seed2)
988
+ output = rand_op(shape)
989
+ return cast_(output, dtype)
990
+
991
+
992
+ @_function_forbid_reuse
993
+ def randn_like(input, seed=None, *, dtype=None):
994
+ r"""
995
+ Returns a new Tensor with given shape and dtype, filled with a sample (or samples) from the standard normal
996
+ distribution.
997
+
998
+ Args:
999
+ input (Tensor): Input Tensor to specify the output shape and its default dtype.
1000
+ seed (int, optional): Random seed, must be greater or equal to 0. Default: None, and 0 will be used.
1001
+
1002
+ Keyword Args:
1003
+ dtype (:class:`mindspore.dtype`, optional): Designated tensor dtype, it must be float type. If None,
1004
+ `mindspore.float32` will be used. Default: None.
1005
+
1006
+ Returns:
1007
+ Tensor, with the designated shape and dtype, filled with a sample (or samples) from the
1008
+ "standard normal" distribution.
1009
+
1010
+ Raises:
1011
+ TypeError: `seed` is not a non-negative integer.
1012
+ ValueError: If `dtype` is not a `mstype.float_type`.
1013
+
1014
+ Supported Platforms:
1015
+ ``Ascend`` ``GPU`` ``CPU``
1016
+
1017
+ Examples:
1018
+ >>> import mindspore as ms
1019
+ >>> from mindspore import Tensor, ops
1020
+ >>> a = Tensor([[1, 2, 3], [4, 5, 6]])
1021
+ >>> print(ops.randn_like(a, dtype=ms.float32))
1022
+ [[ 0.30639967 -0.42438635 -0.20454668]
1023
+ [-0.4287376 1.3054721 0.64747655]]
1024
+ """
1025
+ if dtype is None:
1026
+ dtype = input.dtype
1027
+ elif dtype not in mstype.float_type:
1028
+ raise ValueError(f"For 'randn_like', the 'dtype' must be a float type, but got {dtype}.")
1029
+ shape = input.shape
1030
+ cast_ = P.Cast()
1031
+ seed1, seed2 = _get_seed(seed, 'randn_like')
1032
+ rand_op = P.StandardNormal(seed1, seed2)
1033
+ output = rand_op(shape)
1034
+ return cast_(output, dtype)
1035
+
1036
+
1037
+ @_function_forbid_reuse
1038
+ def randint(low, high, size, seed=None, *, dtype=None):
1039
+ r"""
1040
+ Returns a Tensor whose elements are random integers in the range of [ `low` , `high` ) .
1041
+
1042
+ Args:
1043
+ low (int): Start value of interval.
1044
+ high (int): End value of interval.
1045
+ size (tuple): Shape of the new tensor.
1046
+ seed (int, optional): Random seed, must be greater or equal to 0. Default: None, and 0 will be used.
1047
+
1048
+ Keyword Args:
1049
+ dtype (:class:`mindspore.dtype`, optional): Designated tensor dtype, it must be int type. If None,
1050
+ `mindspore.int64` will be used. Default: None.
1051
+
1052
+ Returns:
1053
+ Tensor, with the designated shape and dtype, filled with random integers from low (inclusive)
1054
+ to high (exclusive).
1055
+
1056
+ Raises:
1057
+ TypeError: `seed` is not a non-negative integer.
1058
+ TypeError: `size` is not a tuple.
1059
+ TypeError: `low` or `high` is not an integer.
1060
+ ValueError: If `dtype` is not a `mstype.int_type`.
1061
+
1062
+
1063
+ Supported Platforms:
1064
+ ``Ascend`` ``GPU`` ``CPU``
1065
+
1066
+ Examples:
1067
+ >>> import mindspore.ops as ops
1068
+ >>> print(ops.randint(1, 10, (2,3)))
1069
+ [[4 9 7]
1070
+ [9 1 2]]
1071
+ """
1072
+ if dtype is None:
1073
+ dtype = mstype.int64
1074
+ elif dtype not in mstype.int_type:
1075
+ raise ValueError(f"For 'randint', the 'dtype' must be an int type, but got {dtype}.")
1076
+ if not isinstance(size, tuple):
1077
+ raise ValueError(f"For 'randint', the input 'size' must be a tuple, but got {size}.")
1078
+ if not isinstance(low, int) or not isinstance(high, int):
1079
+ raise TypeError(f"For 'randint', 'low' and 'high' must be an int, but got {type(low)} and {type(high)}.")
1080
+ seed1, seed2 = _get_seed(seed, 'randint')
1081
+ cast_ = P.Cast()
1082
+ rand_op = P.UniformInt(seed1, seed2)
1083
+ low_ = Tensor(low, mstype.int32)
1084
+ high_ = Tensor(high, mstype.int32)
1085
+ output = rand_op(size, low_, high_)
1086
+ return cast_(output, dtype)
1087
+
1088
+
1089
+ @_function_forbid_reuse
1090
+ def randint_like(input, low, high, seed=None, *, dtype=None):
1091
+ r"""
1092
+ Returns a tensor with the same shape as Tensor `input` whose elements are random integers in the range
1093
+ of [ `low` , `high` ) .
1094
+
1095
+ Args:
1096
+ input (Tensor): Input Tensor to specify the output shape and its default dtype.
1097
+ low(int): Start value of interval.
1098
+ high(int): End value of interval.
1099
+ seed (int, optional): Random seed, must be greater or equal to 0. Default: None, and 0 will be used.
1100
+
1101
+ Keyword Args:
1102
+ dtype (:class:`mindspore.dtype`, optional): Designated tensor dtype, it must be int type. If None,
1103
+ `mindspore.int64` will be used. Default is `mindspore.int64`.
1104
+
1105
+ Returns:
1106
+ Tensor, with the designated shape and dtype, filled with random integers from low (inclusive)
1107
+ to high (exclusive).
1108
+
1109
+ Raises:
1110
+ TypeError: `seed` is not a non-negative integer.
1111
+ TypeError: `low` or `high` is not an integer.
1112
+ ValueError: If `dtype` is not a `mstype.int_type`.
1113
+
1114
+ Supported Platforms:
1115
+ ``Ascend`` ``GPU`` ``CPU``
1116
+
1117
+ Examples:
1118
+ >>> from mindspore import Tensor, ops
1119
+ >>> a = Tensor([[1, 2, 3], [3, 2, 1]])
1120
+ >>> print(ops.randint_like(a, 1, 10))
1121
+ [[4 9 7]
1122
+ [9 1 2]]
1123
+ """
1124
+ if dtype is None:
1125
+ dtype = input.dtype
1126
+ elif dtype not in mstype.int_type:
1127
+ raise ValueError(f"For 'randint_like', the 'dtype' must be an int type, but got {dtype}.")
1128
+ if not isinstance(low, int) or not isinstance(high, int):
1129
+ raise TypeError(f"For 'randint_like', 'low' and 'high' must be an int, but got {type(low)} and {type(high)}.")
1130
+ size = input.shape
1131
+ seed1, seed2 = _get_seed(seed, 'randint_like')
1132
+ rand_op = P.UniformInt(seed1, seed2)
1133
+ cast_ = P.Cast()
1134
+ low_ = Tensor(low, mstype.int32)
1135
+ high_ = Tensor(high, mstype.int32)
1136
+ output = rand_op(size, low_, high_)
1137
+ return cast_(output, dtype)
1138
+
1139
+
1140
+ @_function_forbid_reuse
1141
+ def poisson(shape, mean, seed=None):
1142
+ r"""
1143
+ The ops.poisson is deprecated, please use :class:`mindspore.ops.random_poisson`
1144
+ Generates random numbers according to the Poisson random number distribution.
1145
+
1146
+ .. math::
1147
+
1148
+ \text{P}(i|μ) = \frac{\exp(-μ)μ^{i}}{i!}
1149
+
1150
+ Args:
1151
+ shape (tuple): The shape of random tensor to be generated.
1152
+ The format is :math:`(N,*)` where :math:`*` means, any number of additional dimensions.
1153
+ mean (Tensor): The mean μ distribution parameter. It should be greater than 0 with float32 data type.
1154
+ seed (int): Seed is used as entropy source for the random number engines to generate pseudo-random numbers
1155
+ and must be non-negative. Default: None, which will be treated as 0.
1156
+
1157
+ Returns:
1158
+ Tensor. The shape should be equal to the broadcasted shape between the input "shape" and shapes of `mean`.
1159
+ The dtype is float32.
1160
+
1161
+ Raises:
1162
+ TypeError: If `shape` is not a tuple.
1163
+ TypeError: If `mean` is not a Tensor whose dtype is not float32.
1164
+ TypeError: If `seed` is not an int.
1165
+
1166
+ Supported Platforms:
1167
+ deprecated
1168
+
1169
+ Examples:
1170
+ >>> from mindspore import Tensor, ops
1171
+ >>> import mindspore
1172
+ >>> # case 1: It can be broadcast.
1173
+ >>> shape = (4, 1)
1174
+ >>> mean = Tensor(np.array([5.0, 10.0]), mindspore.float32)
1175
+ >>> output = ops.poisson(shape, mean, seed=5)
1176
+ >>> result = output.shape
1177
+ >>> print(result)
1178
+ (4, 2)
1179
+ >>> # case 2: It can not be broadcast. It is recommended to use the same shape.
1180
+ >>> shape = (2, 2)
1181
+ >>> mean = Tensor(np.array([[5.0, 10.0], [5.0, 1.0]]), mindspore.float32)
1182
+ >>> output = ops.poisson(shape, mean, seed=5)
1183
+ >>> result = output.shape
1184
+ >>> print(result)
1185
+ (2, 2)
1186
+ """
1187
+ seed1, seed2 = _get_seed(seed, "poisson")
1188
+ random_poisson_op = P.Poisson(seed1, seed2)
1189
+ value = random_poisson_op(shape, mean)
1190
+ return value
1191
+
1192
+
1193
+ @_function_forbid_reuse
1194
+ def multinomial(input, num_samples, replacement=True, seed=None):
1195
+ r"""
1196
+ Returns a tensor sampled from the multinomial probability distribution located in the corresponding
1197
+ row of the input tensor.
1198
+
1199
+ Note:
1200
+ The rows of input do not need to sum to one (in which case we use the values as weights),
1201
+ but must be non-negative, finite and have a non-zero sum.
1202
+
1203
+ Args:
1204
+ input (Tensor): The input tensor containing probabilities, must be 1 or 2 dimensions, with
1205
+ float32 data type.
1206
+ num_samples (int): Number of samples to draw.
1207
+ replacement (bool, optional): Whether to draw with replacement or not, default: True.
1208
+ seed (int, optional): Seed is used as entropy source for the random number engines to generate
1209
+ pseudo-random numbers, must be non-negative. Default: None.
1210
+
1211
+ Returns:
1212
+ Tensor, has the same rows with input. The number of sampled indices of each row is `num_samples`.
1213
+ The dtype is float32.
1214
+
1215
+ Raises:
1216
+ TypeError: If `input` is not a Tensor whose dtype is not float32.
1217
+ TypeError: If `num_samples` is not an int.
1218
+ TypeError: If `seed` is neither an int nor None.
1219
+
1220
+ Supported Platforms:
1221
+ ``Ascend`` ``GPU`` ``CPU``
1222
+
1223
+ Examples:
1224
+ >>> import mindspore
1225
+ >>> from mindspore import Tensor, ops
1226
+ >>> from mindspore import dtype as mstype
1227
+ >>> # case 1: The output is random, and the length of the output is the same as num_sample.
1228
+ >>> input = Tensor([0, 9, 4, 0], mindspore.float32)
1229
+ >>> output = ops.multinomial(input, 2)
1230
+ >>> # print(output)
1231
+ >>> # [1 2] or [2 1]
1232
+ >>> # the case where the result is [2 1] in multiple times.
1233
+ >>> # This is because the value corresponding to the index 1 is larger than the value of the index 2.
1234
+ >>> print(len(output))
1235
+ 2
1236
+ >>> # case 2: The output is random, and the length of the output is the same as num_sample.
1237
+ >>> # replacement is False(Default).
1238
+ >>> # If the extracted value is 0, the index value of 1 will be returned.
1239
+ >>> input = Tensor([0, 9, 4, 0], mstype.float32)
1240
+ >>> output = ops.multinomial(input, 4)
1241
+ >>> print(output)
1242
+ [1 1 2 1]
1243
+ >>> # case 3: The output is random, num_sample == x_length = 4, and replacement is True,
1244
+ >>> # Can extract the same elements。
1245
+ >>> input = Tensor([0, 9, 4, 0], mstype.float32)
1246
+ >>> output = ops.multinomial(input, 4, True)
1247
+ >>> print(output)
1248
+ [1 1 2 2]
1249
+ """
1250
+ shape = P.Shape()
1251
+ reshape = P.Reshape()
1252
+ const_utils.check_valid_dim(len(shape(input)), "multinomial")
1253
+ seed1, seed2 = _get_seed(seed, "multinomial")
1254
+ if not replacement:
1255
+ if shape(input)[-1] < num_samples:
1256
+ const_utils.raise_value_error("For 'multinomial', the 'num_samples' must be less than "
1257
+ "the last dimension of input without 'replacement', "
1258
+ "but got 'num_samples': {} and "
1259
+ "'replacement': {}".format(num_samples, replacement))
1260
+ n_dist = 1
1261
+ if len(shape(input)) > 1:
1262
+ n_dist = shape(input)[-2]
1263
+ random_uniform = P.UniformReal(seed1, seed2)((n_dist * shape(input)[-1],))
1264
+ if n_dist != 1:
1265
+ random_uniform = reshape(random_uniform, (n_dist, shape(input)[-1]))
1266
+ vals = P.RealDiv()(P.Log()(random_uniform), input + 1e-6)
1267
+ _, indices = P.TopK()(vals, num_samples)
1268
+ return indices
1269
+ return P.Multinomial(seed1, seed2)(input, num_samples)
1270
+
1271
+
1272
+ def _check_shape(input_shape):
1273
+ """Check 'shape' value."""
1274
+ if not isinstance(input_shape, tuple):
1275
+ const_utils.raise_type_error("Type of 'shape' must be tuple, but got: {}".format(type(input_shape)))
1276
+ for item in input_shape:
1277
+ if not isinstance(item, int):
1278
+ const_utils.raise_type_error("Elements of 'shape' must be int, but got: {}".format(type(item)))
1279
+ if item < 1:
1280
+ const_utils.raise_value_error("Elements of 'shape' must be positive int, but got: {}".format(item))
1281
+ return True
1282
+
1283
+
1284
+ def _check_param(op_name, param_name, param_value):
1285
+ """Check type of param_value is Tensor, int, or float."""
1286
+ if not isinstance(param_value, (Tensor, int, float)):
1287
+ const_utils.raise_type_error("For '{}', the type of '{}' must be Tensor, int, or float, "
1288
+ "but got: {}".format(op_name, param_name, type(param_value)))
1289
+ return True
1290
+
1291
+
577
1292
  __all__ = [
578
1293
  'standard_laplace', 'random_categorical', 'uniform', 'standard_normal', 'random_gamma',
579
- 'uniform_candidate_sampler', 'random_poisson', 'log_uniform_candidate_sampler', 'shuffle', 'choice_with_mask'
1294
+ 'uniform_candidate_sampler', 'random_poisson', 'log_uniform_candidate_sampler', 'shuffle', 'choice_with_mask',
1295
+ 'normal', 'laplace', 'gamma', 'poisson', 'multinomial', 'rand', 'rand_like', 'randn', 'randn_like', 'randint',
1296
+ 'randint_like', 'multinomial_with_replacement', 'randperm'
580
1297
  ]
581
1298
  __all__.sort()