mindspore 2.4.0__cp310-cp310-macosx_10_15_x86_64.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 (1387) hide show
  1. mindspore/.commit_id +1 -0
  2. mindspore/__init__.py +53 -0
  3. mindspore/_c_dataengine.cpython-310-darwin.so +0 -0
  4. mindspore/_c_expression.cpython-310-darwin.so +0 -0
  5. mindspore/_c_mindrecord.cpython-310-darwin.so +0 -0
  6. mindspore/_check_jit_forbidden_api.py +106 -0
  7. mindspore/_checkparam.py +1419 -0
  8. mindspore/_extends/__init__.py +23 -0
  9. mindspore/_extends/builtin_operations.py +224 -0
  10. mindspore/_extends/graph_kernel/__init__.py +17 -0
  11. mindspore/_extends/graph_kernel/model/__init__.py +19 -0
  12. mindspore/_extends/graph_kernel/model/graph_parallel.py +311 -0
  13. mindspore/_extends/graph_kernel/model/graph_split.py +1348 -0
  14. mindspore/_extends/graph_kernel/model/model.py +553 -0
  15. mindspore/_extends/graph_kernel/model/model_builder.py +216 -0
  16. mindspore/_extends/graph_kernel/parallel_estimate.py +60 -0
  17. mindspore/_extends/graph_kernel/splitter.py +140 -0
  18. mindspore/_extends/graph_kernel/utils.py +28 -0
  19. mindspore/_extends/parallel_compile/__init__.py +19 -0
  20. mindspore/_extends/parallel_compile/akg_compiler/__init__.py +19 -0
  21. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +269 -0
  22. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +529 -0
  23. mindspore/_extends/parallel_compile/akg_compiler/compiler.py +56 -0
  24. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +96 -0
  25. mindspore/_extends/parallel_compile/akg_compiler/get_file_path.py +36 -0
  26. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +556 -0
  27. mindspore/_extends/parallel_compile/akg_compiler/util.py +159 -0
  28. mindspore/_extends/parse/__init__.py +49 -0
  29. mindspore/_extends/parse/compile_config.py +299 -0
  30. mindspore/_extends/parse/namespace.py +136 -0
  31. mindspore/_extends/parse/parser.py +1448 -0
  32. mindspore/_extends/parse/resources.py +213 -0
  33. mindspore/_extends/parse/standard_method.py +4475 -0
  34. mindspore/_extends/parse/trope.py +97 -0
  35. mindspore/_extends/pijit/__init__.py +23 -0
  36. mindspore/_extends/pijit/pijit_func_white_list.py +669 -0
  37. mindspore/_extends/remote/__init__.py +19 -0
  38. mindspore/_extends/remote/kernel_build_server.py +199 -0
  39. mindspore/_extends/remote/kernel_build_server_akg.py +55 -0
  40. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  41. mindspore/_extends/remote/kernel_build_server_ascend.py +75 -0
  42. mindspore/_extends/utils.py +68 -0
  43. mindspore/_install_custom.py +43 -0
  44. mindspore/_profiler.py +30 -0
  45. mindspore/amp.py +433 -0
  46. mindspore/boost/__init__.py +42 -0
  47. mindspore/boost/adasum.py +319 -0
  48. mindspore/boost/base.py +535 -0
  49. mindspore/boost/boost.py +400 -0
  50. mindspore/boost/boost_cell_wrapper.py +790 -0
  51. mindspore/boost/dim_reduce.py +323 -0
  52. mindspore/boost/grad_accumulation.py +79 -0
  53. mindspore/boost/grad_freeze.py +382 -0
  54. mindspore/boost/group_loss_scale_manager.py +166 -0
  55. mindspore/boost/less_batch_normalization.py +174 -0
  56. mindspore/common/__init__.py +86 -0
  57. mindspore/common/_auto_dynamic.py +68 -0
  58. mindspore/common/_decorator.py +50 -0
  59. mindspore/common/_jit_fallback_utils.py +110 -0
  60. mindspore/common/_monad.py +25 -0
  61. mindspore/common/_pijit_context.py +190 -0
  62. mindspore/common/_register_for_adapter.py +74 -0
  63. mindspore/common/_register_for_recompute.py +48 -0
  64. mindspore/common/_register_for_tensor.py +46 -0
  65. mindspore/common/_stub_tensor.py +210 -0
  66. mindspore/common/_tensor_overload.py +139 -0
  67. mindspore/common/_utils.py +122 -0
  68. mindspore/common/api.py +2064 -0
  69. mindspore/common/auto_dynamic_shape.py +507 -0
  70. mindspore/common/dtype.py +422 -0
  71. mindspore/common/dump.py +130 -0
  72. mindspore/common/file_system.py +48 -0
  73. mindspore/common/generator.py +254 -0
  74. mindspore/common/hook_handle.py +143 -0
  75. mindspore/common/initializer.py +880 -0
  76. mindspore/common/jit_config.py +98 -0
  77. mindspore/common/lazy_inline.py +240 -0
  78. mindspore/common/mindir_util.py +111 -0
  79. mindspore/common/mutable.py +234 -0
  80. mindspore/common/no_inline.py +54 -0
  81. mindspore/common/np_dtype.py +25 -0
  82. mindspore/common/parameter.py +1081 -0
  83. mindspore/common/recompute.py +292 -0
  84. mindspore/common/seed.py +260 -0
  85. mindspore/common/sparse_tensor.py +1175 -0
  86. mindspore/common/symbol.py +122 -0
  87. mindspore/common/tensor.py +5039 -0
  88. mindspore/communication/__init__.py +37 -0
  89. mindspore/communication/_comm_helper.py +501 -0
  90. mindspore/communication/_hccl_management.py +297 -0
  91. mindspore/communication/comm_func.py +1395 -0
  92. mindspore/communication/management.py +673 -0
  93. mindspore/config/op_info.config +533 -0
  94. mindspore/context.py +2077 -0
  95. mindspore/dataset/__init__.py +90 -0
  96. mindspore/dataset/audio/__init__.py +61 -0
  97. mindspore/dataset/audio/transforms.py +3690 -0
  98. mindspore/dataset/audio/utils.py +386 -0
  99. mindspore/dataset/audio/validators.py +1172 -0
  100. mindspore/dataset/callback/__init__.py +20 -0
  101. mindspore/dataset/callback/ds_callback.py +368 -0
  102. mindspore/dataset/callback/validators.py +32 -0
  103. mindspore/dataset/core/__init__.py +13 -0
  104. mindspore/dataset/core/config.py +1095 -0
  105. mindspore/dataset/core/datatypes.py +101 -0
  106. mindspore/dataset/core/py_util_helpers.py +65 -0
  107. mindspore/dataset/core/validator_helpers.py +781 -0
  108. mindspore/dataset/debug/__init__.py +21 -0
  109. mindspore/dataset/debug/debug_hook.py +97 -0
  110. mindspore/dataset/debug/pre_defined_hook.py +67 -0
  111. mindspore/dataset/engine/__init__.py +124 -0
  112. mindspore/dataset/engine/cache_admin.py +47 -0
  113. mindspore/dataset/engine/cache_client.py +129 -0
  114. mindspore/dataset/engine/datasets.py +4582 -0
  115. mindspore/dataset/engine/datasets_audio.py +911 -0
  116. mindspore/dataset/engine/datasets_standard_format.py +543 -0
  117. mindspore/dataset/engine/datasets_text.py +2161 -0
  118. mindspore/dataset/engine/datasets_user_defined.py +1184 -0
  119. mindspore/dataset/engine/datasets_vision.py +4816 -0
  120. mindspore/dataset/engine/iterators.py +371 -0
  121. mindspore/dataset/engine/obs/__init__.py +23 -0
  122. mindspore/dataset/engine/obs/config_loader.py +68 -0
  123. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +508 -0
  124. mindspore/dataset/engine/obs/util.py +482 -0
  125. mindspore/dataset/engine/offload.py +596 -0
  126. mindspore/dataset/engine/queue.py +304 -0
  127. mindspore/dataset/engine/samplers.py +895 -0
  128. mindspore/dataset/engine/serializer_deserializer.py +159 -0
  129. mindspore/dataset/engine/validators.py +2895 -0
  130. mindspore/dataset/text/__init__.py +51 -0
  131. mindspore/dataset/text/transforms.py +1703 -0
  132. mindspore/dataset/text/utils.py +715 -0
  133. mindspore/dataset/text/validators.py +642 -0
  134. mindspore/dataset/transforms/__init__.py +45 -0
  135. mindspore/dataset/transforms/c_transforms.py +638 -0
  136. mindspore/dataset/transforms/py_transforms.py +393 -0
  137. mindspore/dataset/transforms/py_transforms_util.py +255 -0
  138. mindspore/dataset/transforms/transforms.py +1260 -0
  139. mindspore/dataset/transforms/validators.py +410 -0
  140. mindspore/dataset/utils/__init__.py +19 -0
  141. mindspore/dataset/utils/browse_dataset.py +190 -0
  142. mindspore/dataset/utils/line_reader.py +126 -0
  143. mindspore/dataset/vision/__init__.py +65 -0
  144. mindspore/dataset/vision/c_transforms.py +2641 -0
  145. mindspore/dataset/vision/py_transforms.py +2120 -0
  146. mindspore/dataset/vision/py_transforms_util.py +1660 -0
  147. mindspore/dataset/vision/transforms.py +7295 -0
  148. mindspore/dataset/vision/utils.py +863 -0
  149. mindspore/dataset/vision/validators.py +1483 -0
  150. mindspore/default_config.py +2 -0
  151. mindspore/experimental/__init__.py +20 -0
  152. mindspore/experimental/es/__init__.py +22 -0
  153. mindspore/experimental/es/embedding_service.py +883 -0
  154. mindspore/experimental/es/embedding_service_layer.py +581 -0
  155. mindspore/experimental/llm_boost/__init__.py +21 -0
  156. mindspore/experimental/llm_boost/atb/__init__.py +23 -0
  157. mindspore/experimental/llm_boost/atb/boost_base.py +211 -0
  158. mindspore/experimental/llm_boost/atb/llama_boost.py +115 -0
  159. mindspore/experimental/llm_boost/atb/qwen_boost.py +101 -0
  160. mindspore/experimental/llm_boost/register.py +129 -0
  161. mindspore/experimental/llm_boost/utils.py +31 -0
  162. mindspore/experimental/map_parameter.py +309 -0
  163. mindspore/experimental/optim/__init__.py +40 -0
  164. mindspore/experimental/optim/adadelta.py +161 -0
  165. mindspore/experimental/optim/adagrad.py +168 -0
  166. mindspore/experimental/optim/adam.py +193 -0
  167. mindspore/experimental/optim/adamax.py +170 -0
  168. mindspore/experimental/optim/adamw.py +290 -0
  169. mindspore/experimental/optim/asgd.py +153 -0
  170. mindspore/experimental/optim/lr_scheduler.py +1371 -0
  171. mindspore/experimental/optim/nadam.py +157 -0
  172. mindspore/experimental/optim/optimizer.py +262 -0
  173. mindspore/experimental/optim/radam.py +194 -0
  174. mindspore/experimental/optim/rmsprop.py +154 -0
  175. mindspore/experimental/optim/rprop.py +164 -0
  176. mindspore/experimental/optim/sgd.py +156 -0
  177. mindspore/hal/__init__.py +40 -0
  178. mindspore/hal/_ascend.py +57 -0
  179. mindspore/hal/_base.py +57 -0
  180. mindspore/hal/_cpu.py +56 -0
  181. mindspore/hal/_gpu.py +57 -0
  182. mindspore/hal/contiguous_tensors_handle.py +175 -0
  183. mindspore/hal/device.py +356 -0
  184. mindspore/hal/event.py +179 -0
  185. mindspore/hal/memory.py +326 -0
  186. mindspore/hal/stream.py +357 -0
  187. mindspore/include/OWNERS +7 -0
  188. mindspore/include/api/allocator.h +97 -0
  189. mindspore/include/api/callback/callback.h +93 -0
  190. mindspore/include/api/callback/ckpt_saver.h +41 -0
  191. mindspore/include/api/callback/loss_monitor.h +33 -0
  192. mindspore/include/api/callback/lr_scheduler.h +51 -0
  193. mindspore/include/api/callback/time_monitor.h +34 -0
  194. mindspore/include/api/callback/train_accuracy.h +37 -0
  195. mindspore/include/api/cell.h +90 -0
  196. mindspore/include/api/cfg.h +82 -0
  197. mindspore/include/api/context.h +602 -0
  198. mindspore/include/api/data_type.h +47 -0
  199. mindspore/include/api/delegate.h +178 -0
  200. mindspore/include/api/delegate_api.h +75 -0
  201. mindspore/include/api/dual_abi_helper.h +208 -0
  202. mindspore/include/api/format.h +28 -0
  203. mindspore/include/api/graph.h +46 -0
  204. mindspore/include/api/kernel.h +58 -0
  205. mindspore/include/api/kernel_api.h +168 -0
  206. mindspore/include/api/metrics/accuracy.h +36 -0
  207. mindspore/include/api/metrics/metrics.h +41 -0
  208. mindspore/include/api/model.h +438 -0
  209. mindspore/include/api/model_group.h +91 -0
  210. mindspore/include/api/model_parallel_runner.h +168 -0
  211. mindspore/include/api/serialization.h +185 -0
  212. mindspore/include/api/status.h +192 -0
  213. mindspore/include/api/types.h +431 -0
  214. mindspore/include/api/visible.h +41 -0
  215. mindspore/include/c_api/context_c.h +179 -0
  216. mindspore/include/c_api/data_type_c.h +52 -0
  217. mindspore/include/c_api/format_c.h +46 -0
  218. mindspore/include/c_api/model_c.h +347 -0
  219. mindspore/include/c_api/status_c.h +79 -0
  220. mindspore/include/c_api/tensor_c.h +146 -0
  221. mindspore/include/c_api/types_c.h +67 -0
  222. mindspore/include/dataset/config.h +163 -0
  223. mindspore/include/dataset/constants.h +363 -0
  224. mindspore/include/dataset/execute.h +196 -0
  225. mindspore/include/dataset/text.h +1092 -0
  226. mindspore/include/dataset/transforms.h +638 -0
  227. mindspore/include/dataset/vision.h +2129 -0
  228. mindspore/include/dataset/vision_ascend.h +206 -0
  229. mindspore/include/dataset/vision_lite.h +625 -0
  230. mindspore/lib/libavcodec.59.dylib +0 -0
  231. mindspore/lib/libavdevice.59.dylib +0 -0
  232. mindspore/lib/libavfilter.8.dylib +0 -0
  233. mindspore/lib/libavformat.59.dylib +0 -0
  234. mindspore/lib/libavutil.57.dylib +0 -0
  235. mindspore/lib/libdnnl.2.dylib +0 -0
  236. mindspore/lib/libicudata.69.dylib +0 -0
  237. mindspore/lib/libicui18n.69.dylib +0 -0
  238. mindspore/lib/libicuuc.69.dylib +0 -0
  239. mindspore/lib/libmindspore_address_sorting.15.dylib +0 -0
  240. mindspore/lib/libmindspore_backend.dylib +0 -0
  241. mindspore/lib/libmindspore_common.dylib +0 -0
  242. mindspore/lib/libmindspore_core.dylib +0 -0
  243. mindspore/lib/libmindspore_glog.0.dylib +0 -0
  244. mindspore/lib/libmindspore_gpr.15.dylib +0 -0
  245. mindspore/lib/libmindspore_grpc++.1.dylib +0 -0
  246. mindspore/lib/libmindspore_grpc.15.dylib +0 -0
  247. mindspore/lib/libmindspore_np_dtype.dylib +0 -0
  248. mindspore/lib/libmindspore_ops.dylib +0 -0
  249. mindspore/lib/libmindspore_upb.15.dylib +0 -0
  250. mindspore/lib/libnnacl.dylib +0 -0
  251. mindspore/lib/libopencv_core.4.5.dylib +0 -0
  252. mindspore/lib/libopencv_imgcodecs.4.5.dylib +0 -0
  253. mindspore/lib/libopencv_imgproc.4.5.dylib +0 -0
  254. mindspore/lib/libps_cache.dylib +0 -0
  255. mindspore/lib/libswresample.4.dylib +0 -0
  256. mindspore/lib/libswscale.6.dylib +0 -0
  257. mindspore/lib/libtinyxml2.8.dylib +0 -0
  258. mindspore/log.py +633 -0
  259. mindspore/mindrecord/__init__.py +43 -0
  260. mindspore/mindrecord/common/__init__.py +17 -0
  261. mindspore/mindrecord/common/constant.py +20 -0
  262. mindspore/mindrecord/common/enums.py +44 -0
  263. mindspore/mindrecord/common/exceptions.py +311 -0
  264. mindspore/mindrecord/config.py +809 -0
  265. mindspore/mindrecord/filereader.py +174 -0
  266. mindspore/mindrecord/filewriter.py +722 -0
  267. mindspore/mindrecord/mindpage.py +210 -0
  268. mindspore/mindrecord/shardheader.py +141 -0
  269. mindspore/mindrecord/shardindexgenerator.py +74 -0
  270. mindspore/mindrecord/shardreader.py +117 -0
  271. mindspore/mindrecord/shardsegment.py +128 -0
  272. mindspore/mindrecord/shardutils.py +185 -0
  273. mindspore/mindrecord/shardwriter.py +237 -0
  274. mindspore/mindrecord/tools/__init__.py +17 -0
  275. mindspore/mindrecord/tools/cifar10.py +140 -0
  276. mindspore/mindrecord/tools/cifar100.py +153 -0
  277. mindspore/mindrecord/tools/cifar100_to_mr.py +185 -0
  278. mindspore/mindrecord/tools/cifar10_to_mr.py +177 -0
  279. mindspore/mindrecord/tools/csv_to_mr.py +200 -0
  280. mindspore/mindrecord/tools/imagenet_to_mr.py +206 -0
  281. mindspore/mindrecord/tools/mnist_to_mr.py +259 -0
  282. mindspore/mindrecord/tools/tfrecord_to_mr.py +360 -0
  283. mindspore/mint/__init__.py +1586 -0
  284. mindspore/mint/distributed/__init__.py +31 -0
  285. mindspore/mint/distributed/distributed.py +254 -0
  286. mindspore/mint/linalg/__init__.py +22 -0
  287. mindspore/mint/nn/__init__.py +757 -0
  288. mindspore/mint/nn/functional.py +679 -0
  289. mindspore/mint/nn/layer/__init__.py +39 -0
  290. mindspore/mint/nn/layer/activation.py +133 -0
  291. mindspore/mint/nn/layer/normalization.py +477 -0
  292. mindspore/mint/nn/layer/pooling.py +110 -0
  293. mindspore/mint/optim/__init__.py +24 -0
  294. mindspore/mint/optim/adamw.py +206 -0
  295. mindspore/mint/special/__init__.py +63 -0
  296. mindspore/multiprocessing/__init__.py +73 -0
  297. mindspore/nn/__init__.py +47 -0
  298. mindspore/nn/cell.py +2787 -0
  299. mindspore/nn/dynamic_lr.py +482 -0
  300. mindspore/nn/grad/__init__.py +21 -0
  301. mindspore/nn/grad/cell_grad.py +196 -0
  302. mindspore/nn/layer/__init__.py +63 -0
  303. mindspore/nn/layer/activation.py +1822 -0
  304. mindspore/nn/layer/basic.py +1629 -0
  305. mindspore/nn/layer/channel_shuffle.py +90 -0
  306. mindspore/nn/layer/combined.py +248 -0
  307. mindspore/nn/layer/container.py +734 -0
  308. mindspore/nn/layer/conv.py +1505 -0
  309. mindspore/nn/layer/dense.py +204 -0
  310. mindspore/nn/layer/embedding.py +869 -0
  311. mindspore/nn/layer/image.py +661 -0
  312. mindspore/nn/layer/math.py +1069 -0
  313. mindspore/nn/layer/normalization.py +1273 -0
  314. mindspore/nn/layer/padding.py +880 -0
  315. mindspore/nn/layer/pooling.py +2302 -0
  316. mindspore/nn/layer/rnn_cells.py +388 -0
  317. mindspore/nn/layer/rnns.py +849 -0
  318. mindspore/nn/layer/thor_layer.py +963 -0
  319. mindspore/nn/layer/timedistributed.py +155 -0
  320. mindspore/nn/layer/transformer.py +823 -0
  321. mindspore/nn/learning_rate_schedule.py +512 -0
  322. mindspore/nn/loss/__init__.py +36 -0
  323. mindspore/nn/loss/loss.py +2924 -0
  324. mindspore/nn/metrics.py +53 -0
  325. mindspore/nn/optim/__init__.py +45 -0
  326. mindspore/nn/optim/_dist_optimizer_registry.py +111 -0
  327. mindspore/nn/optim/ada_grad.py +217 -0
  328. mindspore/nn/optim/adadelta.py +206 -0
  329. mindspore/nn/optim/adafactor.py +448 -0
  330. mindspore/nn/optim/adam.py +1297 -0
  331. mindspore/nn/optim/adamax.py +220 -0
  332. mindspore/nn/optim/adasum.py +548 -0
  333. mindspore/nn/optim/asgd.py +216 -0
  334. mindspore/nn/optim/ftrl.py +401 -0
  335. mindspore/nn/optim/lamb.py +296 -0
  336. mindspore/nn/optim/lars.py +202 -0
  337. mindspore/nn/optim/lazyadam.py +533 -0
  338. mindspore/nn/optim/momentum.py +239 -0
  339. mindspore/nn/optim/optimizer.py +1034 -0
  340. mindspore/nn/optim/proximal_ada_grad.py +242 -0
  341. mindspore/nn/optim/rmsprop.py +264 -0
  342. mindspore/nn/optim/rprop.py +251 -0
  343. mindspore/nn/optim/sgd.py +237 -0
  344. mindspore/nn/optim/tft_wrapper.py +127 -0
  345. mindspore/nn/optim/thor.py +1310 -0
  346. mindspore/nn/probability/__init__.py +22 -0
  347. mindspore/nn/probability/bijector/__init__.py +35 -0
  348. mindspore/nn/probability/bijector/bijector.py +337 -0
  349. mindspore/nn/probability/bijector/exp.py +65 -0
  350. mindspore/nn/probability/bijector/gumbel_cdf.py +144 -0
  351. mindspore/nn/probability/bijector/invert.py +126 -0
  352. mindspore/nn/probability/bijector/power_transform.py +196 -0
  353. mindspore/nn/probability/bijector/scalar_affine.py +167 -0
  354. mindspore/nn/probability/bijector/softplus.py +189 -0
  355. mindspore/nn/probability/bnn_layers/__init__.py +29 -0
  356. mindspore/nn/probability/bnn_layers/_util.py +46 -0
  357. mindspore/nn/probability/bnn_layers/bnn_cell_wrapper.py +112 -0
  358. mindspore/nn/probability/bnn_layers/conv_variational.py +267 -0
  359. mindspore/nn/probability/bnn_layers/dense_variational.py +302 -0
  360. mindspore/nn/probability/bnn_layers/layer_distribution.py +123 -0
  361. mindspore/nn/probability/distribution/__init__.py +56 -0
  362. mindspore/nn/probability/distribution/_utils/__init__.py +34 -0
  363. mindspore/nn/probability/distribution/_utils/custom_ops.py +96 -0
  364. mindspore/nn/probability/distribution/_utils/utils.py +362 -0
  365. mindspore/nn/probability/distribution/bernoulli.py +334 -0
  366. mindspore/nn/probability/distribution/beta.py +391 -0
  367. mindspore/nn/probability/distribution/categorical.py +435 -0
  368. mindspore/nn/probability/distribution/cauchy.py +383 -0
  369. mindspore/nn/probability/distribution/distribution.py +827 -0
  370. mindspore/nn/probability/distribution/exponential.py +350 -0
  371. mindspore/nn/probability/distribution/gamma.py +391 -0
  372. mindspore/nn/probability/distribution/geometric.py +335 -0
  373. mindspore/nn/probability/distribution/gumbel.py +257 -0
  374. mindspore/nn/probability/distribution/half_normal.py +133 -0
  375. mindspore/nn/probability/distribution/laplace.py +128 -0
  376. mindspore/nn/probability/distribution/log_normal.py +272 -0
  377. mindspore/nn/probability/distribution/logistic.py +379 -0
  378. mindspore/nn/probability/distribution/normal.py +336 -0
  379. mindspore/nn/probability/distribution/poisson.py +288 -0
  380. mindspore/nn/probability/distribution/student_t.py +149 -0
  381. mindspore/nn/probability/distribution/transformed_distribution.py +235 -0
  382. mindspore/nn/probability/distribution/uniform.py +375 -0
  383. mindspore/nn/reinforcement/__init__.py +24 -0
  384. mindspore/nn/reinforcement/_batch_read_write.py +142 -0
  385. mindspore/nn/reinforcement/_tensors_queue.py +152 -0
  386. mindspore/nn/reinforcement/tensor_array.py +145 -0
  387. mindspore/nn/sparse/__init__.py +23 -0
  388. mindspore/nn/sparse/sparse.py +147 -0
  389. mindspore/nn/wrap/__init__.py +49 -0
  390. mindspore/nn/wrap/cell_wrapper.py +968 -0
  391. mindspore/nn/wrap/grad_reducer.py +608 -0
  392. mindspore/nn/wrap/loss_scale.py +694 -0
  393. mindspore/numpy/__init__.py +121 -0
  394. mindspore/numpy/array_creations.py +2731 -0
  395. mindspore/numpy/array_ops.py +2629 -0
  396. mindspore/numpy/dtypes.py +185 -0
  397. mindspore/numpy/fft.py +966 -0
  398. mindspore/numpy/logic_ops.py +936 -0
  399. mindspore/numpy/math_ops.py +5911 -0
  400. mindspore/numpy/utils.py +214 -0
  401. mindspore/numpy/utils_const.py +565 -0
  402. mindspore/ops/__init__.py +56 -0
  403. mindspore/ops/_constants.py +30 -0
  404. mindspore/ops/_grad_experimental/__init__.py +31 -0
  405. mindspore/ops/_grad_experimental/grad_array_ops.py +830 -0
  406. mindspore/ops/_grad_experimental/grad_base.py +143 -0
  407. mindspore/ops/_grad_experimental/grad_comm_ops.py +714 -0
  408. mindspore/ops/_grad_experimental/grad_debug_ops.py +31 -0
  409. mindspore/ops/_grad_experimental/grad_implementations.py +203 -0
  410. mindspore/ops/_grad_experimental/grad_inner_ops.py +79 -0
  411. mindspore/ops/_grad_experimental/grad_math_ops.py +802 -0
  412. mindspore/ops/_grad_experimental/grad_nn_ops.py +231 -0
  413. mindspore/ops/_grad_experimental/grad_quant_ops.py +238 -0
  414. mindspore/ops/_grad_experimental/grad_sparse.py +342 -0
  415. mindspore/ops/_grad_experimental/grad_sparse_ops.py +399 -0
  416. mindspore/ops/_grad_experimental/taylor_rule.py +220 -0
  417. mindspore/ops/_op_impl/__init__.py +23 -0
  418. mindspore/ops/_op_impl/_custom_op/__init__.py +39 -0
  419. mindspore/ops/_op_impl/_custom_op/_basic.py +158 -0
  420. mindspore/ops/_op_impl/_custom_op/batch_matmul_impl.py +279 -0
  421. mindspore/ops/_op_impl/_custom_op/batchnorm_fold.py +156 -0
  422. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2.py +109 -0
  423. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad.py +125 -0
  424. mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad_reduce.py +105 -0
  425. mindspore/ops/_op_impl/_custom_op/batchnorm_fold_grad.py +124 -0
  426. mindspore/ops/_op_impl/_custom_op/cholesky_trsm_impl.py +116 -0
  427. mindspore/ops/_op_impl/_custom_op/correction_mul.py +89 -0
  428. mindspore/ops/_op_impl/_custom_op/correction_mul_grad.py +196 -0
  429. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +366 -0
  430. mindspore/ops/_op_impl/_custom_op/dsd_impl.py +162 -0
  431. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel.py +136 -0
  432. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad.py +206 -0
  433. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad_reduce.py +88 -0
  434. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer.py +128 -0
  435. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad.py +199 -0
  436. mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad_reduce.py +88 -0
  437. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel.py +156 -0
  438. mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel_grad.py +184 -0
  439. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer.py +143 -0
  440. mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer_grad.py +169 -0
  441. mindspore/ops/_op_impl/_custom_op/fused_abs_max1_impl.py +548 -0
  442. mindspore/ops/_op_impl/_custom_op/img2col_impl.py +881 -0
  443. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_left_impl.py +278 -0
  444. mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_right_impl.py +200 -0
  445. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_left_cast_impl.py +334 -0
  446. mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_right_mul_impl.py +255 -0
  447. mindspore/ops/_op_impl/_custom_op/matmul_cube_impl.py +222 -0
  448. mindspore/ops/_op_impl/_custom_op/matmul_dds_grad_impl.py +644 -0
  449. mindspore/ops/_op_impl/_custom_op/matmul_dds_impl.py +488 -0
  450. mindspore/ops/_op_impl/_custom_op/matrix_combine_impl.py +87 -0
  451. mindspore/ops/_op_impl/_custom_op/minmax_update_perchannel.py +129 -0
  452. mindspore/ops/_op_impl/_custom_op/minmax_update_perlayer.py +121 -0
  453. mindspore/ops/_op_impl/_custom_op/transpose02314_impl.py +352 -0
  454. mindspore/ops/_op_impl/aicpu/__init__.py +441 -0
  455. mindspore/ops/_op_impl/aicpu/abs.py +36 -0
  456. mindspore/ops/_op_impl/aicpu/acos.py +32 -0
  457. mindspore/ops/_op_impl/aicpu/acos_grad.py +33 -0
  458. mindspore/ops/_op_impl/aicpu/acosh.py +34 -0
  459. mindspore/ops/_op_impl/aicpu/acosh_grad.py +35 -0
  460. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d.py +34 -0
  461. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d_grad.py +34 -0
  462. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d.py +39 -0
  463. mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d_grad.py +39 -0
  464. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d.py +37 -0
  465. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d_grad.py +37 -0
  466. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d.py +42 -0
  467. mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d_grad.py +152 -0
  468. mindspore/ops/_op_impl/aicpu/add.py +43 -0
  469. mindspore/ops/_op_impl/aicpu/add_n.py +41 -0
  470. mindspore/ops/_op_impl/aicpu/add_v2.py +40 -0
  471. mindspore/ops/_op_impl/aicpu/addcdiv.py +41 -0
  472. mindspore/ops/_op_impl/aicpu/addcmul.py +47 -0
  473. mindspore/ops/_op_impl/aicpu/adjust_contrastv2.py +32 -0
  474. mindspore/ops/_op_impl/aicpu/adjust_hue.py +31 -0
  475. mindspore/ops/_op_impl/aicpu/adjust_saturation.py +32 -0
  476. mindspore/ops/_op_impl/aicpu/affine_grid.py +33 -0
  477. mindspore/ops/_op_impl/aicpu/affine_grid_grad.py +35 -0
  478. mindspore/ops/_op_impl/aicpu/angle.py +31 -0
  479. mindspore/ops/_op_impl/aicpu/arg_max.py +75 -0
  480. mindspore/ops/_op_impl/aicpu/arg_min.py +75 -0
  481. mindspore/ops/_op_impl/aicpu/argmax_with_value.py +43 -0
  482. mindspore/ops/_op_impl/aicpu/argmin_with_value.py +43 -0
  483. mindspore/ops/_op_impl/aicpu/asin.py +32 -0
  484. mindspore/ops/_op_impl/aicpu/asin_grad.py +33 -0
  485. mindspore/ops/_op_impl/aicpu/asinh.py +34 -0
  486. mindspore/ops/_op_impl/aicpu/asinh_grad.py +35 -0
  487. mindspore/ops/_op_impl/aicpu/atanh.py +34 -0
  488. mindspore/ops/_op_impl/aicpu/avgpool_grad_v1.py +37 -0
  489. mindspore/ops/_op_impl/aicpu/avgpool_v1.py +36 -0
  490. mindspore/ops/_op_impl/aicpu/bartlett_window.py +36 -0
  491. mindspore/ops/_op_impl/aicpu/batch_matmul.py +43 -0
  492. mindspore/ops/_op_impl/aicpu/batch_norm_grad_grad.py +49 -0
  493. mindspore/ops/_op_impl/aicpu/bernoulli.py +48 -0
  494. mindspore/ops/_op_impl/aicpu/bessel_i0.py +31 -0
  495. mindspore/ops/_op_impl/aicpu/betainc.py +31 -0
  496. mindspore/ops/_op_impl/aicpu/bias_add.py +44 -0
  497. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +42 -0
  498. mindspore/ops/_op_impl/aicpu/bincount.py +33 -0
  499. mindspore/ops/_op_impl/aicpu/blackman_window.py +36 -0
  500. mindspore/ops/_op_impl/aicpu/broadcast_to.py +58 -0
  501. mindspore/ops/_op_impl/aicpu/bucketize.py +34 -0
  502. mindspore/ops/_op_impl/aicpu/cache_swap_table.py +102 -0
  503. mindspore/ops/_op_impl/aicpu/cast.py +225 -0
  504. mindspore/ops/_op_impl/aicpu/cauchy.py +33 -0
  505. mindspore/ops/_op_impl/aicpu/channel_shuffle.py +40 -0
  506. mindspore/ops/_op_impl/aicpu/check_numerics.py +33 -0
  507. mindspore/ops/_op_impl/aicpu/cholesky.py +32 -0
  508. mindspore/ops/_op_impl/aicpu/cholesky_inverse.py +31 -0
  509. mindspore/ops/_op_impl/aicpu/cholesky_solve.py +33 -0
  510. mindspore/ops/_op_impl/aicpu/choleskygrad.py +32 -0
  511. mindspore/ops/_op_impl/aicpu/coalesce.py +37 -0
  512. mindspore/ops/_op_impl/aicpu/col2im.py +38 -0
  513. mindspore/ops/_op_impl/aicpu/combined_non_max_suppression.py +42 -0
  514. mindspore/ops/_op_impl/aicpu/compare_and_bitpack.py +37 -0
  515. mindspore/ops/_op_impl/aicpu/complex.py +32 -0
  516. mindspore/ops/_op_impl/aicpu/complex_abs.py +31 -0
  517. mindspore/ops/_op_impl/aicpu/compute_accidental_hits.py +44 -0
  518. mindspore/ops/_op_impl/aicpu/concat.py +57 -0
  519. mindspore/ops/_op_impl/aicpu/concat_offset.py +42 -0
  520. mindspore/ops/_op_impl/aicpu/concat_offset_v1.py +31 -0
  521. mindspore/ops/_op_impl/aicpu/conj.py +42 -0
  522. mindspore/ops/_op_impl/aicpu/conjugate_transpose.py +58 -0
  523. mindspore/ops/_op_impl/aicpu/cos.py +34 -0
  524. mindspore/ops/_op_impl/aicpu/cosh.py +34 -0
  525. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  526. mindspore/ops/_op_impl/aicpu/crop_and_resize.py +69 -0
  527. mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_boxes.py +68 -0
  528. mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_image.py +38 -0
  529. mindspore/ops/_op_impl/aicpu/cross.py +42 -0
  530. mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_dense.py +48 -0
  531. mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_sparse_tensor.py +51 -0
  532. mindspore/ops/_op_impl/aicpu/ctc_greedy_decoder.py +35 -0
  533. mindspore/ops/_op_impl/aicpu/ctc_loss_v2.py +43 -0
  534. mindspore/ops/_op_impl/aicpu/ctc_loss_v2_grad.py +45 -0
  535. mindspore/ops/_op_impl/aicpu/ctcloss.py +38 -0
  536. mindspore/ops/_op_impl/aicpu/cummax.py +41 -0
  537. mindspore/ops/_op_impl/aicpu/cumprod.py +58 -0
  538. mindspore/ops/_op_impl/aicpu/cumsum.py +58 -0
  539. mindspore/ops/_op_impl/aicpu/cumulative_logsumexp.py +36 -0
  540. mindspore/ops/_op_impl/aicpu/data_format_vec_permute.py +32 -0
  541. mindspore/ops/_op_impl/aicpu/deformable_offsets.py +38 -0
  542. mindspore/ops/_op_impl/aicpu/deformable_offsets_grad.py +43 -0
  543. mindspore/ops/_op_impl/aicpu/dense_to_csr_sparse_matrix.py +49 -0
  544. mindspore/ops/_op_impl/aicpu/dense_to_dense_set_operation.py +45 -0
  545. mindspore/ops/_op_impl/aicpu/dense_to_sparse_set_operation.py +48 -0
  546. mindspore/ops/_op_impl/aicpu/depth_to_space.py +44 -0
  547. mindspore/ops/_op_impl/aicpu/diag.py +36 -0
  548. mindspore/ops/_op_impl/aicpu/diag_part.py +36 -0
  549. mindspore/ops/_op_impl/aicpu/diagonal.py +35 -0
  550. mindspore/ops/_op_impl/aicpu/digamma.py +31 -0
  551. mindspore/ops/_op_impl/aicpu/div.py +41 -0
  552. mindspore/ops/_op_impl/aicpu/div_no_nan.py +35 -0
  553. mindspore/ops/_op_impl/aicpu/dropout2d.py +42 -0
  554. mindspore/ops/_op_impl/aicpu/dropout3d.py +42 -0
  555. mindspore/ops/_op_impl/aicpu/dropout_genmask.py +41 -0
  556. mindspore/ops/_op_impl/aicpu/dropout_genmask_v3.py +32 -0
  557. mindspore/ops/_op_impl/aicpu/dynamic_stitch.py +42 -0
  558. mindspore/ops/_op_impl/aicpu/edit_distance.py +56 -0
  559. mindspore/ops/_op_impl/aicpu/eig.py +35 -0
  560. mindspore/ops/_op_impl/aicpu/embedding_lookup.py +102 -0
  561. mindspore/ops/_op_impl/aicpu/end_of_sequence.py +30 -0
  562. mindspore/ops/_op_impl/aicpu/environ_create.py +28 -0
  563. mindspore/ops/_op_impl/aicpu/environ_destroy_all.py +28 -0
  564. mindspore/ops/_op_impl/aicpu/environ_get.py +41 -0
  565. mindspore/ops/_op_impl/aicpu/environ_set.py +40 -0
  566. mindspore/ops/_op_impl/aicpu/eps.py +32 -0
  567. mindspore/ops/_op_impl/aicpu/equal.py +41 -0
  568. mindspore/ops/_op_impl/aicpu/exp.py +37 -0
  569. mindspore/ops/_op_impl/aicpu/expand.py +45 -0
  570. mindspore/ops/_op_impl/aicpu/expand_dims.py +42 -0
  571. mindspore/ops/_op_impl/aicpu/expm1.py +34 -0
  572. mindspore/ops/_op_impl/aicpu/extract_glimpse.py +35 -0
  573. mindspore/ops/_op_impl/aicpu/eye.py +44 -0
  574. mindspore/ops/_op_impl/aicpu/fft_with_size.py +47 -0
  575. mindspore/ops/_op_impl/aicpu/fill_diagonal.py +39 -0
  576. mindspore/ops/_op_impl/aicpu/fill_v2.py +58 -0
  577. mindspore/ops/_op_impl/aicpu/flatten.py +43 -0
  578. mindspore/ops/_op_impl/aicpu/floor_div.py +38 -0
  579. mindspore/ops/_op_impl/aicpu/fmax.py +36 -0
  580. mindspore/ops/_op_impl/aicpu/fmin.py +37 -0
  581. mindspore/ops/_op_impl/aicpu/fractional_avg_pool.py +41 -0
  582. mindspore/ops/_op_impl/aicpu/fractional_avg_pool_grad.py +41 -0
  583. mindspore/ops/_op_impl/aicpu/fractional_max_pool.py +41 -0
  584. mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_grad_with_fixed_ksize.py +43 -0
  585. mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_with_fixed_ksize.py +65 -0
  586. mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad.py +42 -0
  587. mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad_with_fixed_ksize.py +42 -0
  588. mindspore/ops/_op_impl/aicpu/fractional_max_pool_with_fixed_ksize.py +49 -0
  589. mindspore/ops/_op_impl/aicpu/fse_decode.py +43 -0
  590. mindspore/ops/_op_impl/aicpu/fused_sparse_adam.py +46 -0
  591. mindspore/ops/_op_impl/aicpu/fused_sparse_ftrl.py +41 -0
  592. mindspore/ops/_op_impl/aicpu/fused_sparse_lazy_adam.py +46 -0
  593. mindspore/ops/_op_impl/aicpu/fused_sparse_proximal_adagrad.py +39 -0
  594. mindspore/ops/_op_impl/aicpu/gamma.py +38 -0
  595. mindspore/ops/_op_impl/aicpu/gather.py +46 -0
  596. mindspore/ops/_op_impl/aicpu/gather_d.py +79 -0
  597. mindspore/ops/_op_impl/aicpu/gather_d_grad_v2.py +79 -0
  598. mindspore/ops/_op_impl/aicpu/gather_grad.py +54 -0
  599. mindspore/ops/_op_impl/aicpu/gather_nd.py +56 -0
  600. mindspore/ops/_op_impl/aicpu/gcd.py +32 -0
  601. mindspore/ops/_op_impl/aicpu/generate_eod_mask.py +38 -0
  602. mindspore/ops/_op_impl/aicpu/geqrf.py +32 -0
  603. mindspore/ops/_op_impl/aicpu/get_next.py +39 -0
  604. mindspore/ops/_op_impl/aicpu/glu.py +33 -0
  605. mindspore/ops/_op_impl/aicpu/glu_grad.py +34 -0
  606. mindspore/ops/_op_impl/aicpu/greater.py +41 -0
  607. mindspore/ops/_op_impl/aicpu/greater_equal.py +41 -0
  608. mindspore/ops/_op_impl/aicpu/grid_sampler_2d.py +35 -0
  609. mindspore/ops/_op_impl/aicpu/grid_sampler_2d_grad.py +38 -0
  610. mindspore/ops/_op_impl/aicpu/grid_sampler_3d.py +34 -0
  611. mindspore/ops/_op_impl/aicpu/grid_sampler_3d_grad.py +38 -0
  612. mindspore/ops/_op_impl/aicpu/hamming_window.py +57 -0
  613. mindspore/ops/_op_impl/aicpu/hard_sigmoid.py +32 -0
  614. mindspore/ops/_op_impl/aicpu/hard_sigmoid_grad.py +33 -0
  615. mindspore/ops/_op_impl/aicpu/heaviside.py +40 -0
  616. mindspore/ops/_op_impl/aicpu/histogram.py +35 -0
  617. mindspore/ops/_op_impl/aicpu/hsv_to_rgb.py +32 -0
  618. mindspore/ops/_op_impl/aicpu/hypot.py +32 -0
  619. mindspore/ops/_op_impl/aicpu/identity.py +42 -0
  620. mindspore/ops/_op_impl/aicpu/identity_n.py +41 -0
  621. mindspore/ops/_op_impl/aicpu/igamma.py +30 -0
  622. mindspore/ops/_op_impl/aicpu/igammac.py +30 -0
  623. mindspore/ops/_op_impl/aicpu/igammagrada.py +30 -0
  624. mindspore/ops/_op_impl/aicpu/im2col.py +43 -0
  625. mindspore/ops/_op_impl/aicpu/imag.py +31 -0
  626. mindspore/ops/_op_impl/aicpu/index_fill.py +54 -0
  627. mindspore/ops/_op_impl/aicpu/index_put.py +50 -0
  628. mindspore/ops/_op_impl/aicpu/init_data_set_queue.py +27 -0
  629. mindspore/ops/_op_impl/aicpu/inplace_index_add.py +39 -0
  630. mindspore/ops/_op_impl/aicpu/instance_norm_v2.py +41 -0
  631. mindspore/ops/_op_impl/aicpu/instance_norm_v2_grad.py +44 -0
  632. mindspore/ops/_op_impl/aicpu/is_finite.py +40 -0
  633. mindspore/ops/_op_impl/aicpu/is_inf.py +31 -0
  634. mindspore/ops/_op_impl/aicpu/is_nan.py +31 -0
  635. mindspore/ops/_op_impl/aicpu/kldivloss.py +34 -0
  636. mindspore/ops/_op_impl/aicpu/kldivlossgrad.py +35 -0
  637. mindspore/ops/_op_impl/aicpu/layer_norm_grad_grad.py +47 -0
  638. mindspore/ops/_op_impl/aicpu/lcm.py +32 -0
  639. mindspore/ops/_op_impl/aicpu/left_shift.py +38 -0
  640. mindspore/ops/_op_impl/aicpu/less.py +41 -0
  641. mindspore/ops/_op_impl/aicpu/less_equal.py +41 -0
  642. mindspore/ops/_op_impl/aicpu/lgamma.py +33 -0
  643. mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +57 -0
  644. mindspore/ops/_op_impl/aicpu/linspace.py +33 -0
  645. mindspore/ops/_op_impl/aicpu/list_diff.py +50 -0
  646. mindspore/ops/_op_impl/aicpu/log.py +37 -0
  647. mindspore/ops/_op_impl/aicpu/log1p.py +34 -0
  648. mindspore/ops/_op_impl/aicpu/log_matrix_determinant.py +31 -0
  649. mindspore/ops/_op_impl/aicpu/log_normal_reverse.py +33 -0
  650. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +37 -0
  651. mindspore/ops/_op_impl/aicpu/logical_xor.py +30 -0
  652. mindspore/ops/_op_impl/aicpu/logit.py +33 -0
  653. mindspore/ops/_op_impl/aicpu/logit_grad.py +34 -0
  654. mindspore/ops/_op_impl/aicpu/logspace.py +36 -0
  655. mindspore/ops/_op_impl/aicpu/lower_bound.py +47 -0
  656. mindspore/ops/_op_impl/aicpu/lstsq.py +34 -0
  657. mindspore/ops/_op_impl/aicpu/lu.py +39 -0
  658. mindspore/ops/_op_impl/aicpu/lu_solve.py +32 -0
  659. mindspore/ops/_op_impl/aicpu/lu_unpack.py +114 -0
  660. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +49 -0
  661. mindspore/ops/_op_impl/aicpu/masked_fill.py +42 -0
  662. mindspore/ops/_op_impl/aicpu/masked_scatter.py +40 -0
  663. mindspore/ops/_op_impl/aicpu/masked_select.py +31 -0
  664. mindspore/ops/_op_impl/aicpu/masked_select_grad.py +35 -0
  665. mindspore/ops/_op_impl/aicpu/matmul.py +39 -0
  666. mindspore/ops/_op_impl/aicpu/matrix_band_part.py +59 -0
  667. mindspore/ops/_op_impl/aicpu/matrix_determinant.py +30 -0
  668. mindspore/ops/_op_impl/aicpu/matrix_diag_part_v3.py +54 -0
  669. mindspore/ops/_op_impl/aicpu/matrix_diag_v3.py +56 -0
  670. mindspore/ops/_op_impl/aicpu/matrix_exp.py +34 -0
  671. mindspore/ops/_op_impl/aicpu/matrix_inverse.py +31 -0
  672. mindspore/ops/_op_impl/aicpu/matrix_logarithm.py +31 -0
  673. mindspore/ops/_op_impl/aicpu/matrix_power.py +37 -0
  674. mindspore/ops/_op_impl/aicpu/matrix_set_diag_v3.py +54 -0
  675. mindspore/ops/_op_impl/aicpu/matrix_solve.py +35 -0
  676. mindspore/ops/_op_impl/aicpu/matrix_solve_ls.py +36 -0
  677. mindspore/ops/_op_impl/aicpu/matrix_triangular_solve.py +36 -0
  678. mindspore/ops/_op_impl/aicpu/max_pool3d_grad_with_argmax.py +60 -0
  679. mindspore/ops/_op_impl/aicpu/max_pool3d_with_argmax.py +59 -0
  680. mindspore/ops/_op_impl/aicpu/max_unpool2d.py +57 -0
  681. mindspore/ops/_op_impl/aicpu/max_unpool2d_grad.py +58 -0
  682. mindspore/ops/_op_impl/aicpu/max_unpool3d.py +57 -0
  683. mindspore/ops/_op_impl/aicpu/max_unpool3d_grad.py +58 -0
  684. mindspore/ops/_op_impl/aicpu/maximum_grad_grad.py +40 -0
  685. mindspore/ops/_op_impl/aicpu/maxpool_grad_v1.py +46 -0
  686. mindspore/ops/_op_impl/aicpu/maxpool_v1.py +42 -0
  687. mindspore/ops/_op_impl/aicpu/median.py +39 -0
  688. mindspore/ops/_op_impl/aicpu/median_grad.py +45 -0
  689. mindspore/ops/_op_impl/aicpu/meshgrid.py +41 -0
  690. mindspore/ops/_op_impl/aicpu/minimum_grad_grad.py +40 -0
  691. mindspore/ops/_op_impl/aicpu/mirror_pad.py +50 -0
  692. mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py +48 -0
  693. mindspore/ops/_op_impl/aicpu/mul.py +43 -0
  694. mindspore/ops/_op_impl/aicpu/mul_no_nan.py +42 -0
  695. mindspore/ops/_op_impl/aicpu/multi_margin_loss.py +37 -0
  696. mindspore/ops/_op_impl/aicpu/multi_margin_loss_grad.py +41 -0
  697. mindspore/ops/_op_impl/aicpu/multilabel_margin_loss_grad.py +37 -0
  698. mindspore/ops/_op_impl/aicpu/multinomial.py +47 -0
  699. mindspore/ops/_op_impl/aicpu/multinomial_with_replacement.py +35 -0
  700. mindspore/ops/_op_impl/aicpu/mvlgamma.py +32 -0
  701. mindspore/ops/_op_impl/aicpu/mvlgamma_grad.py +33 -0
  702. mindspore/ops/_op_impl/aicpu/nan_to_num.py +34 -0
  703. mindspore/ops/_op_impl/aicpu/neg.py +36 -0
  704. mindspore/ops/_op_impl/aicpu/nextafter.py +32 -0
  705. mindspore/ops/_op_impl/aicpu/nllloss.py +38 -0
  706. mindspore/ops/_op_impl/aicpu/nllloss_grad.py +39 -0
  707. mindspore/ops/_op_impl/aicpu/no_repeat_ngram.py +34 -0
  708. mindspore/ops/_op_impl/aicpu/non_deterministic_ints.py +33 -0
  709. mindspore/ops/_op_impl/aicpu/non_max_suppression.py +36 -0
  710. mindspore/ops/_op_impl/aicpu/non_max_suppression_with_overlaps.py +35 -0
  711. mindspore/ops/_op_impl/aicpu/non_zero.py +43 -0
  712. mindspore/ops/_op_impl/aicpu/not_equal.py +39 -0
  713. mindspore/ops/_op_impl/aicpu/nth_element.py +39 -0
  714. mindspore/ops/_op_impl/aicpu/nuclear_norm.py +33 -0
  715. mindspore/ops/_op_impl/aicpu/one_hot.py +116 -0
  716. mindspore/ops/_op_impl/aicpu/ones_like.py +39 -0
  717. mindspore/ops/_op_impl/aicpu/orgqr.py +34 -0
  718. mindspore/ops/_op_impl/aicpu/pad_and_shift.py +33 -0
  719. mindspore/ops/_op_impl/aicpu/pad_v3.py +61 -0
  720. mindspore/ops/_op_impl/aicpu/pad_v3_grad.py +59 -0
  721. mindspore/ops/_op_impl/aicpu/padding.py +41 -0
  722. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +54 -0
  723. mindspore/ops/_op_impl/aicpu/pdist_grad.py +33 -0
  724. mindspore/ops/_op_impl/aicpu/poisson.py +37 -0
  725. mindspore/ops/_op_impl/aicpu/polar.py +32 -0
  726. mindspore/ops/_op_impl/aicpu/polygamma.py +34 -0
  727. mindspore/ops/_op_impl/aicpu/pow.py +39 -0
  728. mindspore/ops/_op_impl/aicpu/print_tensor.py +39 -0
  729. mindspore/ops/_op_impl/aicpu/priority_replay_buffer.py +113 -0
  730. mindspore/ops/_op_impl/aicpu/qr.py +36 -0
  731. mindspore/ops/_op_impl/aicpu/quant_dtype_cast.py +40 -0
  732. mindspore/ops/_op_impl/aicpu/quantile.py +35 -0
  733. mindspore/ops/_op_impl/aicpu/ragged_range.py +49 -0
  734. mindspore/ops/_op_impl/aicpu/ragged_tensor_to_sparse.py +73 -0
  735. mindspore/ops/_op_impl/aicpu/ragged_tensor_to_tensor.py +74 -0
  736. mindspore/ops/_op_impl/aicpu/random_categorical.py +68 -0
  737. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +36 -0
  738. mindspore/ops/_op_impl/aicpu/random_gamma.py +38 -0
  739. mindspore/ops/_op_impl/aicpu/random_poisson.py +134 -0
  740. mindspore/ops/_op_impl/aicpu/random_shuffle.py +47 -0
  741. mindspore/ops/_op_impl/aicpu/randperm.py +38 -0
  742. mindspore/ops/_op_impl/aicpu/randperm_v2.py +41 -0
  743. mindspore/ops/_op_impl/aicpu/range.py +36 -0
  744. mindspore/ops/_op_impl/aicpu/range_v2.py +35 -0
  745. mindspore/ops/_op_impl/aicpu/real.py +31 -0
  746. mindspore/ops/_op_impl/aicpu/real_div.py +40 -0
  747. mindspore/ops/_op_impl/aicpu/reciprocal.py +34 -0
  748. mindspore/ops/_op_impl/aicpu/reciprocal_grad.py +35 -0
  749. mindspore/ops/_op_impl/aicpu/reduce_mean.py +57 -0
  750. mindspore/ops/_op_impl/aicpu/reduce_prod.py +57 -0
  751. mindspore/ops/_op_impl/aicpu/reduce_sum.py +57 -0
  752. mindspore/ops/_op_impl/aicpu/relu_grad_v3.py +41 -0
  753. mindspore/ops/_op_impl/aicpu/relu_v3.py +38 -0
  754. mindspore/ops/_op_impl/aicpu/reservoir_replay_buffer.py +96 -0
  755. mindspore/ops/_op_impl/aicpu/reshape.py +42 -0
  756. mindspore/ops/_op_impl/aicpu/resize_area.py +40 -0
  757. mindspore/ops/_op_impl/aicpu/resize_bicubic.py +20 -0
  758. mindspore/ops/_op_impl/aicpu/resize_bicubic_grad.py +19 -0
  759. mindspore/ops/_op_impl/aicpu/resize_bilinear.py +32 -0
  760. mindspore/ops/_op_impl/aicpu/resize_bilinear_grad.py +32 -0
  761. mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2.py +36 -0
  762. mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2_grad.py +35 -0
  763. mindspore/ops/_op_impl/aicpu/resize_v2.py +68 -0
  764. mindspore/ops/_op_impl/aicpu/resize_v2_grad.py +68 -0
  765. mindspore/ops/_op_impl/aicpu/reverse_sequence.py +55 -0
  766. mindspore/ops/_op_impl/aicpu/reversev2.py +54 -0
  767. mindspore/ops/_op_impl/aicpu/rgb_to_hsv.py +32 -0
  768. mindspore/ops/_op_impl/aicpu/right_shift.py +38 -0
  769. mindspore/ops/_op_impl/aicpu/rnnt_loss.py +35 -0
  770. mindspore/ops/_op_impl/aicpu/round.py +34 -0
  771. mindspore/ops/_op_impl/aicpu/rsqrt.py +33 -0
  772. mindspore/ops/_op_impl/aicpu/rsqrt_grad.py +36 -0
  773. mindspore/ops/_op_impl/aicpu/sample_distorted_bounding_box_v2.py +49 -0
  774. mindspore/ops/_op_impl/aicpu/scale_and_translate.py +52 -0
  775. mindspore/ops/_op_impl/aicpu/scale_and_translate_grad.py +36 -0
  776. mindspore/ops/_op_impl/aicpu/scatter.py +79 -0
  777. mindspore/ops/_op_impl/aicpu/scatter_add_with_axis.py +53 -0
  778. mindspore/ops/_op_impl/aicpu/scatter_elements.py +39 -0
  779. mindspore/ops/_op_impl/aicpu/scatter_nd.py +59 -0
  780. mindspore/ops/_op_impl/aicpu/scatter_nd_max.py +54 -0
  781. mindspore/ops/_op_impl/aicpu/scatter_nd_min.py +54 -0
  782. mindspore/ops/_op_impl/aicpu/scatter_nd_update.py +59 -0
  783. mindspore/ops/_op_impl/aicpu/search_sorted.py +44 -0
  784. mindspore/ops/_op_impl/aicpu/segment_max.py +52 -0
  785. mindspore/ops/_op_impl/aicpu/segment_mean.py +56 -0
  786. mindspore/ops/_op_impl/aicpu/segment_min.py +52 -0
  787. mindspore/ops/_op_impl/aicpu/segment_prod.py +56 -0
  788. mindspore/ops/_op_impl/aicpu/segment_sum.py +56 -0
  789. mindspore/ops/_op_impl/aicpu/select.py +45 -0
  790. mindspore/ops/_op_impl/aicpu/self_adjoint_eig.py +34 -0
  791. mindspore/ops/_op_impl/aicpu/sequence_add.py +34 -0
  792. mindspore/ops/_op_impl/aicpu/sequence_add_offset.py +34 -0
  793. mindspore/ops/_op_impl/aicpu/sequence_addn.py +38 -0
  794. mindspore/ops/_op_impl/aicpu/sequence_concat.py +40 -0
  795. mindspore/ops/_op_impl/aicpu/sequence_stack.py +40 -0
  796. mindspore/ops/_op_impl/aicpu/set_size.py +38 -0
  797. mindspore/ops/_op_impl/aicpu/sign.py +36 -0
  798. mindspore/ops/_op_impl/aicpu/sin.py +34 -0
  799. mindspore/ops/_op_impl/aicpu/sinc.py +43 -0
  800. mindspore/ops/_op_impl/aicpu/sinh.py +34 -0
  801. mindspore/ops/_op_impl/aicpu/slice.py +59 -0
  802. mindspore/ops/_op_impl/aicpu/slice_grad.py +76 -0
  803. mindspore/ops/_op_impl/aicpu/smooth_l1_loss.py +35 -0
  804. mindspore/ops/_op_impl/aicpu/smooth_l1_loss_grad.py +37 -0
  805. mindspore/ops/_op_impl/aicpu/sort.py +39 -0
  806. mindspore/ops/_op_impl/aicpu/space_to_depth.py +44 -0
  807. mindspore/ops/_op_impl/aicpu/sparse_addmm.py +87 -0
  808. mindspore/ops/_op_impl/aicpu/sparse_apply_adagrad_da.py +80 -0
  809. mindspore/ops/_op_impl/aicpu/sparse_apply_centered_rms_prop.py +105 -0
  810. mindspore/ops/_op_impl/aicpu/sparse_apply_momentum.py +80 -0
  811. mindspore/ops/_op_impl/aicpu/sparse_apply_proximal_gradient_descent.py +79 -0
  812. mindspore/ops/_op_impl/aicpu/sparse_concat.py +59 -0
  813. mindspore/ops/_op_impl/aicpu/sparse_cross.py +42 -0
  814. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_add.py +58 -0
  815. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_div.py +58 -0
  816. mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_mul.py +58 -0
  817. mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows.py +63 -0
  818. mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows_grad.py +45 -0
  819. mindspore/ops/_op_impl/aicpu/sparse_matrix_mat_mul.py +56 -0
  820. mindspore/ops/_op_impl/aicpu/sparse_matrix_nnz.py +81 -0
  821. mindspore/ops/_op_impl/aicpu/sparse_matrix_transpose.py +116 -0
  822. mindspore/ops/_op_impl/aicpu/sparse_reorder.py +56 -0
  823. mindspore/ops/_op_impl/aicpu/sparse_reshape.py +34 -0
  824. mindspore/ops/_op_impl/aicpu/sparse_segment_mean_grad.py +36 -0
  825. mindspore/ops/_op_impl/aicpu/sparse_segment_mean_with_num_segments.py +44 -0
  826. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n.py +43 -0
  827. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_grad.py +38 -0
  828. mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_with_num_segments.py +44 -0
  829. mindspore/ops/_op_impl/aicpu/sparse_segment_sum.py +49 -0
  830. mindspore/ops/_op_impl/aicpu/sparse_segment_sum_with_num_segments.py +68 -0
  831. mindspore/ops/_op_impl/aicpu/sparse_slice.py +63 -0
  832. mindspore/ops/_op_impl/aicpu/sparse_slice_grad.py +61 -0
  833. mindspore/ops/_op_impl/aicpu/sparse_softmax.py +33 -0
  834. mindspore/ops/_op_impl/aicpu/sparse_softmax_cross_entropy_with_logits_v2.py +35 -0
  835. mindspore/ops/_op_impl/aicpu/sparse_sparse_maximum.py +53 -0
  836. mindspore/ops/_op_impl/aicpu/sparse_sparse_minimum.py +53 -0
  837. mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_add.py +84 -0
  838. mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_mat_mul.py +190 -0
  839. mindspore/ops/_op_impl/aicpu/sparse_tensor_to_csr_sparse_matrix.py +51 -0
  840. mindspore/ops/_op_impl/aicpu/sparse_to_dense_v2.py +73 -0
  841. mindspore/ops/_op_impl/aicpu/split.py +45 -0
  842. mindspore/ops/_op_impl/aicpu/sqrt.py +34 -0
  843. mindspore/ops/_op_impl/aicpu/sqrt_grad.py +35 -0
  844. mindspore/ops/_op_impl/aicpu/square.py +35 -0
  845. mindspore/ops/_op_impl/aicpu/squared_difference.py +37 -0
  846. mindspore/ops/_op_impl/aicpu/squeeze.py +42 -0
  847. mindspore/ops/_op_impl/aicpu/sspaddmm.py +97 -0
  848. mindspore/ops/_op_impl/aicpu/stack.py +45 -0
  849. mindspore/ops/_op_impl/aicpu/stack_push_pop.py +87 -0
  850. mindspore/ops/_op_impl/aicpu/standard_laplace.py +34 -0
  851. mindspore/ops/_op_impl/aicpu/standard_normal.py +34 -0
  852. mindspore/ops/_op_impl/aicpu/stateless_dropout_genmask.py +37 -0
  853. mindspore/ops/_op_impl/aicpu/stft.py +70 -0
  854. mindspore/ops/_op_impl/aicpu/strided_slice.py +43 -0
  855. mindspore/ops/_op_impl/aicpu/strided_slice_grad.py +50 -0
  856. mindspore/ops/_op_impl/aicpu/sub.py +41 -0
  857. mindspore/ops/_op_impl/aicpu/sub_and_filter.py +36 -0
  858. mindspore/ops/_op_impl/aicpu/tan.py +34 -0
  859. mindspore/ops/_op_impl/aicpu/tanh.py +34 -0
  860. mindspore/ops/_op_impl/aicpu/tanh_grad.py +35 -0
  861. mindspore/ops/_op_impl/aicpu/tensor_scatter_update.py +59 -0
  862. mindspore/ops/_op_impl/aicpu/tile.py +56 -0
  863. mindspore/ops/_op_impl/aicpu/topk.py +34 -0
  864. mindspore/ops/_op_impl/aicpu/trace.py +40 -0
  865. mindspore/ops/_op_impl/aicpu/tracegrad.py +41 -0
  866. mindspore/ops/_op_impl/aicpu/trans_data.py +35 -0
  867. mindspore/ops/_op_impl/aicpu/transpose.py +58 -0
  868. mindspore/ops/_op_impl/aicpu/tridiagonal_matmul.py +42 -0
  869. mindspore/ops/_op_impl/aicpu/tridiagonal_solve.py +35 -0
  870. mindspore/ops/_op_impl/aicpu/tril.py +42 -0
  871. mindspore/ops/_op_impl/aicpu/tril_indices.py +34 -0
  872. mindspore/ops/_op_impl/aicpu/triplet_margin_loss.py +62 -0
  873. mindspore/ops/_op_impl/aicpu/triu.py +43 -0
  874. mindspore/ops/_op_impl/aicpu/triu_indices.py +34 -0
  875. mindspore/ops/_op_impl/aicpu/truncated_normal.py +39 -0
  876. mindspore/ops/_op_impl/aicpu/uniform.py +36 -0
  877. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +41 -0
  878. mindspore/ops/_op_impl/aicpu/uniform_int.py +36 -0
  879. mindspore/ops/_op_impl/aicpu/uniform_real.py +33 -0
  880. mindspore/ops/_op_impl/aicpu/unique.py +31 -0
  881. mindspore/ops/_op_impl/aicpu/unique_consecutive.py +47 -0
  882. mindspore/ops/_op_impl/aicpu/unique_with_pad.py +32 -0
  883. mindspore/ops/_op_impl/aicpu/unravel_index.py +32 -0
  884. mindspore/ops/_op_impl/aicpu/unsorted_segment_prod.py +53 -0
  885. mindspore/ops/_op_impl/aicpu/unsorted_segment_sum.py +57 -0
  886. mindspore/ops/_op_impl/aicpu/unstack.py +45 -0
  887. mindspore/ops/_op_impl/aicpu/update_cache.py +44 -0
  888. mindspore/ops/_op_impl/aicpu/upper_bound.py +47 -0
  889. mindspore/ops/_op_impl/aicpu/upsample_nearest_3d.py +42 -0
  890. mindspore/ops/_op_impl/aicpu/upsample_nearest_3d_grad.py +49 -0
  891. mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d.py +40 -0
  892. mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d_grad.py +50 -0
  893. mindspore/ops/_op_impl/aicpu/xdivy.py +35 -0
  894. mindspore/ops/_op_impl/aicpu/xlogy.py +33 -0
  895. mindspore/ops/_op_impl/aicpu/zeros_like.py +42 -0
  896. mindspore/ops/_op_impl/aicpu/zeta.py +31 -0
  897. mindspore/ops/_op_impl/akg/__init__.py +19 -0
  898. mindspore/ops/_op_impl/akg/ascend/__init__.py +48 -0
  899. mindspore/ops/_op_impl/akg/ascend/abs.py +35 -0
  900. mindspore/ops/_op_impl/akg/ascend/add.py +42 -0
  901. mindspore/ops/_op_impl/akg/ascend/add_n.py +37 -0
  902. mindspore/ops/_op_impl/akg/ascend/batchmatmul.py +33 -0
  903. mindspore/ops/_op_impl/akg/ascend/cast.py +46 -0
  904. mindspore/ops/_op_impl/akg/ascend/equal.py +35 -0
  905. mindspore/ops/_op_impl/akg/ascend/exp.py +35 -0
  906. mindspore/ops/_op_impl/akg/ascend/expand_dims.py +33 -0
  907. mindspore/ops/_op_impl/akg/ascend/greater.py +34 -0
  908. mindspore/ops/_op_impl/akg/ascend/greater_equal.py +35 -0
  909. mindspore/ops/_op_impl/akg/ascend/less.py +31 -0
  910. mindspore/ops/_op_impl/akg/ascend/less_equal.py +35 -0
  911. mindspore/ops/_op_impl/akg/ascend/load_im2col.py +33 -0
  912. mindspore/ops/_op_impl/akg/ascend/log.py +34 -0
  913. mindspore/ops/_op_impl/akg/ascend/maximum.py +36 -0
  914. mindspore/ops/_op_impl/akg/ascend/minimum.py +39 -0
  915. mindspore/ops/_op_impl/akg/ascend/mul.py +41 -0
  916. mindspore/ops/_op_impl/akg/ascend/neg.py +37 -0
  917. mindspore/ops/_op_impl/akg/ascend/pow.py +35 -0
  918. mindspore/ops/_op_impl/akg/ascend/prod_force_se_a.py +33 -0
  919. mindspore/ops/_op_impl/akg/ascend/real_div.py +36 -0
  920. mindspore/ops/_op_impl/akg/ascend/reciprocal.py +32 -0
  921. mindspore/ops/_op_impl/akg/ascend/reduce_max.py +32 -0
  922. mindspore/ops/_op_impl/akg/ascend/reduce_min.py +32 -0
  923. mindspore/ops/_op_impl/akg/ascend/reduce_sum.py +37 -0
  924. mindspore/ops/_op_impl/akg/ascend/rsqrt.py +35 -0
  925. mindspore/ops/_op_impl/akg/ascend/select.py +37 -0
  926. mindspore/ops/_op_impl/akg/ascend/sqrt.py +35 -0
  927. mindspore/ops/_op_impl/akg/ascend/square.py +35 -0
  928. mindspore/ops/_op_impl/akg/ascend/sub.py +42 -0
  929. mindspore/ops/_op_impl/akg/cpu/__init__.py +23 -0
  930. mindspore/ops/_op_impl/akg/cpu/coo2csr.py +29 -0
  931. mindspore/ops/_op_impl/akg/cpu/csr2coo.py +29 -0
  932. mindspore/ops/_op_impl/akg/cpu/csr_gather.py +33 -0
  933. mindspore/ops/_op_impl/akg/cpu/csr_mm.py +34 -0
  934. mindspore/ops/_op_impl/akg/cpu/csr_mul.py +33 -0
  935. mindspore/ops/_op_impl/akg/cpu/csr_mv.py +33 -0
  936. mindspore/ops/_op_impl/akg/cpu/csr_reduce_sum.py +31 -0
  937. mindspore/ops/_op_impl/akg/gpu/__init__.py +24 -0
  938. mindspore/ops/_op_impl/akg/gpu/coo2csr.py +29 -0
  939. mindspore/ops/_op_impl/akg/gpu/csr2coo.py +29 -0
  940. mindspore/ops/_op_impl/akg/gpu/csr_div.py +36 -0
  941. mindspore/ops/_op_impl/akg/gpu/csr_gather.py +33 -0
  942. mindspore/ops/_op_impl/akg/gpu/csr_mm.py +37 -0
  943. mindspore/ops/_op_impl/akg/gpu/csr_mul.py +36 -0
  944. mindspore/ops/_op_impl/akg/gpu/csr_mv.py +36 -0
  945. mindspore/ops/_op_impl/akg/gpu/csr_reduce_sum.py +33 -0
  946. mindspore/ops/_op_impl/cpu/__init__.py +78 -0
  947. mindspore/ops/_op_impl/cpu/adam.py +49 -0
  948. mindspore/ops/_op_impl/cpu/adam_weight_decay.py +47 -0
  949. mindspore/ops/_op_impl/cpu/arg_max.py +30 -0
  950. mindspore/ops/_op_impl/cpu/arg_max_with_value.py +31 -0
  951. mindspore/ops/_op_impl/cpu/arg_min_with_value.py +31 -0
  952. mindspore/ops/_op_impl/cpu/buffer_append.py +28 -0
  953. mindspore/ops/_op_impl/cpu/buffer_get.py +28 -0
  954. mindspore/ops/_op_impl/cpu/buffer_sample.py +28 -0
  955. mindspore/ops/_op_impl/cpu/cast.py +171 -0
  956. mindspore/ops/_op_impl/cpu/concat_offset.py +38 -0
  957. mindspore/ops/_op_impl/cpu/conv2d.py +30 -0
  958. mindspore/ops/_op_impl/cpu/conv3d.py +30 -0
  959. mindspore/ops/_op_impl/cpu/div.py +32 -0
  960. mindspore/ops/_op_impl/cpu/dropout.py +31 -0
  961. mindspore/ops/_op_impl/cpu/dropout_grad.py +30 -0
  962. mindspore/ops/_op_impl/cpu/dynamic_shape.py +42 -0
  963. mindspore/ops/_op_impl/cpu/dynamic_stitch.py +41 -0
  964. mindspore/ops/_op_impl/cpu/equal_count.py +30 -0
  965. mindspore/ops/_op_impl/cpu/gather_d.py +49 -0
  966. mindspore/ops/_op_impl/cpu/gather_d_grad.py +38 -0
  967. mindspore/ops/_op_impl/cpu/gather_d_grad_v2.py +40 -0
  968. mindspore/ops/_op_impl/cpu/gather_v2.py +40 -0
  969. mindspore/ops/_op_impl/cpu/hsigmoid.py +33 -0
  970. mindspore/ops/_op_impl/cpu/hsigmoid_grad.py +34 -0
  971. mindspore/ops/_op_impl/cpu/hswish.py +32 -0
  972. mindspore/ops/_op_impl/cpu/hswish_grad.py +33 -0
  973. mindspore/ops/_op_impl/cpu/identity_n.py +40 -0
  974. mindspore/ops/_op_impl/cpu/is_finite.py +39 -0
  975. mindspore/ops/_op_impl/cpu/l2loss.py +30 -0
  976. mindspore/ops/_op_impl/cpu/layer_norm.py +36 -0
  977. mindspore/ops/_op_impl/cpu/layer_norm_grad.py +38 -0
  978. mindspore/ops/_op_impl/cpu/maximum.py +35 -0
  979. mindspore/ops/_op_impl/cpu/maximum_grad.py +47 -0
  980. mindspore/ops/_op_impl/cpu/minimum.py +40 -0
  981. mindspore/ops/_op_impl/cpu/minimum_grad.py +51 -0
  982. mindspore/ops/_op_impl/cpu/mirror_pad.py +36 -0
  983. mindspore/ops/_op_impl/cpu/mirror_pad_grad.py +36 -0
  984. mindspore/ops/_op_impl/cpu/mul.py +32 -0
  985. mindspore/ops/_op_impl/cpu/one_hot.py +31 -0
  986. mindspore/ops/_op_impl/cpu/pad.py +32 -0
  987. mindspore/ops/_op_impl/cpu/pow.py +32 -0
  988. mindspore/ops/_op_impl/cpu/priority_replay_buffer.py +42 -0
  989. mindspore/ops/_op_impl/cpu/pyexecute.py +29 -0
  990. mindspore/ops/_op_impl/cpu/pyfunc.py +29 -0
  991. mindspore/ops/_op_impl/cpu/range.py +34 -0
  992. mindspore/ops/_op_impl/cpu/real_div.py +33 -0
  993. mindspore/ops/_op_impl/cpu/reduce_all.py +29 -0
  994. mindspore/ops/_op_impl/cpu/reduce_any.py +29 -0
  995. mindspore/ops/_op_impl/cpu/reduce_max.py +32 -0
  996. mindspore/ops/_op_impl/cpu/reduce_mean.py +40 -0
  997. mindspore/ops/_op_impl/cpu/reduce_min.py +32 -0
  998. mindspore/ops/_op_impl/cpu/reduce_prod.py +40 -0
  999. mindspore/ops/_op_impl/cpu/reduce_std.py +31 -0
  1000. mindspore/ops/_op_impl/cpu/reduce_sum.py +41 -0
  1001. mindspore/ops/_op_impl/cpu/space_to_batch_nd.py +38 -0
  1002. mindspore/ops/_op_impl/cpu/sparse_slice.py +62 -0
  1003. mindspore/ops/_op_impl/cpu/sparse_slice_grad.py +60 -0
  1004. mindspore/ops/_op_impl/cpu/split.py +34 -0
  1005. mindspore/ops/_op_impl/cpu/sspaddmm.py +95 -0
  1006. mindspore/ops/_op_impl/cpu/stack.py +38 -0
  1007. mindspore/ops/_op_impl/cpu/sub.py +32 -0
  1008. mindspore/ops/_op_impl/cpu/tensor_copy_slices.py +41 -0
  1009. mindspore/ops/_op_impl/cpu/tile.py +37 -0
  1010. mindspore/ops/_op_impl/cpu/top_k.py +31 -0
  1011. mindspore/ops/_op_impl/cpu/transpose.py +39 -0
  1012. mindspore/ops/_primitive_cache.py +90 -0
  1013. mindspore/ops/_register_for_op.py +73 -0
  1014. mindspore/ops/_utils/__init__.py +20 -0
  1015. mindspore/ops/_utils/utils.py +147 -0
  1016. mindspore/ops/_vmap/__init__.py +25 -0
  1017. mindspore/ops/_vmap/vmap_array_ops.py +2149 -0
  1018. mindspore/ops/_vmap/vmap_base.py +533 -0
  1019. mindspore/ops/_vmap/vmap_convolution_ops.py +441 -0
  1020. mindspore/ops/_vmap/vmap_debug_ops.py +50 -0
  1021. mindspore/ops/_vmap/vmap_grad_math_ops.py +274 -0
  1022. mindspore/ops/_vmap/vmap_grad_nn_ops.py +806 -0
  1023. mindspore/ops/_vmap/vmap_image_ops.py +194 -0
  1024. mindspore/ops/_vmap/vmap_math_ops.py +993 -0
  1025. mindspore/ops/_vmap/vmap_nn_ops.py +2250 -0
  1026. mindspore/ops/_vmap/vmap_other_ops.py +105 -0
  1027. mindspore/ops/_vmap/vmap_random_ops.py +122 -0
  1028. mindspore/ops/_vmap/vmap_sparse_ops.py +89 -0
  1029. mindspore/ops/auto_generate/__init__.py +31 -0
  1030. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +309 -0
  1031. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +252 -0
  1032. mindspore/ops/auto_generate/gen_arg_handler.py +197 -0
  1033. mindspore/ops/auto_generate/gen_extend_func.py +1701 -0
  1034. mindspore/ops/auto_generate/gen_ops_def.py +8482 -0
  1035. mindspore/ops/auto_generate/gen_ops_prim.py +16704 -0
  1036. mindspore/ops/auto_generate/pyboost_inner_prim.py +549 -0
  1037. mindspore/ops/composite/__init__.py +71 -0
  1038. mindspore/ops/composite/base.py +1318 -0
  1039. mindspore/ops/composite/env_ops.py +41 -0
  1040. mindspore/ops/composite/math_ops.py +125 -0
  1041. mindspore/ops/composite/multitype_ops/__init__.py +77 -0
  1042. mindspore/ops/composite/multitype_ops/_compile_utils.py +1459 -0
  1043. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +897 -0
  1044. mindspore/ops/composite/multitype_ops/add_impl.py +606 -0
  1045. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +56 -0
  1046. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +56 -0
  1047. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +56 -0
  1048. mindspore/ops/composite/multitype_ops/div_impl.py +189 -0
  1049. mindspore/ops/composite/multitype_ops/equal_impl.py +335 -0
  1050. mindspore/ops/composite/multitype_ops/floordiv_impl.py +88 -0
  1051. mindspore/ops/composite/multitype_ops/getitem_impl.py +400 -0
  1052. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +109 -0
  1053. mindspore/ops/composite/multitype_ops/greater_impl.py +110 -0
  1054. mindspore/ops/composite/multitype_ops/in_impl.py +196 -0
  1055. mindspore/ops/composite/multitype_ops/left_shift_impl.py +37 -0
  1056. mindspore/ops/composite/multitype_ops/less_equal_impl.py +111 -0
  1057. mindspore/ops/composite/multitype_ops/less_impl.py +112 -0
  1058. mindspore/ops/composite/multitype_ops/logic_not_impl.py +113 -0
  1059. mindspore/ops/composite/multitype_ops/logical_and_impl.py +60 -0
  1060. mindspore/ops/composite/multitype_ops/logical_or_impl.py +61 -0
  1061. mindspore/ops/composite/multitype_ops/mod_impl.py +86 -0
  1062. mindspore/ops/composite/multitype_ops/mul_impl.py +294 -0
  1063. mindspore/ops/composite/multitype_ops/negative_impl.py +79 -0
  1064. mindspore/ops/composite/multitype_ops/not_equal_impl.py +290 -0
  1065. mindspore/ops/composite/multitype_ops/not_in_impl.py +196 -0
  1066. mindspore/ops/composite/multitype_ops/ones_like_impl.py +96 -0
  1067. mindspore/ops/composite/multitype_ops/pow_impl.py +87 -0
  1068. mindspore/ops/composite/multitype_ops/right_shift_impl.py +37 -0
  1069. mindspore/ops/composite/multitype_ops/setitem_impl.py +884 -0
  1070. mindspore/ops/composite/multitype_ops/sub_impl.py +116 -0
  1071. mindspore/ops/composite/multitype_ops/uadd_impl.py +29 -0
  1072. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +228 -0
  1073. mindspore/ops/deprecated.py +315 -0
  1074. mindspore/ops/function/__init__.py +782 -0
  1075. mindspore/ops/function/array_func.py +7226 -0
  1076. mindspore/ops/function/clip_func.py +384 -0
  1077. mindspore/ops/function/debug_func.py +181 -0
  1078. mindspore/ops/function/fft_func.py +44 -0
  1079. mindspore/ops/function/grad/__init__.py +34 -0
  1080. mindspore/ops/function/grad/grad_func.py +1425 -0
  1081. mindspore/ops/function/image_func.py +292 -0
  1082. mindspore/ops/function/linalg_func.py +416 -0
  1083. mindspore/ops/function/math_func.py +12228 -0
  1084. mindspore/ops/function/nn_func.py +8609 -0
  1085. mindspore/ops/function/other_func.py +115 -0
  1086. mindspore/ops/function/parameter_func.py +134 -0
  1087. mindspore/ops/function/random_func.py +1715 -0
  1088. mindspore/ops/function/reshard_func.py +104 -0
  1089. mindspore/ops/function/sparse_func.py +884 -0
  1090. mindspore/ops/function/sparse_unary_func.py +2422 -0
  1091. mindspore/ops/function/spectral_func.py +150 -0
  1092. mindspore/ops/function/vmap_func.py +117 -0
  1093. mindspore/ops/functional.py +464 -0
  1094. mindspore/ops/op_info_register.py +1572 -0
  1095. mindspore/ops/operations/__init__.py +722 -0
  1096. mindspore/ops/operations/_csr_ops.py +403 -0
  1097. mindspore/ops/operations/_custom_grad.py +181 -0
  1098. mindspore/ops/operations/_embedding_cache_ops.py +307 -0
  1099. mindspore/ops/operations/_grad_ops.py +2978 -0
  1100. mindspore/ops/operations/_infer_ops.py +19 -0
  1101. mindspore/ops/operations/_inner_ops.py +2544 -0
  1102. mindspore/ops/operations/_map_tensor_ops.py +112 -0
  1103. mindspore/ops/operations/_ms_kernel.py +601 -0
  1104. mindspore/ops/operations/_ocr_ops.py +379 -0
  1105. mindspore/ops/operations/_opaque_predicate_registry.py +41 -0
  1106. mindspore/ops/operations/_pyfunc_registry.py +58 -0
  1107. mindspore/ops/operations/_quant_ops.py +1844 -0
  1108. mindspore/ops/operations/_rl_inner_ops.py +1231 -0
  1109. mindspore/ops/operations/_scalar_ops.py +106 -0
  1110. mindspore/ops/operations/_sequence_ops.py +1155 -0
  1111. mindspore/ops/operations/_sparse_grad_ops.py +56 -0
  1112. mindspore/ops/operations/_tensor_array.py +359 -0
  1113. mindspore/ops/operations/_thor_ops.py +807 -0
  1114. mindspore/ops/operations/array_ops.py +6124 -0
  1115. mindspore/ops/operations/comm_ops.py +1985 -0
  1116. mindspore/ops/operations/control_ops.py +127 -0
  1117. mindspore/ops/operations/custom_ops.py +1129 -0
  1118. mindspore/ops/operations/debug_ops.py +678 -0
  1119. mindspore/ops/operations/image_ops.py +1041 -0
  1120. mindspore/ops/operations/inner_ops.py +697 -0
  1121. mindspore/ops/operations/linalg_ops.py +95 -0
  1122. mindspore/ops/operations/manually_defined/__init__.py +24 -0
  1123. mindspore/ops/operations/manually_defined/_inner.py +73 -0
  1124. mindspore/ops/operations/manually_defined/ops_def.py +2271 -0
  1125. mindspore/ops/operations/math_ops.py +5095 -0
  1126. mindspore/ops/operations/nn_ops.py +9575 -0
  1127. mindspore/ops/operations/other_ops.py +874 -0
  1128. mindspore/ops/operations/random_ops.py +1288 -0
  1129. mindspore/ops/operations/reshard_ops.py +53 -0
  1130. mindspore/ops/operations/rl_ops.py +288 -0
  1131. mindspore/ops/operations/sparse_ops.py +2753 -0
  1132. mindspore/ops/operations/spectral_ops.py +111 -0
  1133. mindspore/ops/primitive.py +1046 -0
  1134. mindspore/ops/signature.py +54 -0
  1135. mindspore/ops/vm_impl_registry.py +91 -0
  1136. mindspore/ops_generate/__init__.py +27 -0
  1137. mindspore/ops_generate/arg_dtype_cast.py +252 -0
  1138. mindspore/ops_generate/arg_handler.py +197 -0
  1139. mindspore/ops_generate/gen_aclnn_implement.py +263 -0
  1140. mindspore/ops_generate/gen_constants.py +36 -0
  1141. mindspore/ops_generate/gen_ops.py +1099 -0
  1142. mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
  1143. mindspore/ops_generate/gen_pyboost_func.py +1052 -0
  1144. mindspore/ops_generate/gen_utils.py +209 -0
  1145. mindspore/ops_generate/op_proto.py +145 -0
  1146. mindspore/ops_generate/pyboost_utils.py +367 -0
  1147. mindspore/ops_generate/template.py +261 -0
  1148. mindspore/parallel/__init__.py +30 -0
  1149. mindspore/parallel/_auto_parallel_context.py +1486 -0
  1150. mindspore/parallel/_cell_wrapper.py +174 -0
  1151. mindspore/parallel/_cost_model_context.py +700 -0
  1152. mindspore/parallel/_dp_allreduce_fusion.py +159 -0
  1153. mindspore/parallel/_offload_context.py +275 -0
  1154. mindspore/parallel/_parallel_serialization.py +561 -0
  1155. mindspore/parallel/_ps_context.py +242 -0
  1156. mindspore/parallel/_recovery_context.py +110 -0
  1157. mindspore/parallel/_tensor.py +730 -0
  1158. mindspore/parallel/_transformer/__init__.py +35 -0
  1159. mindspore/parallel/_transformer/layers.py +765 -0
  1160. mindspore/parallel/_transformer/loss.py +251 -0
  1161. mindspore/parallel/_transformer/moe.py +693 -0
  1162. mindspore/parallel/_transformer/op_parallel_config.py +222 -0
  1163. mindspore/parallel/_transformer/transformer.py +3119 -0
  1164. mindspore/parallel/_utils.py +612 -0
  1165. mindspore/parallel/algo_parameter_config.py +400 -0
  1166. mindspore/parallel/checkpoint_transform.py +650 -0
  1167. mindspore/parallel/cluster/__init__.py +15 -0
  1168. mindspore/parallel/cluster/process_entity/__init__.py +18 -0
  1169. mindspore/parallel/cluster/process_entity/_api.py +352 -0
  1170. mindspore/parallel/cluster/process_entity/_utils.py +101 -0
  1171. mindspore/parallel/cluster/run.py +136 -0
  1172. mindspore/parallel/mpi/__init__.py +14 -0
  1173. mindspore/parallel/mpi/_mpi_config.py +116 -0
  1174. mindspore/parallel/parameter_broadcast.py +151 -0
  1175. mindspore/parallel/shard.py +481 -0
  1176. mindspore/parallel/transform_safetensors.py +993 -0
  1177. mindspore/profiler/__init__.py +28 -0
  1178. mindspore/profiler/common/__init__.py +14 -0
  1179. mindspore/profiler/common/constant.py +29 -0
  1180. mindspore/profiler/common/exceptions/__init__.py +14 -0
  1181. mindspore/profiler/common/exceptions/error_code.py +83 -0
  1182. mindspore/profiler/common/exceptions/exceptions.py +286 -0
  1183. mindspore/profiler/common/process_pool.py +41 -0
  1184. mindspore/profiler/common/registry.py +47 -0
  1185. mindspore/profiler/common/singleton.py +28 -0
  1186. mindspore/profiler/common/struct_type.py +118 -0
  1187. mindspore/profiler/common/util.py +472 -0
  1188. mindspore/profiler/common/validator/__init__.py +14 -0
  1189. mindspore/profiler/common/validator/validate_path.py +84 -0
  1190. mindspore/profiler/dynamic_profiler.py +694 -0
  1191. mindspore/profiler/envprofiling.py +254 -0
  1192. mindspore/profiler/parser/__init__.py +14 -0
  1193. mindspore/profiler/parser/aicpu_data_parser.py +272 -0
  1194. mindspore/profiler/parser/ascend_analysis/__init__.py +14 -0
  1195. mindspore/profiler/parser/ascend_analysis/constant.py +71 -0
  1196. mindspore/profiler/parser/ascend_analysis/file_manager.py +180 -0
  1197. mindspore/profiler/parser/ascend_analysis/function_event.py +185 -0
  1198. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +136 -0
  1199. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +131 -0
  1200. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +104 -0
  1201. mindspore/profiler/parser/ascend_analysis/path_manager.py +313 -0
  1202. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +123 -0
  1203. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
  1204. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +75 -0
  1205. mindspore/profiler/parser/ascend_cluster_generator.py +116 -0
  1206. mindspore/profiler/parser/ascend_communicate_generator.py +314 -0
  1207. mindspore/profiler/parser/ascend_flops_generator.py +116 -0
  1208. mindspore/profiler/parser/ascend_fpbp_generator.py +82 -0
  1209. mindspore/profiler/parser/ascend_hccl_generator.py +271 -0
  1210. mindspore/profiler/parser/ascend_integrate_generator.py +42 -0
  1211. mindspore/profiler/parser/ascend_memory_generator.py +185 -0
  1212. mindspore/profiler/parser/ascend_msprof_exporter.py +282 -0
  1213. mindspore/profiler/parser/ascend_msprof_generator.py +187 -0
  1214. mindspore/profiler/parser/ascend_op_generator.py +334 -0
  1215. mindspore/profiler/parser/ascend_steptrace_generator.py +94 -0
  1216. mindspore/profiler/parser/ascend_timeline_generator.py +545 -0
  1217. mindspore/profiler/parser/base_timeline_generator.py +483 -0
  1218. mindspore/profiler/parser/container.py +229 -0
  1219. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +697 -0
  1220. mindspore/profiler/parser/flops_parser.py +531 -0
  1221. mindspore/profiler/parser/framework_enum.py +111 -0
  1222. mindspore/profiler/parser/framework_parser.py +464 -0
  1223. mindspore/profiler/parser/framework_struct.py +61 -0
  1224. mindspore/profiler/parser/gpu_analysis/__init__.py +14 -0
  1225. mindspore/profiler/parser/gpu_analysis/function_event.py +44 -0
  1226. mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +89 -0
  1227. mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +72 -0
  1228. mindspore/profiler/parser/hccl_parser.py +573 -0
  1229. mindspore/profiler/parser/hwts_log_parser.py +122 -0
  1230. mindspore/profiler/parser/integrator.py +526 -0
  1231. mindspore/profiler/parser/memory_usage_parser.py +277 -0
  1232. mindspore/profiler/parser/minddata_analyzer.py +800 -0
  1233. mindspore/profiler/parser/minddata_parser.py +186 -0
  1234. mindspore/profiler/parser/minddata_pipeline_parser.py +299 -0
  1235. mindspore/profiler/parser/op_intermediate_parser.py +149 -0
  1236. mindspore/profiler/parser/optime_parser.py +250 -0
  1237. mindspore/profiler/parser/profiler_info.py +213 -0
  1238. mindspore/profiler/parser/step_trace_parser.py +666 -0
  1239. mindspore/profiler/profiler.py +153 -0
  1240. mindspore/profiler/profiling.py +1922 -0
  1241. mindspore/rewrite/__init__.py +28 -0
  1242. mindspore/rewrite/api/__init__.py +17 -0
  1243. mindspore/rewrite/api/node.py +519 -0
  1244. mindspore/rewrite/api/node_type.py +53 -0
  1245. mindspore/rewrite/api/pattern_engine.py +490 -0
  1246. mindspore/rewrite/api/scoped_value.py +181 -0
  1247. mindspore/rewrite/api/symbol_tree.py +497 -0
  1248. mindspore/rewrite/ast_helpers/__init__.py +25 -0
  1249. mindspore/rewrite/ast_helpers/ast_converter.py +143 -0
  1250. mindspore/rewrite/ast_helpers/ast_finder.py +404 -0
  1251. mindspore/rewrite/ast_helpers/ast_flattener.py +268 -0
  1252. mindspore/rewrite/ast_helpers/ast_modifier.py +605 -0
  1253. mindspore/rewrite/ast_helpers/ast_replacer.py +79 -0
  1254. mindspore/rewrite/common/__init__.py +19 -0
  1255. mindspore/rewrite/common/config.py +24 -0
  1256. mindspore/rewrite/common/error_log.py +39 -0
  1257. mindspore/rewrite/common/event.py +28 -0
  1258. mindspore/rewrite/common/namer.py +271 -0
  1259. mindspore/rewrite/common/namespace.py +118 -0
  1260. mindspore/rewrite/common/observable.py +44 -0
  1261. mindspore/rewrite/common/observer.py +54 -0
  1262. mindspore/rewrite/node/__init__.py +22 -0
  1263. mindspore/rewrite/node/call_function.py +95 -0
  1264. mindspore/rewrite/node/cell_container.py +139 -0
  1265. mindspore/rewrite/node/control_flow.py +113 -0
  1266. mindspore/rewrite/node/node.py +1428 -0
  1267. mindspore/rewrite/node/node_manager.py +283 -0
  1268. mindspore/rewrite/node/node_topological_manager.py +223 -0
  1269. mindspore/rewrite/parsers/__init__.py +29 -0
  1270. mindspore/rewrite/parsers/arguments_parser.py +63 -0
  1271. mindspore/rewrite/parsers/assign_parser.py +852 -0
  1272. mindspore/rewrite/parsers/attribute_parser.py +57 -0
  1273. mindspore/rewrite/parsers/class_def_parser.py +289 -0
  1274. mindspore/rewrite/parsers/constant_parser.py +104 -0
  1275. mindspore/rewrite/parsers/container_parser.py +88 -0
  1276. mindspore/rewrite/parsers/expr_parser.py +55 -0
  1277. mindspore/rewrite/parsers/for_parser.py +61 -0
  1278. mindspore/rewrite/parsers/function_def_parser.py +84 -0
  1279. mindspore/rewrite/parsers/if_parser.py +85 -0
  1280. mindspore/rewrite/parsers/module_parser.py +117 -0
  1281. mindspore/rewrite/parsers/parser.py +43 -0
  1282. mindspore/rewrite/parsers/parser_register.py +86 -0
  1283. mindspore/rewrite/parsers/return_parser.py +37 -0
  1284. mindspore/rewrite/parsers/while_parser.py +59 -0
  1285. mindspore/rewrite/sparsify/__init__.py +0 -0
  1286. mindspore/rewrite/sparsify/sparse_transformer.py +457 -0
  1287. mindspore/rewrite/sparsify/sparsify.py +112 -0
  1288. mindspore/rewrite/sparsify/utils.py +179 -0
  1289. mindspore/rewrite/symbol_tree/__init__.py +20 -0
  1290. mindspore/rewrite/symbol_tree/symbol_tree.py +1819 -0
  1291. mindspore/rewrite/symbol_tree/symbol_tree_builder.py +76 -0
  1292. mindspore/rewrite/symbol_tree/symbol_tree_dumper.py +142 -0
  1293. mindspore/run_check/__init__.py +20 -0
  1294. mindspore/run_check/_check_version.py +507 -0
  1295. mindspore/run_check/run_check.py +66 -0
  1296. mindspore/safeguard/__init__.py +18 -0
  1297. mindspore/safeguard/rewrite_obfuscation.py +875 -0
  1298. mindspore/scipy/__init__.py +18 -0
  1299. mindspore/scipy/fft.py +264 -0
  1300. mindspore/scipy/linalg.py +919 -0
  1301. mindspore/scipy/ops.py +165 -0
  1302. mindspore/scipy/ops_grad.py +115 -0
  1303. mindspore/scipy/ops_wrapper.py +74 -0
  1304. mindspore/scipy/optimize/__init__.py +20 -0
  1305. mindspore/scipy/optimize/_bfgs.py +230 -0
  1306. mindspore/scipy/optimize/_lagrange.py +201 -0
  1307. mindspore/scipy/optimize/_lbfgs.py +146 -0
  1308. mindspore/scipy/optimize/gradient_optimization_algorithm.py +168 -0
  1309. mindspore/scipy/optimize/line_search.py +370 -0
  1310. mindspore/scipy/optimize/linear_sum_assignment.py +78 -0
  1311. mindspore/scipy/optimize/minimize.py +200 -0
  1312. mindspore/scipy/utils.py +156 -0
  1313. mindspore/scipy/utils_const.py +246 -0
  1314. mindspore/train/__init__.py +48 -0
  1315. mindspore/train/_utils.py +465 -0
  1316. mindspore/train/amp.py +935 -0
  1317. mindspore/train/anf_ir_pb2.py +1517 -0
  1318. mindspore/train/callback/__init__.py +44 -0
  1319. mindspore/train/callback/_backup_and_restore.py +117 -0
  1320. mindspore/train/callback/_callback.py +613 -0
  1321. mindspore/train/callback/_checkpoint.py +814 -0
  1322. mindspore/train/callback/_cluster_monitor.py +201 -0
  1323. mindspore/train/callback/_dataset_graph.py +150 -0
  1324. mindspore/train/callback/_early_stop.py +239 -0
  1325. mindspore/train/callback/_flops_collector.py +239 -0
  1326. mindspore/train/callback/_history.py +92 -0
  1327. mindspore/train/callback/_lambda_callback.py +80 -0
  1328. mindspore/train/callback/_landscape.py +1049 -0
  1329. mindspore/train/callback/_loss_monitor.py +107 -0
  1330. mindspore/train/callback/_lr_scheduler_callback.py +76 -0
  1331. mindspore/train/callback/_on_request_exit.py +298 -0
  1332. mindspore/train/callback/_reduce_lr_on_plateau.py +226 -0
  1333. mindspore/train/callback/_summary_collector.py +1184 -0
  1334. mindspore/train/callback/_tft_register.py +352 -0
  1335. mindspore/train/callback/_time_monitor.py +141 -0
  1336. mindspore/train/checkpoint_pb2.py +233 -0
  1337. mindspore/train/data_sink.py +219 -0
  1338. mindspore/train/dataset_helper.py +692 -0
  1339. mindspore/train/lineage_pb2.py +1260 -0
  1340. mindspore/train/loss_scale_manager.py +213 -0
  1341. mindspore/train/memory_profiling_pb2.py +298 -0
  1342. mindspore/train/metrics/__init__.py +175 -0
  1343. mindspore/train/metrics/accuracy.py +133 -0
  1344. mindspore/train/metrics/auc.py +129 -0
  1345. mindspore/train/metrics/bleu_score.py +170 -0
  1346. mindspore/train/metrics/confusion_matrix.py +700 -0
  1347. mindspore/train/metrics/cosine_similarity.py +109 -0
  1348. mindspore/train/metrics/dice.py +116 -0
  1349. mindspore/train/metrics/error.py +175 -0
  1350. mindspore/train/metrics/fbeta.py +167 -0
  1351. mindspore/train/metrics/hausdorff_distance.py +333 -0
  1352. mindspore/train/metrics/loss.py +97 -0
  1353. mindspore/train/metrics/mean_surface_distance.py +189 -0
  1354. mindspore/train/metrics/metric.py +373 -0
  1355. mindspore/train/metrics/occlusion_sensitivity.py +225 -0
  1356. mindspore/train/metrics/perplexity.py +133 -0
  1357. mindspore/train/metrics/precision.py +160 -0
  1358. mindspore/train/metrics/recall.py +159 -0
  1359. mindspore/train/metrics/roc.py +223 -0
  1360. mindspore/train/metrics/root_mean_square_surface_distance.py +191 -0
  1361. mindspore/train/metrics/topk.py +167 -0
  1362. mindspore/train/mind_ir_pb2.py +1908 -0
  1363. mindspore/train/model.py +2252 -0
  1364. mindspore/train/node_strategy_pb2.py +653 -0
  1365. mindspore/train/print_pb2.py +184 -0
  1366. mindspore/train/profiling_parallel_pb2.py +151 -0
  1367. mindspore/train/serialization.py +3325 -0
  1368. mindspore/train/summary/__init__.py +23 -0
  1369. mindspore/train/summary/_lineage_adapter.py +41 -0
  1370. mindspore/train/summary/_summary_adapter.py +496 -0
  1371. mindspore/train/summary/_writer_pool.py +207 -0
  1372. mindspore/train/summary/enums.py +56 -0
  1373. mindspore/train/summary/summary_record.py +581 -0
  1374. mindspore/train/summary/writer.py +167 -0
  1375. mindspore/train/summary_pb2.py +1165 -0
  1376. mindspore/train/train_thor/__init__.py +20 -0
  1377. mindspore/train/train_thor/convert_utils.py +268 -0
  1378. mindspore/train/train_thor/dataset_helper.py +192 -0
  1379. mindspore/train/train_thor/model_thor.py +257 -0
  1380. mindspore/utils/__init__.py +21 -0
  1381. mindspore/utils/utils.py +60 -0
  1382. mindspore/version.py +1 -0
  1383. mindspore-2.4.0.dist-info/METADATA +352 -0
  1384. mindspore-2.4.0.dist-info/RECORD +1387 -0
  1385. mindspore-2.4.0.dist-info/WHEEL +5 -0
  1386. mindspore-2.4.0.dist-info/entry_points.txt +3 -0
  1387. mindspore-2.4.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,2629 @@
1
+ # Copyright 2020-2021 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """array operations, the function docs are adapted from Numpy API."""
16
+ from __future__ import absolute_import
17
+
18
+ import operator
19
+
20
+ from mindspore.common import dtype as mstype
21
+ from mindspore.common import Tensor, mutable
22
+ from mindspore.ops import operations as P
23
+ from mindspore.ops import functional as F
24
+ from mindspore.ops.primitive import constexpr, _primexpr
25
+ from mindspore.nn import Cell
26
+ from mindspore import ops
27
+
28
+ from mindspore.numpy.utils import _convert_list_tensor_to_tuple_tensor, _expand, _broadcast_to_shape, \
29
+ _check_input_tensor, _broadcast_to, _to_tensor, _callable
30
+ from mindspore.numpy.utils_const import _check_axes_range, _check_start_normalize, \
31
+ _raise_type_error, _raise_value_error, _infer_out_shape, _empty, _promote, \
32
+ _check_same_type, _check_axis_valid, _add_unit_axes, _broadcast_tuples, \
33
+ _check_is_float, _check_axis_in_range, _check_axis_type, _canonicalize_axis, \
34
+ _list_comprehensions, _check_element_int, _is_shape_empty, _type_convert, \
35
+ _tuple_slice, _expanded_shape, _seq_prod, _tuple_setitem, _iota, \
36
+ _raise_unimplemented_error, _cumprod, _get_device, _check_is_int
37
+
38
+
39
+ # According to official numpy reference, the dimension of a numpy array must be less
40
+ # than 32
41
+ MAX_NUMPY_DIMS = 32
42
+
43
+
44
+ def expand_dims(a, axis):
45
+ """
46
+ Expands the shape of a tensor.
47
+
48
+ Inserts a new axis that will appear at the axis position in the expanded tensor shape.
49
+
50
+ Args:
51
+ a (Tensor): Input tensor array.
52
+ axis (Union[int, list(int), tuple(int)]): Position in the expanded axes where
53
+ the new axis is placed,
54
+
55
+ Returns:
56
+ Tensor, with the number of dimensions increased at specified axis.
57
+
58
+ Raises:
59
+ TypeError: If input arguments have types not specified above.
60
+ ValueError: If axis exceeds a.ndim.
61
+
62
+ Supported Platforms:
63
+ ``Ascend`` ``GPU`` ``CPU``
64
+
65
+ Examples:
66
+ >>> import mindspore.numpy as np
67
+ >>> x = np.ones((2,2))
68
+ >>> x = np.expand_dims(x,0)
69
+ >>> print(x.shape)
70
+ (1, 2, 2)
71
+ """
72
+ _check_input_tensor(a)
73
+ if not isinstance(axis, (int, tuple, list)):
74
+ _raise_type_error("axis must be tuple, list or int, but got ", axis)
75
+ if isinstance(axis, int):
76
+ return F.expand_dims(a, axis)
77
+ ndim = a.ndim + len(axis)
78
+ axis = _canonicalize_axis(axis, ndim)
79
+ for ax in axis:
80
+ a = F.expand_dims(a, ax)
81
+ return a
82
+
83
+
84
+ def squeeze(a, axis=None):
85
+ """
86
+ Removes single-dimensional entries from the shape of a tensor.
87
+
88
+ Args:
89
+ a (Tensor): Input tensor array.
90
+ axis (Union[None, int, list(int), tuple(list)], optional): The axis(axes) to squeeze,
91
+ default: ``None`` .
92
+
93
+ Returns:
94
+ Tensor, with all or a subset of the dimensions of length :math:`1` removed.
95
+
96
+ Raises:
97
+ TypeError: If input arguments have types not specified above.
98
+ ValueError: If specified axis has shape entry :math:`> 1`.
99
+
100
+ Supported Platforms:
101
+ ``Ascend`` ``GPU`` ``CPU``
102
+
103
+ Examples:
104
+ >>> import mindspore.numpy as np
105
+ >>> x = np.ones((1,2,2,1))
106
+ >>> x = np.squeeze(x)
107
+ >>> print(x.shape)
108
+ (2, 2)
109
+ """
110
+ _check_input_tensor(a)
111
+ return a.squeeze(axis)
112
+
113
+
114
+ def transpose(a, axes=None):
115
+ """
116
+ Reverses or permutes the axes of a tensor; returns the modified tensor.
117
+
118
+ Args:
119
+ a (Tensor): a tensor to be transposed
120
+ axes (Union[None, tuple, list], optional): the axes order, if `axes` is `None`, transpose
121
+ the entire tensor. Default: ``None`` .
122
+
123
+ Returns:
124
+ Tensor, the transposed tensor array.
125
+
126
+ Raises:
127
+ TypeError: If input arguments have types not specified above.
128
+ ValueError: If the number of `axes` is not equal to a.ndim.
129
+
130
+ Supported Platforms:
131
+ ``Ascend`` ``GPU`` ``CPU``
132
+
133
+ Examples:
134
+ >>> import mindspore.numpy as np
135
+ >>> x = np.ones((1,2,3))
136
+ >>> x = np.transpose(x)
137
+ >>> print(x.shape)
138
+ (3, 2, 1)
139
+ """
140
+ _check_input_tensor(a)
141
+ return a.transpose(axes)
142
+
143
+
144
+ def rollaxis(x, axis, start=0):
145
+ """
146
+ Rolls the specified axis backwards, until it lies in the given position.
147
+ The positions of the other axes do not change relative to one another.
148
+
149
+ Args:
150
+ x (Tensor): A Tensor to be transposed.
151
+ axis (int): The axis to be rolled.
152
+ start (int): Default: ``0`` .
153
+ If :math:`start <= axis`, the axis is rolled back until it lies in this position (`start`).
154
+ If :math:`start > axis`: the axis is rolled until it lies before this position (`start`).
155
+ If :math:`start < 0`, the start will be normalized as a non-negative number (more details
156
+ can be seen in the source code.)
157
+
158
+ .. table
159
+ +===========+=================+
160
+ |start |Normalized start |
161
+ +===========+=================+
162
+ |-(x.ndim+1)| raise ValueError|
163
+ +-----------+-----------------+
164
+ |-x.ndim |0 |
165
+ +-----------+-----------------+
166
+ |... |... |
167
+ +-----------+-----------------+
168
+ |-1 |x.ndim-1 |
169
+ +-----------+-----------------+
170
+ |... |... |
171
+ +-----------+-----------------+
172
+ |x.ndim |x.ndim |
173
+ +-----------+-----------------+
174
+ |x.ndim+1 |raise ValueError |
175
+ +===========+=================+
176
+ ..
177
+
178
+ Returns:
179
+ Transposed Tensor. Has the same data type as the original tensor `x`.
180
+
181
+ Supported Platforms:
182
+ ``Ascend`` ``GPU`` ``CPU``
183
+
184
+ Raises:
185
+ TypeError: If `axis` or `start` is not integer, or `x` is not tensor.
186
+ ValueError: If `axis` is not in the range of :math:`[-ndim, ndim-1]` or
187
+ `start` is not in the range of :math:`[-ndim, ndim]`.
188
+
189
+ Examples:
190
+ >>> import mindspore.numpy as np
191
+ >>> x = np.ones((2,3,4))
192
+ >>> output = np.rollaxis(x, 0, 2)
193
+ >>> print(output.shape)
194
+ (3, 2, 4)
195
+ """
196
+ _check_input_tensor(x)
197
+ if not isinstance(axis, int):
198
+ _raise_type_error("integer argument expected, but got ", axis)
199
+ if not isinstance(start, int):
200
+ _raise_type_error("integer argument expected, but got ", start)
201
+
202
+ shape = F.shape(x)
203
+ ndim = F.tuple_len(shape)
204
+
205
+ axis = _check_axes_range(axis, ndim)
206
+ start = _check_start_normalize(start, ndim)
207
+ if start - axis >= 0 and start - axis <= 1:
208
+ return x
209
+ perm = F.make_range(0, ndim)
210
+ new_perm = None
211
+ if start < axis:
212
+ if axis + 1 < ndim:
213
+ new_perm = perm[0:start] + perm[axis:axis + 1] + \
214
+ perm[start:axis] + perm[axis + 1:]
215
+ else:
216
+ new_perm = perm[0:start] + perm[axis:axis + 1] + perm[start:axis]
217
+ if start > axis:
218
+ if start < ndim:
219
+ new_perm = perm[0:axis] + perm[axis + 1:start] + \
220
+ perm[axis:axis + 1] + perm[start:]
221
+ else:
222
+ new_perm = perm[0:axis] + perm[axis + 1:start] + \
223
+ perm[axis:axis + 1]
224
+
225
+ return F.transpose(x, new_perm)
226
+
227
+
228
+ def swapaxes(x, axis1, axis2):
229
+ """
230
+ Interchanges two axes of a tensor.
231
+
232
+ Args:
233
+ x (Tensor): A tensor to be transposed.
234
+ axis1 (int): First axis.
235
+ axis2 (int): Second axis.
236
+
237
+ Returns:
238
+ Transposed tensor, has the same data type as the original tensor `x`.
239
+
240
+ Raises:
241
+ TypeError: If `axis1` or `axis2` is not integer, or `x` is not tensor.
242
+ ValueError: If `axis1` or `axis2` is not in the range of :math:`[-ndim, ndim-1]`.
243
+
244
+ Supported Platforms:
245
+ ``Ascend`` ``GPU`` ``CPU``
246
+
247
+ Examples:
248
+ >>> import mindspore.numpy as np
249
+ >>> x = np.ones((2,3,4))
250
+ >>> output = np.swapaxes(x, 0, 2)
251
+ >>> print(output.shape)
252
+ (4,3,2)
253
+ """
254
+ _check_input_tensor(x)
255
+ return x.swapaxes(axis1, axis2)
256
+
257
+
258
+ def reshape(x, new_shape):
259
+ """
260
+ Reshapes a tensor without changing its data.
261
+
262
+ Args:
263
+ x (Tensor): A tensor to be reshaped.
264
+ new_shape (Union[int, list(int), tuple(int)]): The new shape should be
265
+ compatible with the original shape. If the tuple has only one element,
266
+ the result will be a 1-D tensor of that length. One shape dimension
267
+ can be :math:`-1`. In this case, the value is inferred from the length of
268
+ the tensor and remaining dimensions.
269
+
270
+ Returns:
271
+ Reshaped Tensor. Has the same data type as the original tensor `x`.
272
+
273
+ Raises:
274
+ TypeError: If new_shape is not integer, list or tuple, or `x` is not tensor.
275
+ ValueError: If new_shape is not compatible with the original shape.
276
+
277
+ Supported Platforms:
278
+ ``Ascend`` ``GPU`` ``CPU``
279
+
280
+ Examples:
281
+ >>> import mindspore.numpy as np
282
+ >>> x = np.asarray([[-0.1, 0.3, 3.6], [0.4, 0.5, -3.2]])
283
+ >>> output = np.reshape(x, (3, 2))
284
+ >>> print(output)
285
+ [[-0.1 0.3]
286
+ [ 3.6 0.4]
287
+ [ 0.5 -3.2]]
288
+ >>> output = np.reshape(x, (3, -1))
289
+ >>> print(output)
290
+ [[-0.1 0.3]
291
+ [ 3.6 0.4]
292
+ [ 0.5 -3.2]]
293
+ >>> output = np.reshape(x, (6, ))
294
+ >>> print(output)
295
+ [-0.1 0.3 3.6 0.4 0.5 -3.2]
296
+ """
297
+ _check_input_tensor(x)
298
+ return x.reshape(new_shape)
299
+
300
+
301
+ def ravel(x):
302
+ """
303
+ Returns a contiguous flattened tensor.
304
+
305
+ A 1-D tensor, containing the elements of the input, is returned.
306
+
307
+ Args:
308
+ x (Tensor): A tensor to be flattened.
309
+
310
+ Returns:
311
+ Flattened tensor, has the same data type as the original tensor `x`.
312
+
313
+ Raises:
314
+ TypeError: If `x` is not tensor.
315
+
316
+ Supported Platforms:
317
+ ``Ascend`` ``GPU`` ``CPU``
318
+
319
+ Examples:
320
+ >>> import mindspore.numpy as np
321
+ >>> x = np.ones((2,3,4))
322
+ >>> output = np.ravel(x)
323
+ >>> print(output.shape)
324
+ (24,)
325
+ """
326
+ _check_input_tensor(x)
327
+ return x.ravel()
328
+
329
+
330
+ @_primexpr
331
+ def _move_axes_for_concatenate(arr_shape, axis):
332
+ """
333
+ Moves axis 0 to the desiganated position, while keeps other axes' relative
334
+ positions unchanged, only used if a single tensor is concatenated.
335
+ """
336
+
337
+ original_axes = tuple(range(len(arr_shape)))
338
+ new_axes = original_axes[1:axis + 1] + (0,) + original_axes[axis + 1:]
339
+ new_shape = arr_shape[1:axis + 1] + (arr_shape[0] * arr_shape[axis + 1],) + \
340
+ arr_shape[axis + 2:]
341
+ return new_axes, new_shape
342
+
343
+
344
+ def _promote_type_for_concatenate(tuple_of_tensors):
345
+ """
346
+ Checks dtype for all tensors in the tuple. If dtypes are not the same, promote
347
+ them to the `highest` dtype in the tuple, so that they are ready for the concat
348
+ operator.
349
+
350
+ Args:
351
+ tuple_of_tensors(tuple(tensor)): A tuple of tensors
352
+
353
+ Returns:
354
+ tuple of tensors, with each tensor promoted to ths same dtype.
355
+ """
356
+ need_cast = False
357
+ final_type = tuple_of_tensors[0].dtype
358
+
359
+ for tensor in tuple_of_tensors:
360
+ if not _check_same_type(final_type, tensor.dtype):
361
+ need_cast = True
362
+ final_type = _promote(final_type, tensor.dtype)
363
+
364
+ if not need_cast:
365
+ return tuple_of_tensors
366
+ tuple_of_casted_tensors = ()
367
+ for tensor in tuple_of_tensors:
368
+ tuple_of_casted_tensors += (tensor.astype(final_type, False),)
369
+ return tuple_of_casted_tensors
370
+
371
+
372
+ def concatenate(arrays, axis=0):
373
+ """
374
+ Joins a sequence of tensors along an existing axis.
375
+
376
+ Note:
377
+ To match Numpy behaviour, :math:`axis >= 32` will not cause value error, the
378
+ `axis` will be treated as ``None`` instead.
379
+
380
+ Args:
381
+ arrays (Union[Tensor, tuple(Tensor), list(Tensor)]): a tensor or a list
382
+ of tensors to be concatenated.
383
+ axis (Union[None, int], optional): The axis along which the tensors will be joined,
384
+ if `axis` is ``None``, tensors are flattened before use. Default: ``0`` .
385
+
386
+ Returns:
387
+ A tensor concatenated from a tensor or a list of tensors.
388
+
389
+ Raises:
390
+ TypeError: If input arguments have types not specified above.
391
+ ValueError: If `axis` is not in the range of :math:`[-ndim, ndim-1]`, and less than 32.
392
+
393
+ Supported Platforms:
394
+ ``Ascend`` ``GPU`` ``CPU``
395
+
396
+ Examples:
397
+ >>> import mindspore.numpy as np
398
+ >>> x1 = np.ones((1,2,3))
399
+ >>> x2 = np.ones((1,2,1))
400
+ >>> x = np.concatenate((x1, x2), axis=-1)
401
+ >>> print(x.shape)
402
+ (1, 2, 4)
403
+ """
404
+ if arrays is None:
405
+ _raise_type_error('expect Union[Tensor, tuple(Tensor), list(Tensor)], but got None')
406
+ if isinstance(arrays, Tensor):
407
+ # if only one tensor is provided, it is treated as a tuple along the
408
+ # first dimension. For example, a tensor of shape (3,4,5) will be treated
409
+ # as: tuple(tensor_1(4,5), tensor_2(4,5), tensor_3(4,5))
410
+ if axis is None or axis >= MAX_NUMPY_DIMS:
411
+ return ravel(arrays)
412
+ arr_shape = F.shape(arrays)
413
+ _check_axes_range((axis,), len(arr_shape))
414
+ # move axis 0 to the disiganated position, while keep other axes' relative
415
+ # positions unchanged
416
+ new_axes, new_shape = _move_axes_for_concatenate(arr_shape, axis)
417
+ arrays = transpose(arrays, new_axes)
418
+ arrays = reshape(arrays, new_shape)
419
+ return arrays
420
+
421
+ flattened_arrays = ()
422
+ if axis is None or axis >= MAX_NUMPY_DIMS:
423
+ for arr in arrays:
424
+ flattened_arrays += (ravel(arr),)
425
+ axis = -1
426
+ flattened_arrays = _promote_type_for_concatenate(flattened_arrays)
427
+ return P.Concat(axis)(flattened_arrays)
428
+
429
+ # convert a list of tensor to a tuple of tensor
430
+ arrays = _convert_list_tensor_to_tuple_tensor(arrays)
431
+
432
+ arr_shape = F.shape(arrays[0])
433
+ _check_axes_range((axis,), len(arr_shape))
434
+
435
+ # if only one tensor in the tuple/list, return the tensor itself
436
+ if len(arrays) == 1:
437
+ return arrays[0]
438
+
439
+ arrays = _promote_type_for_concatenate(arrays)
440
+ return P.Concat(axis)(arrays)
441
+
442
+
443
+ def append(arr, values, axis=None):
444
+ """
445
+ Appends values to the end of a tensor.
446
+
447
+ Args:
448
+ arr (Tensor): Values are appended to a copy of this tensor.
449
+ values (Tensor): These values are appended to a copy of `arr`. It must be of
450
+ the correct shape (the same shape as `arr`, excluding `axis`). If `axis` is
451
+ not specified, `values` can be any shape and will be flattened before use.
452
+ axis (int, optional): The `axis` along which values are appended. If `axis` is not
453
+ given, both `arr` and `values` are flattened before use, default is ``None``.
454
+
455
+ Returns:
456
+ Tensor, a copy of tensor with values appended to axis.
457
+
458
+ Raises:
459
+ TypeError: If input arguments have types not specified above.
460
+ ValueError: If specified axis exceeds `arr.ndim`.
461
+
462
+ Supported Platforms:
463
+ ``Ascend`` ``GPU`` ``CPU``
464
+
465
+ Examples:
466
+ >>> import mindspore.numpy as np
467
+ >>> a = np.ones((2, 3))
468
+ >>> b = np.ones((2, 1))
469
+ >>> print(np.append(a, b, axis=1).shape)
470
+ (2, 4)
471
+ """
472
+ _check_input_tensor(arr)
473
+ _check_input_tensor(values)
474
+ if axis is None:
475
+ arr = arr.ravel()
476
+ values = values.ravel()
477
+ else:
478
+ _check_axis_in_range(axis, arr.ndim)
479
+ if F.rank(arr) != F.rank(values):
480
+ _raise_value_error("all tensors must have same number of dimensions")
481
+ return concatenate((arr, values), axis)
482
+
483
+
484
+ def column_stack(tup):
485
+ """
486
+ Stacks 1-D tensors as columns into a 2-D tensor. 2-D tensors are stacked as-is,
487
+ like np.hstack.
488
+
489
+ Args:
490
+ tup (Union[Tensor, tuple, list]): A sequence of 1-D or 2-D tensors. All
491
+ of them must have the same shape except the axis to be concatenated.
492
+
493
+ Returns:
494
+ 2-D Tensor, formed by stacking the given tensors.
495
+
496
+ Supported Platforms:
497
+ ``Ascend`` ``GPU`` ``CPU``
498
+
499
+ Raises:
500
+ TypeError: If `tup` is not Tensor, list or tuple.
501
+ ValueError: If `tup` is empty.
502
+
503
+ Examples:
504
+ >>> import mindspore.numpy as np
505
+ >>> x1 = np.array([1, 2, 3]).astype('int32')
506
+ >>> x2 = np.array([4, 5, 6]).astype('int32')
507
+ >>> output = np.column_stack((x1, x2))
508
+ >>> print(output)
509
+ [[1 4]
510
+ [2 5]
511
+ [3 6]]
512
+ """
513
+ if isinstance(tup, Tensor):
514
+ return tup
515
+ if not isinstance(tup, (list, tuple)):
516
+ _raise_type_error("Tensor or, list or tuple of tensors are required, but got ", tup)
517
+
518
+ trans_tup = ()
519
+ for tensor in tup:
520
+ if tensor.ndim < 1:
521
+ tensor = F.expand_dims(tensor, 0)
522
+ if tensor.ndim == 1:
523
+ tensor = F.expand_dims(tensor, 1)
524
+ trans_tup += (tensor,)
525
+ if not trans_tup:
526
+ _raise_value_error("Need at least one tensor to concatenate.")
527
+ return P.Concat(1)(trans_tup)
528
+
529
+
530
+ def vstack(tup):
531
+ """
532
+ Stacks tensors in sequence vertically.
533
+ This is equivalent to concatenation along the first axis. 1-D tensors should firstly be reshaped to `(1, N)`,
534
+ and then be concatenated along the first axis.
535
+
536
+ Args:
537
+ tup (Union[Tensor, tuple, list]): A sequence of 1-D or 2-D tensors. The tensors must have the same shape
538
+ along all but the first axis. 1-D tensors must have the same shape.
539
+
540
+ Returns:
541
+ Stacked Tensor, formed by stacking the given tensors.
542
+
543
+ Supported Platforms:
544
+ ``Ascend`` ``GPU`` ``CPU``
545
+
546
+ Raises:
547
+ TypeError: If `tup` is not Tensor, list or tuple.
548
+ ValueError: If `tup` is empty.
549
+
550
+ Examples:
551
+ >>> import mindspore.numpy as np
552
+ >>> x1 = np.array([1, 2, 3]).astype('int32')
553
+ >>> x2 = np.array([4, 5, 6]).astype('int32')
554
+ >>> output = np.vstack((x1, x2))
555
+ >>> print(output)
556
+ [[1 2 3]
557
+ [4 5 6]]
558
+ """
559
+ if isinstance(tup, Tensor):
560
+ return tup
561
+ if not isinstance(tup, (list, tuple)):
562
+ _raise_type_error("Tensor or, list or tuple of tensors are required, but got", tup)
563
+
564
+ trans_tup = ()
565
+ for tensor in tup:
566
+ if tensor.ndim <= 1:
567
+ tensor = _expand(tensor, 2, 0)
568
+ trans_tup += (tensor,)
569
+ if not trans_tup:
570
+ _raise_value_error("Need at least one tensor to concatenate.")
571
+ return P.Concat(0)(trans_tup)
572
+
573
+
574
+ def hstack(tup):
575
+ """
576
+ Stacks tensors in sequence horizontally.
577
+ This is equivalent to concatenation along the second axis, except for 1-D tensors
578
+ where it concatenates along the first axis.
579
+
580
+ Args:
581
+ tup (Union[Tensor, tuple, list]): A sequence of 1-D or 2-D tensors. The
582
+ tensors must have the same shape along all but the second axis, except
583
+ 1-D tensors which can be any length.
584
+
585
+ Returns:
586
+ Stacked Tensor, formed by stacking the given tensors.
587
+
588
+ Supported Platforms:
589
+ ``Ascend`` ``GPU`` ``CPU``
590
+
591
+ Raises:
592
+ TypeError: If `tup` is not Tensor, list or tuple.
593
+ ValueError: If `tup` is empty.
594
+
595
+ Examples:
596
+ >>> import mindspore.numpy as np
597
+ >>> x1 = np.array([1, 2, 3]).astype('float32')
598
+ >>> x2 = np.array([4, 5, 6]).astype('float32')
599
+ >>> output = np.hstack((x1, x2))
600
+ >>> print(output)
601
+ [1. 2. 3. 4. 5. 6.]
602
+ """
603
+ if isinstance(tup, Tensor):
604
+ return tup
605
+ if not isinstance(tup, (list, tuple)):
606
+ _raise_type_error("Tensor or, list or tuple of tensors are required, but got", tup)
607
+
608
+ tuple_of_tensor = ()
609
+ for tensor in tup:
610
+ if tensor.ndim < 1:
611
+ tensor = F.expand_dims(tensor, 0)
612
+ tuple_of_tensor += (tensor,)
613
+ if not tuple_of_tensor:
614
+ _raise_value_error("Need at least one tensor to concatenate.")
615
+ if tuple_of_tensor[0].ndim <= 1:
616
+ return P.Concat(0)(tuple_of_tensor)
617
+ return P.Concat(1)(tuple_of_tensor)
618
+
619
+
620
+ def dstack(tup):
621
+ """
622
+ Stacks tensors in sequence depth wise (along the third axis).
623
+ This is equivalent to concatenation along the third axis. 1-D tensors :math:`(N,)` should be
624
+ reshaped to :math:`(1,N,1)`.
625
+ 2-D tensors :math:`(M,N)` should be reshaped to :math:`(M,N,1)` before concatenation.
626
+
627
+ Args:
628
+ tup (Union[Tensor, tuple, list]): A sequence of tensors. The tensors must have the same shape along all but
629
+ the third axis. 1-D or 2-D tensors must have the same shape.
630
+
631
+ Returns:
632
+ Stacked Tensor, formed by stacking the given tensors.
633
+
634
+ Supported Platforms:
635
+ ``Ascend`` ``GPU`` ``CPU``
636
+
637
+ Raises:
638
+ TypeError: If `tup` is not Tensor, list or tuple.
639
+ ValueError: If `tup` is empty.
640
+
641
+ Examples:
642
+ >>> import mindspore.numpy as np
643
+ >>> x1 = np.array([1, 2, 3]).astype('float32')
644
+ >>> x2 = np.array([4, 5, 6]).astype('float32')
645
+ >>> output = np.dstack((x1, x2))
646
+ >>> print(output)
647
+ [[[1. 4.]
648
+ [2. 5.]
649
+ [3. 6.]]]
650
+ """
651
+ if isinstance(tup, Tensor):
652
+ return tup
653
+ if not isinstance(tup, (list, tuple)):
654
+ _raise_type_error("Tensor or list or tuple of tensors are required, but got", tup)
655
+
656
+ trans_tup = ()
657
+ for tensor in tup:
658
+ if tensor.ndim <= 1:
659
+ tensor = _expand(tensor, 2, 0)
660
+ if tensor.ndim == 2:
661
+ tensor = F.expand_dims(tensor, 2)
662
+ trans_tup += (tensor,)
663
+ if not trans_tup:
664
+ _raise_value_error("Need at least one tensor to concatenate.")
665
+ return P.Concat(2)(trans_tup)
666
+
667
+
668
+ def where(condition, x=None, y=None):
669
+ """
670
+ Returns elements chosen from `x` or `y` depending on `condition`.
671
+
672
+ Note:
673
+ As nonzero is not supported, both `x` and `y` must be provided Tensor
674
+ input.
675
+
676
+ Args:
677
+ condition (Tensor): where True, yield `x`, otherwise yield `y`.
678
+ x (Tensor, optional): Values from which to choose. Default: ``None`` .
679
+ y (Tensor, optional): Values from which to choose. `x`, `y` and `condition` need
680
+ to be broadcastable to some shape. Default: ``None`` .
681
+
682
+ Returns:
683
+ Tensor or scalar, with elements from `x` where `condition` is True, and
684
+ elements from `y` elsewhere.
685
+
686
+ Raises:
687
+ ValueError: If operands cannot be broadcast.
688
+
689
+ Supported Platforms:
690
+ ``Ascend`` ``GPU`` ``CPU``
691
+
692
+ Examples:
693
+ >>> import mindspore.numpy as np
694
+ >>> condition = np.full((1, 1, 2), [False, True])
695
+ >>> x = np.full((1, 3, 2), 5)
696
+ >>> y = np.full((2, 1, 1), 7)
697
+ >>> output = np.where(condition, x, y)
698
+ >>> print(output)
699
+ [[[7 5]
700
+ [7 5]
701
+ [7 5]]
702
+ [[7 5]
703
+ [7 5]
704
+ [7 5]]]
705
+ """
706
+ condition, x, y = _to_tensor(condition, x, y)
707
+ # type promotes input tensors
708
+ dtype1 = F.dtype(x)
709
+ dtype2 = F.dtype(y)
710
+ dtype = _promote(dtype1, dtype2)
711
+ if not _check_same_type(dtype1, dtype):
712
+ x = F.cast(x, dtype)
713
+ if not _check_same_type(dtype2, dtype):
714
+ y = F.cast(y, dtype)
715
+ is_bool = _check_same_type(dtype1, mstype.bool_) and _check_same_type(dtype2, mstype.bool_)
716
+ if is_bool:
717
+ # select does not support bool type for x or y
718
+ x = F.cast(x, mstype.float32)
719
+ y = F.cast(y, mstype.float32)
720
+
721
+ dynamic = F.is_sequence_value_unknown(F.shape(condition)) or F.is_sequence_value_unknown(F.shape(x))\
722
+ or F.is_sequence_value_unknown(F.shape(y))
723
+ # As select op currently does not support broadcast, broadcasts input tensors
724
+ if not dynamic:
725
+ shape_out = _infer_out_shape(F.shape(condition),
726
+ F.shape(x), F.shape(y))
727
+ condition = _broadcast_to_shape(condition, shape_out)
728
+ x = _broadcast_to_shape(x, shape_out)
729
+ y = _broadcast_to_shape(y, shape_out)
730
+ else:
731
+ # Get the broadcast shape through broadcast calculation
732
+ add_x_y = x + y
733
+ add_out = condition + F.cast(add_x_y, condition.dtype)
734
+ shape_out = P.Shape()(add_out)
735
+ condition = ops.broadcast_to(condition, shape_out)
736
+ x = ops.broadcast_to(x, shape_out)
737
+ y = ops.broadcast_to(y, shape_out)
738
+
739
+ if not _check_same_type(F.dtype(condition), mstype.bool_):
740
+ condition = F.cast(condition, mstype.bool_)
741
+ res = F.select(condition, x, y)
742
+ if is_bool:
743
+ res = F.cast(res, mstype.bool_)
744
+ return res
745
+
746
+
747
+ def _atleast_xd(ndim, arys):
748
+ """Returns arys with at least ndim."""
749
+ _check_input_tensor(*arys)
750
+ res = []
751
+ for arr in arys:
752
+ arr = _expand(arr, ndim)
753
+ res.append(arr)
754
+ if len(res) == 1:
755
+ return res[0]
756
+ return res
757
+
758
+
759
+ def atleast_1d(*arys):
760
+ """
761
+ Converts inputs to arrays with at least one dimension.
762
+
763
+ Scalar inputs are converted to 1-dimensional arrays, whilst
764
+ higher-dimensional inputs are preserved.
765
+
766
+ Note:
767
+ In graph mode, returns a tuple of tensor instead of a list of
768
+ tensors.
769
+
770
+ Args:
771
+ *arys (Tensor): one or more input tensors.
772
+
773
+ Returns:
774
+ Tensor, or list of tensors, each with ``a.ndim >= 1``.
775
+
776
+ Raises:
777
+ TypeError: If the input is not a tensor.
778
+
779
+ Supported Platforms:
780
+ ``Ascend`` ``GPU`` ``CPU``
781
+
782
+ Examples:
783
+ >>> import mindspore.numpy as np
784
+ >>> a = np.ones((2, 3))
785
+ >>> b = np.ones(())
786
+ >>> c = np.ones(5)
787
+ >>> output = np.atleast_1d(a, b, c)
788
+ >>> print(output)
789
+ [Tensor(shape=[2, 3], dtype=Float32, value=
790
+ [[1.00000000e+00, 1.00000000e+00, 1.00000000e+00],
791
+ [1.00000000e+00, 1.00000000e+00, 1.00000000e+00]]),
792
+ Tensor(shape=[1], dtype=Float32, value= [1.00000000e+00]),
793
+ Tensor(shape=[5], dtype=Float32,
794
+ value= [1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
795
+ 1.00000000e+00, 1.00000000e+00])]
796
+ """
797
+ return _atleast_xd(1, arys)
798
+
799
+
800
+ def atleast_2d(*arys):
801
+ """
802
+ Reshapes inputs as arrays with at least two dimensions.
803
+
804
+ Note:
805
+ In graph mode, returns a tuple of tensor instead of a list of
806
+ tensors.
807
+ Args:
808
+ *arys (Tensor): one or more input tensors.
809
+
810
+ Returns:
811
+ Tensor, or list of tensors, each with ``a.ndim >= 2``.
812
+
813
+ Raises:
814
+ TypeError: If the input is not a tensor.
815
+
816
+ Supported Platforms:
817
+ ``Ascend`` ``GPU`` ``CPU``
818
+
819
+ Examples:
820
+ >>> import mindspore.numpy as np
821
+ >>> a = np.ones((2, 3))
822
+ >>> b = np.ones(())
823
+ >>> c = np.ones(5)
824
+ >>> output = np.atleast_2d(a, b, c)
825
+ >>> print(output)
826
+ [Tensor(shape=[2, 3], dtype=Float32, value=
827
+ [[1.00000000e+00, 1.00000000e+00, 1.00000000e+00],
828
+ [1.00000000e+00, 1.00000000e+00, 1.00000000e+00]]),
829
+ Tensor(shape=[1, 1], dtype=Float32, value= [[1.00000000e+00]]),
830
+ Tensor(shape=[1, 5], dtype=Float32,
831
+ value= [[1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
832
+ 1.00000000e+00, 1.00000000e+00]])]
833
+ """
834
+ return _atleast_xd(2, arys)
835
+
836
+
837
+ def atleast_3d(*arys):
838
+ """
839
+ Reshapes inputs as arrays with at least three dimensions.
840
+
841
+ Note:
842
+ In graph mode, returns a tuple of tensor instead of a list of
843
+ tensors.
844
+
845
+ Args:
846
+ *arys (Tensor): one or more input tensors.
847
+
848
+ Returns:
849
+ Tensor, or list of tensors, each with ``a.ndim >= 3``. For example,
850
+ a 1-D array of shape `(N,)` becomes a tensor of shape `(1, N, 1)`, and
851
+ a 2-D array of shape `(M, N)` becomes a tensor of shape `(M, N, 1)`.
852
+
853
+ Raises:
854
+ TypeError: If the input is not a tensor.
855
+
856
+ Supported Platforms:
857
+ ``Ascend`` ``GPU`` ``CPU``
858
+
859
+ Examples:
860
+ >>> import mindspore.numpy as np
861
+ >>> a = np.ones((2, 3))
862
+ >>> b = np.ones(())
863
+ >>> c = np.ones(5)
864
+ >>> output = np.atleast_3d(a, b, c)
865
+ >>> print(output)
866
+ [Tensor(shape=[2, 3, 1], dtype=Float32, value=
867
+ [[[1.00000000e+00], [1.00000000e+00], [1.00000000e+00]],
868
+ [[1.00000000e+00], [1.00000000e+00], [1.00000000e+00]]]),
869
+ Tensor(shape=[1, 1, 1], dtype=Float32, value= [[[1.00000000e+00]]]),
870
+ Tensor(shape=[1, 5, 1], dtype=Float32,
871
+ value= [[[1.00000000e+00], [1.00000000e+00], [1.00000000e+00],
872
+ [1.00000000e+00], [1.00000000e+00]]])]
873
+ """
874
+ res = []
875
+ for arr in arys:
876
+ ndim = F.rank(arr)
877
+ if ndim == 0:
878
+ arr = F.reshape(arr, (1, 1, 1))
879
+ elif ndim == 1:
880
+ arr = F.reshape(arr, (1, F.size(arr), 1))
881
+ elif ndim == 2:
882
+ arr = F.reshape(arr, F.shape(arr) + (1,))
883
+ res.append(arr)
884
+ if len(res) == 1:
885
+ return res[0]
886
+ return res
887
+
888
+
889
+ def stack(arrays, axis=0):
890
+ """
891
+ Joins a sequence of arrays along a new axis.
892
+
893
+ The `axis` parameter specifies the index of the new axis in the
894
+ dimensions of the result. For example, if ``axis=0`` it will be the
895
+ first dimension and if ``axis=-1`` it will be the last dimension.
896
+
897
+ Note:
898
+ Numpy argument out is not supported.
899
+
900
+ Args:
901
+ arrays (sequence of Tensor): Each array must have the same shape.
902
+ axis (int, optional): The axis in the result array along which the
903
+ input arrays are stacked. Default: ``0`` .
904
+
905
+ Returns:
906
+ Tensor, The stacked array has one more dimension than the input
907
+ arrays.
908
+
909
+ Raises:
910
+ ValueError: If input is not Tensor, tuple, or list.
911
+
912
+ Supported Platforms:
913
+ ``Ascend`` ``GPU`` ``CPU``
914
+
915
+ Examples:
916
+ >>> import mindspore.numpy as np
917
+ >>> arrays = [np.ones((3, 4)) for _ in range(10)]
918
+ >>> output = np.stack(arrays, axis=0)
919
+ >>> print(output.shape)
920
+ (10, 3, 4)
921
+ >>> output = np.stack(arrays, axis=1)
922
+ >>> print(output.shape)
923
+ (3, 10, 4)
924
+ >>> output = np.stack(arrays, axis=2)
925
+ >>> print(output.shape)
926
+ (3, 4, 10)
927
+ """
928
+
929
+ if isinstance(arrays, Tensor):
930
+ shape = F.shape(arrays)
931
+ ndim = F.rank(arrays)
932
+ axis = axis % ndim
933
+ axes = F.make_range(ndim)
934
+ perm = axes[1:axis + 1] + (0,) + axes[axis + 1:]
935
+ if _is_shape_empty(shape):
936
+ return _empty(mstype.float32, shape[1:axis + 1] + (shape[0],) + shape[axis + 1:])
937
+ return transpose(arrays, perm)
938
+
939
+ if isinstance(arrays, (list, tuple)):
940
+ shape = (len(arrays),) + F.shape(arrays[0])
941
+ ndim = len(shape)
942
+ axis = axis % ndim
943
+ if _is_shape_empty(shape):
944
+ return _empty(mstype.float32, shape[1:axis + 1] + (shape[0],) + shape[axis + 1:])
945
+ seq = ()
946
+ for arr in arrays:
947
+ seq += (F.expand_dims(arr, axis),)
948
+ return concatenate(seq, axis)
949
+ return _raise_value_error('input arrays must be Tensor, tuple, or list')
950
+
951
+
952
+ class UniqueNet(Cell):
953
+ """The operation is wrapped inside a model. """
954
+
955
+ def __init__(self):
956
+ super(UniqueNet, self).__init__()
957
+ self.unique = P.Unique()
958
+
959
+ def construct(self, x):
960
+ return self.unique(x)
961
+
962
+
963
+ def unique(x, return_inverse=False):
964
+ """
965
+ Finds the unique elements of a tensor. The input tensor will be flattened first
966
+ when it has more than one dimension.
967
+
968
+ Note:
969
+ Numpy arguments `axis`, `return_index` and `return_counts` are not supported.
970
+ On CPU, this operator must be executed in graph mode.
971
+
972
+ Args:
973
+ x (Tensor): The input tensor to be processed.
974
+ return_inverse (bool, optional): If `True`, also return the indices of the unique tensor.
975
+ Default: ``False`` .
976
+
977
+ Returns:
978
+ Tensor or tuple of Tensors.
979
+ If `return_inverse` is `False`, return the unique tensor, otherwise return tuple of tensors.
980
+
981
+ Supported Platforms:
982
+ ``Ascend`` ``GPU`` ``CPU``
983
+
984
+ Raises:
985
+ TypeError: If `x` is not tensor.
986
+
987
+ Examples:
988
+ >>> import mindspore.numpy as np
989
+ >>> import mindspore as ms
990
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
991
+ >>> input_x = np.asarray([1, 2, 2, 2, 3, 4, 5]).astype('int32')
992
+ >>> output_x = np.unique(input_x)
993
+ >>> print(output_x)
994
+ [1 2 3 4 5]
995
+ >>> output_x = np.unique(input_x, return_inverse=True)
996
+ >>> print(output_x)
997
+ (Tensor(shape=[5], dtype=Int32, value= [ 1, 2, 3, 4, 5]), Tensor(shape=[7], dtype=Int32,
998
+ value= [0, 1, 1, 1, 2, 3, 4]))
999
+ """
1000
+ _check_input_tensor(x)
1001
+ if F.tuple_len(F.shape(x)) > 1:
1002
+ x = ravel(x)
1003
+ uniq = UniqueNet()
1004
+ res = uniq(x)
1005
+ if not return_inverse:
1006
+ return res[0]
1007
+ return res
1008
+
1009
+
1010
+ def roll_along_axis(a, shift, axis):
1011
+ """
1012
+ Rolls a tensor along a given axis. This is a helper function of np.roll.
1013
+
1014
+ Args:
1015
+ a (Tensor): Input tensor.
1016
+ shift (int): The number of places the tensor is shifted.
1017
+ axis (int): The designated axis for shifting.
1018
+
1019
+ Returns:
1020
+ Shifted tensor.
1021
+ """
1022
+ _check_axis_in_range(axis, a.ndim)
1023
+ _check_element_int((shift, axis))
1024
+ if axis < 0:
1025
+ axis += a.ndim
1026
+ shift = -(shift % a.shape[axis])
1027
+ # if shift is 0, we do not need to roll at all
1028
+ if shift == 0:
1029
+ return a
1030
+ begin1 = ()
1031
+ begin2 = ()
1032
+ end1 = ()
1033
+ end2 = ()
1034
+ stride = _list_comprehensions(a.ndim, 1, True)
1035
+ for i in F.make_range(a.ndim):
1036
+ if i != axis:
1037
+ begin1 += (0,)
1038
+ end1 += (a.shape[i],)
1039
+ begin2 += (0,)
1040
+ end2 += (a.shape[i],)
1041
+ else:
1042
+ begin1 += (shift,)
1043
+ end1 += (a.shape[i],)
1044
+ begin2 += (0,)
1045
+ end2 += (shift,)
1046
+ return append(F.strided_slice(a, begin1, end1, stride),
1047
+ F.strided_slice(a, begin2, end2, stride), axis=axis)
1048
+
1049
+
1050
+ def roll(a, shift, axis=None):
1051
+ """
1052
+ Rolls a tensor along given axes.
1053
+
1054
+ Elements that rolls beyond the last position are re-introduced at the first.
1055
+
1056
+ Args:
1057
+ a (Tensor): Input tensor.
1058
+ shift (Union[int, tuple(int)]): The number of places by which elements are
1059
+ shifted. If a tuple, then axis must be a tuple of the same size, and
1060
+ each of the given axes is shifted by the corresponding number. If shift
1061
+ is an int while axis is a tuple of integers, then the same value is used
1062
+ for all given axes.
1063
+ axis (Union[int, tuple(int)], optional): Axis or axes along which elements
1064
+ are shifted. By default, the array is flattened before shifting, after
1065
+ which the original shape is restored. Default: ``None`` .
1066
+
1067
+ Returns:
1068
+ Tensor, with the same shape as a.
1069
+
1070
+ Supported Platforms:
1071
+ ``Ascend`` ``GPU`` ``CPU``
1072
+
1073
+ Raises:
1074
+ TypeError: If input arguments have types not specified above.
1075
+ ValueError: If axis exceeds `a.ndim`, or `shift` and `axis` cannot broadcast.
1076
+
1077
+ Examples:
1078
+ >>> import mindspore.numpy as np
1079
+ >>> a = np.reshape(np.arange(12), (3, 4))
1080
+ >>> print(np.roll(a, [2,-3], [0,-1]))
1081
+ [[ 7 4 5 6]
1082
+ [11 8 9 10]
1083
+ [ 3 0 1 2]]
1084
+ """
1085
+ _check_input_tensor(a)
1086
+ original_shape = a.shape
1087
+ original_dtype = a.dtype
1088
+ restore_shape = False
1089
+ # F.strided_slice only supports float on cpu, this will change once more supports
1090
+ # are added.
1091
+ if not _check_is_float(original_dtype):
1092
+ if not original_dtype in (mstype.complex64, mstype.complex128):
1093
+ a = a.astype(mstype.float32)
1094
+ if axis is None:
1095
+ restore_shape = True
1096
+ axis = 0
1097
+ a = a.ravel()
1098
+ # Broadcast shift and axis to the same length
1099
+ shift, axis = _broadcast_tuples(shift, axis)
1100
+ for shift_each, axis_each in zip(shift, axis):
1101
+ a = roll_along_axis(a, shift_each, axis_each)
1102
+ if restore_shape:
1103
+ a = a.reshape(original_shape)
1104
+ if not _check_is_float(original_dtype):
1105
+ if not original_dtype in (mstype.complex64, mstype.complex128):
1106
+ a = a.astype(original_dtype)
1107
+ return a
1108
+
1109
+
1110
+ @_primexpr
1111
+ def _get_moved_perm(ndim, source, destination):
1112
+ """
1113
+ Helper function for moveaxis, returns permutation after moving axes
1114
+ from source to destination.
1115
+ """
1116
+ dest_sorted_idx = [i for i, _ in sorted(enumerate(destination), key=operator.itemgetter(1))]
1117
+ axes_orig = mutable([], True)
1118
+ for i in range(ndim):
1119
+ if i not in source:
1120
+ axes_orig = axes_orig + [i]
1121
+
1122
+ k = 0
1123
+ m = 0
1124
+ perm = []
1125
+ for i in dest_sorted_idx:
1126
+ # inserts an axis that has been moved, denoted by n, and axes that remain
1127
+ # in their original position, indexed from k to k + n - m, into index m in
1128
+ # the list of permuted axes
1129
+ n = destination[i]
1130
+ j = k + n - m
1131
+ perm += axes_orig[k:j]
1132
+ perm.append(source[i])
1133
+ k += n - m
1134
+ m = n + 1
1135
+ perm += axes_orig[k:]
1136
+ return tuple(perm)
1137
+
1138
+
1139
+ @_primexpr
1140
+ def _get_moved_shape(shape, perm):
1141
+ """
1142
+ Helper function for moveaxis, returns the permuted shape after
1143
+ applying perm.
1144
+ """
1145
+ return tuple([shape[i] for i in perm])
1146
+
1147
+
1148
+ def moveaxis(a, source, destination):
1149
+ """
1150
+ Moves axes of an array to new positions.
1151
+
1152
+ Other axes remain in their original order.
1153
+
1154
+ Args:
1155
+ a (Tensor): The array whose axes should be reordered.
1156
+ source (int, sequence of ints): Original positions of the
1157
+ axes to move. These must be unique.
1158
+ destination (int, sequence of ints): Destination positions
1159
+ for each of the original axes. These must also be unique.
1160
+
1161
+ Returns:
1162
+ Tensor, array with moved axes.
1163
+
1164
+ Raises:
1165
+ ValueError: If axes are out of the range of ``[-a.ndim, a.ndim)``, or
1166
+ if the axes contain duplicates.
1167
+
1168
+ Supported Platforms:
1169
+ ``Ascend`` ``GPU`` ``CPU``
1170
+
1171
+ Examples:
1172
+ >>> import mindspore.numpy as np
1173
+ >>> x = np.zeros((3, 4, 5))
1174
+ >>> output = np.moveaxis(x, 0, -1)
1175
+ >>> print(output.shape)
1176
+ (4, 5, 3)
1177
+ >>> output = np.moveaxis(x, -1, 0)
1178
+ >>> print(output.shape)
1179
+ (5, 3, 4)
1180
+ >>> output = np.moveaxis(x, [0, 1, 2], [-1, -2, -3])
1181
+ >>> print(output.shape)
1182
+ (5, 4, 3)
1183
+ """
1184
+ ndim = F.rank(a)
1185
+ source = _check_axis_valid(source, ndim)
1186
+ destination = _check_axis_valid(destination, ndim)
1187
+ if len(source) != len(destination):
1188
+ _raise_value_error('`source` and `destination` arguments must have the same number of elements')
1189
+ perm = _get_moved_perm(ndim, source, destination)
1190
+
1191
+ return F.transpose(a, perm)
1192
+
1193
+
1194
+ def tile(a, reps):
1195
+ """
1196
+ Constructs an array by repeating `a` the number of times given by `reps`.
1197
+
1198
+ If `reps` has length `d`, the result will have dimension of ``max(d, a.ndim)``.
1199
+ If ``a.ndim < d``, `a` is promoted to be d-dimensional by prepending new axes.
1200
+ So a shape (3,) array is promoted to (1, 3) for 2-D replication, or
1201
+ shape (1, 1, 3) for 3-D replication. If this is not the desired behavior,
1202
+ promote `a` to d-dimensions manually before calling this function.
1203
+ If ``a.ndim > d``, `reps` is promoted to ``a.ndim`` by pre-pending 1's to it. Thus
1204
+ for an `a` of shape (2, 3, 4, 5), a `reps` of (2, 2) is treated as (1, 1, 2, 2).
1205
+
1206
+ Args:
1207
+ a (Tensor): The input array.
1208
+ reps (int, sequence of ints): The number of repetitions of `a` along
1209
+ each axis.
1210
+
1211
+ Returns:
1212
+ Tensor, the tiled output array.
1213
+
1214
+ Raises:
1215
+ TypeError: If the input is not a tensor.
1216
+
1217
+ Supported Platforms:
1218
+ ``Ascend`` ``GPU`` ``CPU``
1219
+
1220
+ Examples:
1221
+ >>> import mindspore.numpy as np
1222
+ >>> a = np.array([0, 1, 2])
1223
+ >>> output = np.tile(a, 2)
1224
+ >>> print(output)
1225
+ [0 1 2 0 1 2]
1226
+ >>> output = np.tile(a, (2, 2))
1227
+ >>> print(output)
1228
+ [[0 1 2 0 1 2]
1229
+ [0 1 2 0 1 2]]
1230
+ >>> output = np.tile(a, (2, 1, 2))
1231
+ >>> print(output)
1232
+ [[[0 1 2 0 1 2]]
1233
+ [[0 1 2 0 1 2]]]
1234
+ """
1235
+ _check_input_tensor(a)
1236
+ ndim = F.rank(a)
1237
+ shape = F.shape(a)
1238
+ reps = _add_unit_axes(reps, ndim)
1239
+ if _is_shape_empty(shape) or _is_shape_empty(reps):
1240
+ shape = _add_unit_axes(shape, len(reps))
1241
+ return _empty(F.dtype(a), _seq_prod(shape, reps))
1242
+ return F.tile(a, reps)
1243
+
1244
+
1245
+ @_primexpr
1246
+ def _check_can_broadcast_to(shape, target_shape):
1247
+ """Determines if shape can be broadcast to target_shape."""
1248
+ ndim = len(shape)
1249
+ ndim_target = len(target_shape)
1250
+ if ndim > ndim_target:
1251
+ return False
1252
+ for i, j in zip(reversed(shape), reversed(target_shape)):
1253
+ if i not in (1, j):
1254
+ return False
1255
+ return True
1256
+
1257
+
1258
+ def broadcast_to(array, shape):
1259
+ """
1260
+ Broadcasts an array to a new shape.
1261
+
1262
+ Args:
1263
+ array (Tensor): The array to broadcast.
1264
+ shape (tuple): The shape of the desired array.
1265
+
1266
+ Returns:
1267
+ Tensor, original array broadcast to the given shape.
1268
+
1269
+ Raises:
1270
+ ValueError: If array cannot be broadcast to shape.
1271
+
1272
+ Supported Platforms:
1273
+ ``Ascend`` ``GPU`` ``CPU``
1274
+
1275
+ Examples:
1276
+ >>> import mindspore.numpy as np
1277
+ >>> x = np.array([1, 2, 3])
1278
+ >>> output = np.broadcast_to(x, (3, 3))
1279
+ >>> print(output)
1280
+ [[1 2 3]
1281
+ [1 2 3]
1282
+ [1 2 3]]
1283
+ """
1284
+ def _check(shape_a, shape):
1285
+ if not _check_can_broadcast_to(shape_a, shape):
1286
+ _raise_value_error('cannot broadcast with ', shape)
1287
+ shape_a = F.shape(array)
1288
+ _check(shape_a, shape)
1289
+ return _broadcast_to_shape(array, shape)
1290
+
1291
+
1292
+ def broadcast_arrays(*args):
1293
+ """
1294
+ Broadcasts any number of arrays against each other.
1295
+
1296
+ Note:
1297
+ Numpy argument `subok` is not supported.
1298
+ In graph mode, returns a tuple of Tensor instead of a list
1299
+ of Tensor.
1300
+
1301
+ Args:
1302
+ *args (Tensor): The arrays to broadcast.
1303
+
1304
+ Returns:
1305
+ List of Tensor.
1306
+
1307
+ Raises:
1308
+ ValueError: If arrays cannot be broadcast.
1309
+
1310
+ Supported Platforms:
1311
+ ``Ascend`` ``GPU`` ``CPU``
1312
+
1313
+ Examples:
1314
+ >>> import mindspore.numpy as np
1315
+ >>> x = np.array([[1,2,3]])
1316
+ >>> y = np.array([[4],[5]])
1317
+ >>> output = np.broadcast_arrays(x, y)
1318
+ >>> print(output)
1319
+ [Tensor(shape=[2, 3], dtype=Int32, value=
1320
+ [[1, 2, 3],
1321
+ [1, 2, 3]]), Tensor(shape=[2, 3], dtype=Int32, value=
1322
+ [[4, 4, 4],
1323
+ [5, 5, 5]])]
1324
+ """
1325
+ shapes = map(F.shape, args)
1326
+ out_shape = _infer_out_shape(*shapes)
1327
+ res = []
1328
+ for arr in args:
1329
+ res.append(broadcast_to(arr, out_shape))
1330
+ return res
1331
+
1332
+
1333
+ def array_split(x, indices_or_sections, axis=0):
1334
+ r"""
1335
+ Splits a tensor into multiple sub-tensors.
1336
+
1337
+ Note:
1338
+ Currently, array_split only supports ``mindspore.float32`` on ``CPU``.
1339
+
1340
+ The only difference between ``np.split`` and ``np.array_split`` is that
1341
+ ``np.array_split`` allows indices_or_sections to be an integer that does not
1342
+ equally divide the axis. For a tensor of length l that should be split into
1343
+ n sections, it returns :math:`l \% n` sub-arrays of size :math:`l//n + 1` and
1344
+ the rest of size :math:`l//n`.
1345
+
1346
+ Args:
1347
+ x (Tensor): A Tensor to be divided.
1348
+ indices_or_sections (Union[int, tuple(int), list(int)]):
1349
+ If integer, :math:`N`, the tensor will be divided into
1350
+ :math:`N` tensors along axis.
1351
+ If tuple(int), list(int) or of sorted integers,
1352
+ the entries indicate where along axis the array is split.
1353
+ For example, :math:`[2, 3]` would, for :math:`axis=0`, result in
1354
+ three sub-tensors :math:`x[:2]`, :math:`x[2:3]` and :math:`x[3:]`.
1355
+ If an index exceeds the dimension of the array along axis,
1356
+ an empty sub-array is returned correspondingly.
1357
+ axis (int): The axis along which to split. Default: ``0`` .
1358
+
1359
+ Returns:
1360
+ A list of sub-tensors.
1361
+
1362
+ Raises:
1363
+ TypeError: If argument `indices_or_sections` is not integer,
1364
+ tuple(int) or list(int) or argument `axis` is not integer.
1365
+ ValueError: If argument `axis` is out of range of :math:`[-x.ndim, x.ndim)`.
1366
+
1367
+ Supported Platforms:
1368
+ ``Ascend`` ``GPU`` ``CPU``
1369
+
1370
+ Examples:
1371
+ >>> import mindspore.numpy as np
1372
+ >>> input_x = np.arange(9).astype("float32")
1373
+ >>> output = np.array_split(input_x, 4)
1374
+ >>> print(output)
1375
+ (Tensor(shape=[3], dtype=Float32,
1376
+ value= [ 0.00000000e+00, 1.00000000e+00, 2.00000000e+00]),
1377
+ Tensor(shape=[2], dtype=Float32,
1378
+ value= [ 3.00000000e+00, 4.00000000e+00]),
1379
+ Tensor(shape=[2], dtype=Float32,
1380
+ value= [ 5.00000000e+00, 6.00000000e+00]),
1381
+ Tensor(shape=[2], dtype=Float32,
1382
+ value= [ 7.00000000e+00, 8.00000000e+00]))
1383
+ """
1384
+ return _split(x, indices_or_sections, opname="array_split", axis=axis)
1385
+
1386
+
1387
+ def split(x, indices_or_sections, axis=0):
1388
+ """
1389
+ Splits a tensor into multiple sub-tensors along the given axis.
1390
+
1391
+ Args:
1392
+ x (Tensor): A Tensor to be divided.
1393
+ indices_or_sections (Union[int, tuple(int), list(int)]):
1394
+ If integer, :math:`N`, the tensor will be divided into
1395
+ :math:`N` equal tensors along axis.
1396
+ If tuple(int), list(int) or of sorted integers,
1397
+ the entries indicate where along axis the array is split.
1398
+ For example, :math:`[2, 3]` would, for :math:`axis=0`, result in
1399
+ three sub-tensors :math:`x[:2]`, :math:`x[2:3]` and :math:`x[3:]`.
1400
+ If an index exceeds the dimension of the array along axis,
1401
+ an empty sub-array is returned correspondingly.
1402
+ axis (int, optional): The axis along which to split. Default: ``0`` .
1403
+
1404
+ Returns:
1405
+ A tuple of sub-tensors.
1406
+
1407
+ Raises:
1408
+ TypeError: If argument `indices_or_sections` is not integer,
1409
+ tuple(int) or list(int) or argument `axis` is not integer.
1410
+ ValueError: If argument `axis` is out of range of :math:`[-x.ndim, x.ndim)`.
1411
+
1412
+ Supported Platforms:
1413
+ ``Ascend`` ``GPU`` ``CPU``
1414
+
1415
+ Examples:
1416
+ >>> import mindspore.numpy as np
1417
+ >>> input_x = np.arange(9).astype("float32")
1418
+ >>> output = np.split(input_x, 3)
1419
+ >>> print(output)
1420
+ (Tensor(shape=[3], dtype=Float32,
1421
+ value= [ 0.00000000e+00, 1.00000000e+00, 2.00000000e+00]),
1422
+ Tensor(shape=[3], dtype=Float32,
1423
+ value= [ 3.00000000e+00, 4.00000000e+00, 5.00000000e+00]),
1424
+ Tensor(shape=[3], dtype=Float32,
1425
+ value= [ 6.00000000e+00, 7.00000000e+00, 8.00000000e+00]))
1426
+ """
1427
+ return _split(x, indices_or_sections, opname="split", axis=axis)
1428
+
1429
+
1430
+ def _split(x, indices_or_sections, opname, axis=0):
1431
+ """Splits a tensor based on ``np.split`` or ``np.array_split``."""
1432
+ _check_input_tensor(x)
1433
+ _ = _check_axis_type(axis, True, False, False)
1434
+ axis_new = _canonicalize_axis(axis, x.ndim)
1435
+ res = None
1436
+ arr_shape = x.shape
1437
+ length_along_dim = arr_shape[axis_new]
1438
+ if isinstance(indices_or_sections, int):
1439
+ if indices_or_sections > length_along_dim:
1440
+ _raise_value_error("empty tensor encountered.")
1441
+ if opname == "split" or length_along_dim % indices_or_sections == 0:
1442
+ res = P.Split(axis_new, indices_or_sections)(x)
1443
+ else:
1444
+ num_long_tensor = length_along_dim % indices_or_sections
1445
+ num_short_tensor = indices_or_sections - num_long_tensor
1446
+ length1 = num_long_tensor * (length_along_dim // indices_or_sections + 1)
1447
+ length2 = length_along_dim - length1
1448
+ start1 = _list_comprehensions(F.rank(x), 0, True)
1449
+ size1 = _tuple_setitem(arr_shape, axis_new, length1)
1450
+ start2 = _tuple_setitem(start1, axis_new, length1)
1451
+ size2 = _tuple_setitem(arr_shape, axis_new, length2)
1452
+ res = P.Split(axis_new, num_long_tensor)(F.tensor_slice(x, start1, size1)) + \
1453
+ P.Split(axis_new, num_short_tensor)(F.tensor_slice(x, start2, size2))
1454
+
1455
+ elif isinstance(indices_or_sections, (list, tuple)) and _check_element_int(indices_or_sections):
1456
+ res = _split_sub_tensors(x, indices_or_sections, axis_new)
1457
+ else:
1458
+ _raise_type_error("Argument `indices_or_sections` in `mindspore.numpy.split`\
1459
+ should be integer, tuple(int) or list(int), but got", indices_or_sections)
1460
+ return res
1461
+
1462
+
1463
+ @constexpr
1464
+ def convert_neg_indices(indices, ndim):
1465
+ """converts negative values in tuple/list indices"""
1466
+ def canonicalizer(ax):
1467
+ return ax + ndim if ax < 0 else ax
1468
+ indices = tuple([canonicalizer(axis) for axis in indices])
1469
+ return indices
1470
+
1471
+
1472
+ def _split_sub_tensors(x, indices, axis):
1473
+ """
1474
+ Splits the input tensor `x` into multiple sub-tensors
1475
+ along the axis according to the given indices.
1476
+ """
1477
+ length_along_dim = x.shape[axis]
1478
+ indices = convert_neg_indices(indices, length_along_dim)
1479
+ indices += (length_along_dim,)
1480
+
1481
+ sub_tensors = []
1482
+ strides = _list_comprehensions(x.ndim, 1, True)
1483
+ begin = _list_comprehensions(x.ndim, 0)
1484
+ end = _list_comprehensions(x.shape)
1485
+ for i, idx in enumerate(indices):
1486
+ begin[axis] = 0 if i == 0 else indices[i - 1]
1487
+ end[axis] = idx
1488
+ if end[axis] <= begin[axis]:
1489
+ _raise_value_error("empty sub-tensor encountered.")
1490
+ sliced_tensor = F.strided_slice(x, _type_convert(tuple, begin), _type_convert(tuple, end), strides)
1491
+ sub_tensors.append(sliced_tensor)
1492
+ return sub_tensors
1493
+
1494
+
1495
+ def vsplit(x, indices_or_sections):
1496
+ """
1497
+ Splits a tensor into multiple sub-tensors vertically (row-wise).
1498
+ It is equivalent to split with :math:`axis=0` (default), the array is always
1499
+ split along the first axis regardless of the array dimension.
1500
+
1501
+ Args:
1502
+ x (Tensor): A Tensor to be divided.
1503
+ indices_or_sections (Union[int, tuple(int), list(int)]):
1504
+ If integer, :math:`N`, the tensor will be divided into
1505
+ :math:`N` equal tensors along axis.
1506
+ If tuple(int), list(int) or of sorted integers,
1507
+ the entries indicate where along axis the array is split.
1508
+ For example, :math:`[2, 3]` would, for :math:`axis=0`, result in
1509
+ three sub-tensors :math:`x[:2]`, :math:`x[2:3]` and :math:`x[3:]`.
1510
+ If an index exceeds the dimension of the array along axis,
1511
+ an empty sub-array is returned correspondingly.
1512
+
1513
+ Returns:
1514
+ A list of sub-tensors.
1515
+
1516
+ Raises:
1517
+ TypeError: If argument `indices_or_sections` is not integer.
1518
+
1519
+ Supported Platforms:
1520
+ ``Ascend`` ``GPU`` ``CPU``
1521
+
1522
+ Examples:
1523
+ >>> import mindspore.numpy as np
1524
+ >>> input_x = np.arange(9).reshape((3, 3)).astype('float32')
1525
+ >>> output = np.vsplit(input_x, 3)
1526
+ >>> print(output)
1527
+ (Tensor(shape=[1, 3], dtype=Float32,
1528
+ value=[[ 0.00000000e+00, 1.00000000e+00, 2.00000000e+00]]),
1529
+ Tensor(shape=[1, 3], dtype=Float32,
1530
+ value=[[ 3.00000000e+00, 4.00000000e+00, 5.00000000e+00]]),
1531
+ Tensor(shape=[1, 3], dtype=Float32,
1532
+ value=[[ 6.00000000e+00, 7.00000000e+00, 8.00000000e+00]]))
1533
+ """
1534
+ return split(x, indices_or_sections, 0)
1535
+
1536
+
1537
+ def hsplit(x, indices_or_sections):
1538
+ """
1539
+ Splits a tensor into multiple sub-tensors horizontally (column-wise).
1540
+ It is equivalent to split with :math:`axis=1` (default), the array is always
1541
+ split along the second axis regardless of the array dimension.
1542
+
1543
+ Args:
1544
+ x (Tensor): A Tensor to be divided.
1545
+ indices_or_sections (Union[int, tuple(int), list(int)]):
1546
+ If integer, :math:`N`, the tensor will be divided into
1547
+ :math:`N` equal tensors along axis.
1548
+ If tuple(int), list(int) or of sorted integers,
1549
+ the entries indicate where along axis the array is split.
1550
+ For example, :math:`[2, 3]` would, for :math:`axis=0`, result in
1551
+ three sub-tensors :math:`x[:2]`, :math:`x[2:3]` and :math:`x[3:]`.
1552
+ If an index exceeds the dimension of the array along axis,
1553
+ an empty sub-array is returned correspondingly.
1554
+
1555
+ Returns:
1556
+ A list of sub-tensors.
1557
+
1558
+ Raises:
1559
+ TypeError: If argument `indices_or_sections` is not integer.
1560
+
1561
+ Supported Platforms:
1562
+ ``Ascend`` ``GPU`` ``CPU``
1563
+
1564
+ Examples:
1565
+ >>> import mindspore.numpy as np
1566
+ >>> input_x = np.arange(6).reshape((2, 3)).astype('float32')
1567
+ >>> output = np.hsplit(input_x, 3)
1568
+ >>> print(output)
1569
+ (Tensor(shape=[2, 1], dtype=Float32,
1570
+ value=[[ 0.00000000e+00],
1571
+ [ 3.00000000e+00]]),
1572
+ Tensor(shape=[2, 1], dtype=Float32,
1573
+ value=[[ 1.00000000e+00],
1574
+ [ 4.00000000e+00]]),
1575
+ Tensor(shape=[2, 1], dtype=Float32,
1576
+ value=[[ 2.00000000e+00],
1577
+ [ 5.00000000e+00]]))
1578
+ """
1579
+ return split(x, indices_or_sections, 1)
1580
+
1581
+
1582
+ def dsplit(x, indices_or_sections):
1583
+ """
1584
+ Splits a tensor into multiple sub-tensors along the 3rd axis (depth).
1585
+ It is equivalent to split with :math:`axis=2` (default), the array is always
1586
+ split along the third axis regardless of the array dimension.
1587
+
1588
+ Args:
1589
+ x (Tensor): A Tensor to be divided.
1590
+ indices_or_sections (Union[int, tuple(int), list(int)]):
1591
+ If integer, :math:`N`, the tensor will be divided into
1592
+ :math:`N` equal tensors along axis.
1593
+ If tuple(int), list(int) or of sorted integers,
1594
+ the entries indicate where along axis the array is split.
1595
+ For example, :math:`[2, 3]` would, for :math:`axis=0`, result in
1596
+ three sub-tensors :math:`x[:2]`, :math:`x[2:3]` and :math:`x[3:]`.
1597
+ If an index exceeds the dimension of the array along axis,
1598
+ an empty sub-array is returned correspondingly.
1599
+
1600
+ Returns:
1601
+ A list of sub-tensors.
1602
+
1603
+ Raises:
1604
+ TypeError: If argument `indices_or_sections` is not integer.
1605
+
1606
+ Supported Platforms:
1607
+ ``Ascend`` ``GPU`` ``CPU``
1608
+
1609
+ Examples:
1610
+ >>> import mindspore.numpy as np
1611
+ >>> input_x = np.arange(6).reshape((1, 2, 3)).astype('float32')
1612
+ >>> output = np.dsplit(input_x, 3)
1613
+ >>> print(output)
1614
+ (Tensor(shape=[1, 2, 1], dtype=Float32,
1615
+ value=[[[ 0.00000000e+00],
1616
+ [ 3.00000000e+00]]]),
1617
+ Tensor(shape=[1, 2, 1], dtype=Float32,
1618
+ value=[[[ 1.00000000e+00],
1619
+ [ 4.00000000e+00]]]),
1620
+ Tensor(shape=[1, 2, 1], dtype=Float32,
1621
+ value=[[[ 2.00000000e+00],
1622
+ [ 5.00000000e+00]]]))
1623
+ """
1624
+ return split(x, indices_or_sections, 2)
1625
+
1626
+
1627
+ @_primexpr
1628
+ def _get_flip_start(ndim, shape, axes):
1629
+ return tuple([shape[i] - 1 if i in axes else 0 for i in range(ndim)])
1630
+
1631
+
1632
+ @_primexpr
1633
+ def _get_flip_end(ndim, shape, axes):
1634
+ return tuple([-shape[i] - 1 if i in axes else shape[i] + 1 for i in range(ndim)])
1635
+
1636
+
1637
+ @_primexpr
1638
+ def _get_flip_strides(ndim, axes):
1639
+ return tuple([-1 if i in axes else 1 for i in range(ndim)])
1640
+
1641
+
1642
+ def flip(m, axis=None):
1643
+ """
1644
+ Reverses the order of elements in an array along the given axis.
1645
+
1646
+ The shape of the array is preserved, but the elements are reordered.
1647
+
1648
+ Args:
1649
+ m (Tensor): Input array.
1650
+ axis (Union[int, tuple(int), None], optional): Axis or axes along which
1651
+ to flip over. The default, ``axis=None``, will flip over all of the axes
1652
+ of the input array. If `axis` is negative it counts from the last to
1653
+ the first axis. If `axis` is a tuple of integers, flipping is performed on
1654
+ all of the axes specified in the tuple.
1655
+
1656
+ Returns:
1657
+ Tensor, with the entries of `axis` reversed.
1658
+
1659
+ Raises:
1660
+ TypeError: If the input is not a tensor.
1661
+
1662
+ Supported Platforms:
1663
+ ``GPU`` ``CPU``
1664
+
1665
+ Examples:
1666
+ >>> import mindspore.numpy as np
1667
+ >>> A = np.arange(8.0).reshape((2,2,2))
1668
+ >>> output = np.flip(A)
1669
+ >>> print(output)
1670
+ [[[7. 6.]
1671
+ [5. 4.]]
1672
+ [[3. 2.]
1673
+ [1. 0.]]]
1674
+ >>> output = np.flip(A, (0, 2))
1675
+ >>> print(output)
1676
+ [[[5. 4.]
1677
+ [7. 6.]]
1678
+ [[1. 0.]
1679
+ [3. 2.]]]
1680
+ """
1681
+ _check_input_tensor(m)
1682
+ ndim = F.rank(m)
1683
+ axes = _check_axis_valid(axis, ndim)
1684
+ shape = F.shape(m)
1685
+ dtype = F.dtype(m)
1686
+ if _is_shape_empty(shape):
1687
+ return m
1688
+ if not _check_is_float(dtype):
1689
+ m = m.astype(mstype.float32)
1690
+ start = _get_flip_start(ndim, shape, axes)
1691
+ end = _get_flip_end(ndim, shape, axes)
1692
+ strides = _get_flip_strides(ndim, axes)
1693
+ res = F.strided_slice(m, start, end, strides)
1694
+ if not _check_same_type(F.dtype(res), dtype):
1695
+ res = F.cast(res, dtype)
1696
+ return res
1697
+
1698
+
1699
+ def flipud(m):
1700
+ """
1701
+ Flips the entries in each column in the up/down direction.
1702
+ Rows are preserved, but appear in a different order than before.
1703
+
1704
+ Args:
1705
+ m (Tensor): Input array.
1706
+
1707
+ Returns:
1708
+ Tensor.
1709
+
1710
+ Raises:
1711
+ TypeError: If the input is not a tensor.
1712
+
1713
+ Supported Platforms:
1714
+ ``GPU`` ``CPU``
1715
+
1716
+ Examples:
1717
+ >>> import mindspore.numpy as np
1718
+ >>> A = np.arange(8.0).reshape((2,2,2))
1719
+ >>> output = np.flipud(A)
1720
+ >>> print(output)
1721
+ [[[4. 5.]
1722
+ [6. 7.]]
1723
+ [[0. 1.]
1724
+ [2. 3.]]]
1725
+ """
1726
+ return flip(m, 0)
1727
+
1728
+
1729
+ def fliplr(m):
1730
+ """
1731
+ Flips the entries in each row in the left/right direction.
1732
+ Columns are preserved, but appear in a different order than before.
1733
+
1734
+ Args:
1735
+ m (Tensor): Input array.
1736
+
1737
+ Returns:
1738
+ Tensor.
1739
+
1740
+ Raises:
1741
+ TypeError: If the input is not a tensor.
1742
+
1743
+ Supported Platforms:
1744
+ ``GPU`` ``CPU``
1745
+
1746
+ Examples:
1747
+ >>> import mindspore.numpy as np
1748
+ >>> A = np.arange(8.0).reshape((2,2,2))
1749
+ >>> output = np.fliplr(A)
1750
+ >>> print(output)
1751
+ [[[2. 3.]
1752
+ [0. 1.]]
1753
+ [[6. 7.]
1754
+ [4. 5.]]]
1755
+ """
1756
+ return flip(m, 1)
1757
+
1758
+
1759
+ def take_along_axis(arr, indices, axis):
1760
+ """
1761
+ Takes values from the input array by matching 1d index and data slices.
1762
+
1763
+ This iterates over matching 1d slices oriented along the specified axis in the
1764
+ index and data arrays, and uses the former to look up values in the latter.
1765
+ These slices can be different lengths.
1766
+
1767
+ Args:
1768
+ arr (Tensor): Source array with shape `(Ni…, M, Nk…)`.
1769
+ indices (Tensor): Indices with shape `(Ni…, J, Nk…)` to take along each 1d
1770
+ slice of `arr`. This must match the dimension of `arr`, but dimensions `Ni`
1771
+ and `Nj` only need to broadcast against `arr`.
1772
+ axis (int): The axis to take 1d slices along. If `axis` is None, the input
1773
+ array is treated as if it had first been flattened to 1d.
1774
+
1775
+ Returns:
1776
+ Tensor, the indexed result, with shape `(Ni…, J, Nk…)`.
1777
+
1778
+ Raises:
1779
+ ValueError: If input array and indices have different number of dimensions.
1780
+ TypeError: If the input is not a Tensor.
1781
+
1782
+ Supported Platforms:
1783
+ ``Ascend`` ``GPU`` ``CPU``
1784
+
1785
+ Examples:
1786
+ >>> import mindspore.numpy as np
1787
+ >>> x = np.arange(12).reshape(3, 4)
1788
+ >>> indices = np.arange(3).reshape(1, 3)
1789
+ >>> output = np.take_along_axis(x, indices, 1)
1790
+ >>> print(output)
1791
+ [[ 0 1 2]
1792
+ [ 4 5 6]
1793
+ [ 8 9 10]]
1794
+ """
1795
+ _check_input_tensor(arr, indices)
1796
+ if axis is None:
1797
+ arr = ravel(arr)
1798
+ axis = 0
1799
+ ndim = F.rank(arr)
1800
+ if ndim != F.rank(indices):
1801
+ _raise_value_error('`indices` and `arr` must have the same number of dimensions')
1802
+ axis = _check_axis_in_range(axis, ndim)
1803
+
1804
+ shape_arr = F.shape(arr)
1805
+ shape_indices = F.shape(indices)
1806
+ # broadcasts indices against the shape of arr except at axis
1807
+ indices = _broadcast_to(indices, _tuple_slice(shape_indices, None, axis),
1808
+ _tuple_slice(shape_arr, None, axis), ndim)
1809
+ indices = _broadcast_to(indices, _tuple_slice(shape_arr, None, axis + 1) +
1810
+ _tuple_slice(shape_indices, axis + 1, None), shape_arr, ndim)
1811
+ arr = _broadcast_to(arr, shape_arr, indices.shape, ndim)
1812
+ return F.gather_d(arr, axis, indices)
1813
+
1814
+
1815
+ def _mod(x, y):
1816
+ """Computes x mod y."""
1817
+ quotient = F.tensor_floordiv(x, y)
1818
+ prod = F.tensor_mul(y, quotient)
1819
+ return F.tensor_sub(x, prod)
1820
+
1821
+
1822
+ def _check_indices(dims, indices, mode, allow_negative_index=True):
1823
+ """Checks whether indices are out of bounds."""
1824
+ shape = F.shape(indices)
1825
+ dtype = F.dtype(indices)
1826
+ if not allow_negative_index:
1827
+ lowerbounds = F.fill(dtype, shape, 0)
1828
+ else:
1829
+ lowerbounds = F.fill(dtype, shape, -dims)
1830
+ upperbounds = F.fill(dtype, shape, dims - 1)
1831
+ out_of_lowerbounds = F.tensor_lt(indices, lowerbounds)
1832
+ out_of_upperbounds = F.tensor_gt(indices, upperbounds)
1833
+ if mode == 'raise':
1834
+ _raise_unimplemented_error('"raise" mode is not implemented')
1835
+ if mode == 'wrap':
1836
+ return _mod(indices, F.fill(mstype.float32, shape, dims)).astype(dtype)
1837
+ if mode != 'clip':
1838
+ _raise_value_error('invalid mode. Expected "raise", "wrap", or "clip"')
1839
+ zeros = F.fill(dtype, shape, 0)
1840
+ clipped = F.select(out_of_lowerbounds, zeros, indices)
1841
+ clipped = F.select(out_of_upperbounds, upperbounds, clipped)
1842
+ return clipped
1843
+
1844
+
1845
+ def take(a, indices, axis=None, mode='clip'):
1846
+ """
1847
+ Takes elements from an array along an axis.
1848
+
1849
+ When axis is not None, this function does the same thing as "fancy" indexing
1850
+ (indexing arrays using arrays); however, it can be easier to use if you need
1851
+ elements along a given axis. A call such as ``np.take(arr, indices, axis=3)`` is
1852
+ equivalent to ``arr[:,:,:,indices,...]``.
1853
+
1854
+ Note:
1855
+ Numpy argument out is not supported.
1856
+ ``mode = 'raise'`` is not supported, and the default mode is 'clip' instead.
1857
+
1858
+ Args:
1859
+ a (Tensor): Source array with shape `(Ni…, M, Nk…)`.
1860
+ indices (Tensor): The indices with shape `(Nj...)` of the values to extract.
1861
+ axis (int, optional): The axis over which to select values. By default,
1862
+ the flattened input array is used. Default: ``None`` .
1863
+ mode ('raise', 'wrap', 'clip', optional): Specifies how out-of-bounds
1864
+ indices will behave. Default: ``'clip'`` .
1865
+
1866
+ 'raise' - raise an error;
1867
+
1868
+ 'wrap' - wrap around;
1869
+
1870
+ 'clip' - clip to the range. 'clip' mode means that all indices that are
1871
+ too large are replaced by the index that addresses the last element
1872
+ along that axis. Note that this disables indexing with negative numbers.
1873
+
1874
+ Returns:
1875
+ Tensor, the indexed result.
1876
+
1877
+ Raises:
1878
+ ValueError: If axis is out of range.
1879
+ TypeError: If the input is not a Tensor.
1880
+
1881
+ Supported Platforms:
1882
+ ``Ascend`` ``GPU`` ``CPU``
1883
+
1884
+ Examples:
1885
+ >>> import mindspore.numpy as np
1886
+ >>> a = np.array([4, 3, 5, 7, 6, 8])
1887
+ >>> indices = np.array([0, 1, 4])
1888
+ >>> output = np.take(a, indices)
1889
+ >>> print(output)
1890
+ [4 3 6]
1891
+ >>> indices = np.array([[0, 1], [2, 3]])
1892
+ >>> output = np.take(a, indices)
1893
+ >>> print(output)
1894
+ [[4 3]
1895
+ [5 7]]
1896
+ """
1897
+ _check_input_tensor(a, indices)
1898
+ return a.take(indices, axis, mode)
1899
+
1900
+
1901
+ def repeat(a, repeats, axis=None):
1902
+ """
1903
+ Repeats elements of an array.
1904
+
1905
+ Args:
1906
+ a (Tensor): Input array.
1907
+ repeats (int, sequence of ints): The number of repetitions for each element.
1908
+ `repeats` is broadcasted to fit the shape of the given axis.
1909
+ axis (int, optional): The axis along which to repeat values. By default,
1910
+ use the flattened input array, and return a flat output array. Default: ``None`` .
1911
+
1912
+ Returns:
1913
+ Tensor, output array which has the same shape as `a`, except along the given
1914
+ axis.
1915
+
1916
+ Raises:
1917
+ ValueError: If axis is out of range.
1918
+ TypeError: If input `a` is not a Tensor.
1919
+
1920
+ Supported Platforms:
1921
+ ``Ascend`` ``GPU`` ``CPU``
1922
+
1923
+ Examples:
1924
+ >>> import mindspore.numpy as np
1925
+ >>> output = np.repeat(np.array(3), 4)
1926
+ >>> print(output)
1927
+ [3 3 3 3]
1928
+ >>> x = np.array([[1,2],[3,4]])
1929
+ >>> output = np.repeat(x, 2)
1930
+ >>> print(output)
1931
+ [1 1 2 2 3 3 4 4]
1932
+ >>> output = np.repeat(x, 3, axis=1)
1933
+ >>> print(output)
1934
+ [[1 1 1 2 2 2]
1935
+ [3 3 3 4 4 4]]
1936
+ >>> output = np.repeat(x, [1, 2], axis=0)
1937
+ >>> print(output)
1938
+ [[1 2]
1939
+ [3 4]
1940
+ [3 4]]
1941
+ """
1942
+ a = _to_tensor(a)
1943
+ return a.repeat(repeats, axis)
1944
+
1945
+
1946
+ def rot90(a, k=1, axes=(0, 1)):
1947
+ """
1948
+ Rotates a tensor by 90 degrees in the plane specified by axes.
1949
+ Rotation direction is from the first towards the second axis.
1950
+
1951
+ Args:
1952
+ a (Tensor): Input tensor of two or more dimensions.
1953
+ k (int): Number of times the tensor is rotated by 90 degrees. Default: ``1`` .
1954
+ axes (Union[tuple(int), list(int)], optional): The tensor is rotated in the plane
1955
+ defined by the axes. Default: ``(0, 1)`` .
1956
+ Axes must be different and with the shape of `(2,)`.
1957
+
1958
+ Returns:
1959
+ Tensor.
1960
+
1961
+ Raises:
1962
+ TypeError: If input `a` is not a Tensor or
1963
+ the argument `k` is not integer or
1964
+ the argument `axes` is not tuple of integers or list of ints.
1965
+ ValueError: If any axis is out of range or
1966
+ the length of `axes` is not `2`.
1967
+
1968
+ Supported Platforms:
1969
+ ``GPU``
1970
+
1971
+ Examples:
1972
+ >>> import mindspore.numpy as np
1973
+ >>> a = np.arange(24).reshape((2, 3, 4))
1974
+ >>> output = np.rot90(a)
1975
+ >>> print(output)
1976
+ [[[ 8 9 10 11]
1977
+ [20 21 22 23]]
1978
+ [[ 4 5 6 7]
1979
+ [16 17 18 19]]
1980
+ [[ 0 1 2 3]
1981
+ [12 13 14 15]]]
1982
+ >>> output = np.rot90(a, 3, (1, 2))
1983
+ >>> print(output)
1984
+ [[[ 8 4 0]
1985
+ [ 9 5 1]
1986
+ [10 6 2]
1987
+ [11 7 3]]
1988
+ [[20 16 12]
1989
+ [21 17 13]
1990
+ [22 18 14]
1991
+ [23 19 15]]]
1992
+ """
1993
+ _check_input_tensor(a)
1994
+
1995
+ if not isinstance(k, int):
1996
+ _raise_type_error("integer argument expected, but got ", k)
1997
+ k = k % 4 if k >= 0 else 4 - (-k % 4)
1998
+
1999
+ if not isinstance(axes, (tuple, list)):
2000
+ _raise_type_error("tuple(ints) or list(ints) expected, but got ", axes)
2001
+ if len(axes) != 2:
2002
+ _raise_value_error("len(axes) must be 2.")
2003
+ axis1_tmp, axis2_tmp = axes[0], axes[1]
2004
+ axis1 = _canonicalize_axis(axis1_tmp, a.ndim)
2005
+ axis2 = _canonicalize_axis(axis2_tmp, a.ndim)
2006
+ if axis1 == axis2:
2007
+ _raise_value_error('Axes must be different.')
2008
+
2009
+ if k == 0:
2010
+ return a
2011
+ if k == 2:
2012
+ return flip(flip(a, axis1), axis2)
2013
+ perm = _list_comprehensions(a.ndim)
2014
+ perm[axis1], perm[axis2] = perm[axis2], perm[axis1]
2015
+ if k == 1:
2016
+ return flip(transpose(a, perm), axis1)
2017
+ return flip(transpose(a, perm), axis2)
2018
+
2019
+
2020
+ def select(condlist, choicelist, default=0):
2021
+ """
2022
+ Returns an array drawn from elements in `choicelist`, depending on conditions.
2023
+
2024
+ Args:
2025
+ condlist (Union[int, float, bool, list, tuple, Tensor]): The list of conditions
2026
+ which determine from which array in `choicelist` the output elements are
2027
+ taken. When multiple conditions are satisfied, the first one encountered in
2028
+ `condlist` is used.
2029
+ choicelist (Union[int, float, bool, list, tuple, Tensor]): The list of arrays
2030
+ from which the output elements are taken. It has to be of the same length as
2031
+ `condlist`.
2032
+ default (scalar, optional): The element inserted in output when all conditions
2033
+ evaluate to `False`. Default: ``0`` .
2034
+
2035
+ Returns:
2036
+ Tensor, the output at position `m` is the `m-th` element of the array in
2037
+ `choicelist` where the `m-th` element of the corresponding array in `condlist`
2038
+ is `True`.
2039
+
2040
+ Raises:
2041
+ ValueError: If ``len(condlist) != len(choicelist)``.
2042
+
2043
+ Supported Platforms:
2044
+ ``Ascend`` ``GPU`` ``CPU``
2045
+
2046
+ Examples:
2047
+ >>> import mindspore.numpy as np
2048
+ >>> condlist = [[True, True, True, False, False], [False, False, True, False, True]]
2049
+ >>> choicelist = [[0, 1, 2, 3, 4], [0, 1, 4, 9, 16]]
2050
+ >>> output = np.select(condlist, choicelist)
2051
+ >>> print(output)
2052
+ [ 0 1 2 0 16]
2053
+ """
2054
+ condlist, choicelist = _to_tensor(condlist, choicelist)
2055
+ shape_cond = F.shape(condlist)
2056
+ shape_choice = F.shape(choicelist)
2057
+ if F.rank(condlist) == 0 or F.rank(choicelist) == 0:
2058
+ _raise_value_error('input cannot be scalars')
2059
+ case_num = shape_cond[0]
2060
+ if shape_choice[0] != case_num:
2061
+ _raise_value_error('list of cases must be same length as list of conditions')
2062
+
2063
+ case_size_cond = _tuple_slice(shape_cond, 1, None)
2064
+ case_size_choice = _tuple_slice(shape_choice, 1, None)
2065
+ # performs broadcast over the cases in condlist and choicelist
2066
+ case_size = _infer_out_shape(case_size_cond, case_size_choice)
2067
+ shape_broadcasted = (case_num,) + case_size
2068
+ ndim = len(shape_broadcasted)
2069
+ shape_cond_expanded = ((case_num,) + _list_comprehensions(ndim - F.rank(condlist), 1, True) +
2070
+ case_size_cond)
2071
+ condlist = _broadcast_to_shape(F.reshape(condlist, shape_cond_expanded), shape_broadcasted)
2072
+ shape_choice_expanded = ((case_num,) + _list_comprehensions(ndim - F.rank(choicelist), 1, True) +
2073
+ case_size_choice)
2074
+ choicelist = _broadcast_to_shape(F.reshape(choicelist, shape_choice_expanded), shape_broadcasted)
2075
+
2076
+ slice_start = _list_comprehensions(ndim - 1, 0, True)
2077
+ slice_size = (1,) + case_size
2078
+ dtype = F.dtype(choicelist)
2079
+ if isinstance(default, Tensor):
2080
+ default_slice = default.astype(F.dtype(choicelist)).reshape(slice_size)
2081
+ else:
2082
+ default_slice = F.fill(F.dtype(choicelist), slice_size, default)
2083
+ for i in range(case_num - 1, -1, -1):
2084
+ cond_slice = F.tensor_slice(condlist.astype(mstype.float32), (i,) + slice_start, slice_size)
2085
+ choice_slice = F.tensor_slice(choicelist, (i,) + slice_start, slice_size)
2086
+ default_slice = F.select(cond_slice.astype(mstype.bool_), choice_slice, default_slice)
2087
+ return F.reshape(default_slice, (case_size)).astype(dtype)
2088
+
2089
+
2090
+ @_primexpr
2091
+ def _get_grid(shape):
2092
+ """Returns a grid representing all the indices for an array with the given shape."""
2093
+ grids = []
2094
+ ndim = len(shape)
2095
+ for i in range(ndim):
2096
+ dim_grid = _iota(mstype.int32, shape[i])
2097
+ dim_shape = _expanded_shape(ndim, shape[i], i)
2098
+ dim_grid = _broadcast_to_shape(dim_grid.reshape(dim_shape), shape)
2099
+ grids.append(dim_grid)
2100
+ return stack(grids, -1)
2101
+
2102
+
2103
+ def choose(a, choices, mode='clip'):
2104
+ """
2105
+ Construct an array from an index array and a list of arrays to choose from.
2106
+ Given an "index" array `a` of integers and a sequence of n arrays (choices),
2107
+ `a` and each choice array are first broadcast, as necessary, to arrays of a
2108
+ common shape; calling these `Ba` and `Bchoices[i], i = 0,…,n-1` we have that,
2109
+ necessarily, ``Ba.shape == Bchoices[i].shape`` for each `i`. Then, a new array
2110
+ with ``shape Ba.shape`` is created as follows:
2111
+
2112
+ - if ``mode='raise'`` (the default), then, first of all, each element of `a`
2113
+ (and thus `Ba`) must be in the range `[0, n-1]`; now, suppose that `i`
2114
+ (in that range) is the value at the `(j0, j1, ..., jm)` position in
2115
+ `Ba` - then the value at the same position in the new array is the
2116
+ value in ``Bchoices[i]`` at that same position;
2117
+
2118
+ - if ``mode='wrap'``, values in `a` (and thus `Ba`) may be any (signed)
2119
+ integer; modular arithmetic is used to map integers outside the
2120
+ range ``[0, n-1]`` back into that range; and then the new array is
2121
+ constructed as above;
2122
+
2123
+ - if ``mode='clip'``, values in `a` (and thus `Ba`) may be any (signed) integer;
2124
+ negative integers are mapped to 0; values greater than `n-1` are mapped to
2125
+ `n-1`; and then the new array is constructed as above.
2126
+
2127
+ Note:
2128
+ Numpy argument `out` is not supported.
2129
+ ``mode = 'raise'`` is not supported, and the default mode is 'clip' instead.
2130
+
2131
+ Args:
2132
+ a (int array): This array must contain integers in ``[0, n-1]``, where `n` is
2133
+ the number of choices, unless ``mode=wrap`` or ``mode=clip``, in which
2134
+ cases any integers are permissible.
2135
+ choices (sequence of arrays): Choice arrays. `a` and all of the `choices` must
2136
+ be broadcastable to the same shape. If `choices` is itself an array, then
2137
+ its outermost dimension (i.e., the one corresponding to ``choices.shape[0]``)
2138
+ is taken as defining the "sequence".
2139
+ mode ('raise', 'wrap', 'clip', optional): Specifies how indices outside
2140
+ ``[0, n-1]`` will be treated:
2141
+
2142
+ 'raise' - raise an error;
2143
+
2144
+ 'wrap' - wrap around;
2145
+
2146
+ 'clip' - clip to the range. 'clip' mode means that all indices that are
2147
+ too large are replaced by the index that addresses the last element
2148
+ along that axis. Note that this disables indexing with negative numbers.
2149
+
2150
+ Returns:
2151
+ Tensor, the merged result.
2152
+
2153
+ Raises:
2154
+ ValueError: If `a` and any of the `choices` cannot be broadcast.
2155
+
2156
+ Supported Platforms:
2157
+ ``Ascend`` ``GPU`` ``CPU``
2158
+
2159
+ Examples:
2160
+ >>> import mindspore.numpy as np
2161
+ >>> choices = [[0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33]]
2162
+ >>> print(np.choose([2, 3, 1, 0], choices))
2163
+ [20 31 12 3]
2164
+ >>> print(np.choose([2, 4, 1, 0], choices, mode='clip'))
2165
+ [20 31 12 3]
2166
+ >>> print(np.choose([2, 4, 1, 0], choices, mode='wrap'))
2167
+ [20 1 12 3]
2168
+ >>> a = [[1, 0, 1], [0, 1, 0], [1, 0, 1]]
2169
+ >>> choices = [-10, 10]
2170
+ >>> print(np.choose(a, choices))
2171
+ [[ 10 -10 10]
2172
+ [-10 10 -10]
2173
+ [ 10 -10 10]]
2174
+ """
2175
+ a = _to_tensor(a)
2176
+ if not _check_is_int(F.dtype(a)):
2177
+ _raise_value_error('`a` should be an int array')
2178
+ if isinstance(choices, (tuple, list)):
2179
+ # broadcasts choices to the same shape if choices is a sequence
2180
+ choices = _to_tensor(*choices)
2181
+ shapes = ()
2182
+ for choice in choices:
2183
+ shapes += (F.shape(choice),)
2184
+ shape_choice = _infer_out_shape(F.shape(a), *shapes)
2185
+ tmp = []
2186
+ for choice in choices:
2187
+ tmp.append(broadcast_to(choice, shape_choice))
2188
+ choices = stack(tmp)
2189
+ else:
2190
+ choices = _to_tensor(choices)
2191
+ shape_choice = _infer_out_shape(F.shape(a), F.shape(choices)[1:])
2192
+ choices = F.reshape(choices, choices.shape[:1] + _add_unit_axes(choices.shape[1:], len(shape_choice)))
2193
+ choices = broadcast_to(choices, (F.shape(choices)[0],) + shape_choice)
2194
+
2195
+ if F.rank(a) == 0 or F.rank(choices) == 0:
2196
+ _raise_value_error('input cannot be scalars')
2197
+ a = broadcast_to(a, shape_choice)
2198
+ a = _check_indices(F.shape(choices)[0], a, mode, allow_negative_index=False)
2199
+ grid = _get_grid(F.shape(a))
2200
+ indices = concatenate((a.reshape(F.shape(a) + (1,)), grid), -1)
2201
+ return F.gather_nd(choices, indices)
2202
+
2203
+
2204
+ def size(a, axis=None):
2205
+ """
2206
+ Returns the number of elements along a given axis.
2207
+
2208
+ Args:
2209
+ a (Union[int, float, bool, list, tuple, Tensor]): Input data.
2210
+ axis (int, optional): Axis along which the elements are counted. Default: ``None``.
2211
+ If None, give the total number of elements.
2212
+
2213
+ Returns:
2214
+ Number of elements along the specified axis.
2215
+
2216
+ Supported Platforms:
2217
+ ``Ascend`` ``GPU`` ``CPU``
2218
+
2219
+ Raises:
2220
+ TypeError: If input is not array_like or `axis` is not int.
2221
+ ValueError: If any axis is out of range or duplicate axes exist.
2222
+
2223
+ Examples:
2224
+ >>> import mindspore.numpy as np
2225
+ >>> x = np.arange(10).reshape(2, 5).astype('float32')
2226
+ >>> print(np.size(x))
2227
+ 10
2228
+ >>> print(np.size(x, axis=1))
2229
+ 5
2230
+ """
2231
+ a = _to_tensor(a)
2232
+ if axis is None:
2233
+ return a.size
2234
+ if not isinstance(axis, int):
2235
+ _raise_type_error("axis argument should be integer.")
2236
+ axis = _canonicalize_axis(axis, a.ndim)
2237
+ return a.shape[axis]
2238
+
2239
+
2240
+ def array_str(a):
2241
+ """
2242
+ Returns a string representation of the data in an array.
2243
+
2244
+ The data in the array is returned as a single string.
2245
+ This function is similar to array_repr, the difference being that array_repr also
2246
+ returns information on the kind of array and its data type.
2247
+
2248
+ Note:
2249
+ Numpy argument `max_line_width`, `precision` and `suppress_small` are not supported.
2250
+ Graph mode does not support the function.
2251
+
2252
+ Args:
2253
+ a (Tensor): Input data.
2254
+
2255
+ Returns:
2256
+ String.
2257
+
2258
+ Supported Platforms:
2259
+ ``Ascend`` ``GPU`` ``CPU``
2260
+
2261
+ Raises:
2262
+ TypeError: If input is not tensor.
2263
+
2264
+ Examples:
2265
+ >>> import mindspore.numpy as np
2266
+ >>> x = np.arange(5)
2267
+ >>> np.array_str(x)
2268
+ '[0 1 2 3 4]'
2269
+ """
2270
+ if not isinstance(a, Tensor):
2271
+ _raise_type_error("Expect input to be tensor.")
2272
+ return a.__str__()
2273
+
2274
+
2275
+ def apply_along_axis(func1d, axis, arr, *args, **kwargs):
2276
+ """
2277
+ Applies a function to 1-D slices along the given axis.
2278
+ Executes ``func1d(a, *args, **kwargs)`` where `func1d` operates on 1-D arrays and `a` is a
2279
+ 1-D slice of arr along axis.
2280
+
2281
+ Args:
2282
+ func1d (function): Maps `(M,) -> (Nj…)`. This function should accept 1-D arrays. It is
2283
+ applied to 1-D slices of arr along the specified axis.
2284
+ axis (int): Axis along which arr is sliced.
2285
+ arr (Tensor): Input array with shape `(Ni…, M, Nk…)`.
2286
+ args (any): Additional arguments to `func1d`.
2287
+ kwargs (any): Additional named arguments to `func1d`.
2288
+
2289
+ Returns:
2290
+ Tensor with shape `(Ni…, Nj…, Nk…)`, the output array. Its shape is identical to the
2291
+ shape of `arr`, except along the `axis` dimension. This axis is removed, and replaced
2292
+ with new dimensions equal to the shape of the return value of `func1d`. So if `func1d`
2293
+ returns a scalar, the output will have one fewer dimensions than `arr`.
2294
+
2295
+ Supported Platforms:
2296
+ ``Ascend`` ``GPU`` ``CPU``
2297
+
2298
+ Raises:
2299
+ ValueError: If axis is out of the range.
2300
+
2301
+ Examples:
2302
+ >>> import mindspore.numpy as np
2303
+ >>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
2304
+ >>> print(np.apply_along_axis(np.diag, -1, b))
2305
+ [[[1 0 0]
2306
+ [0 2 0]
2307
+ [0 0 3]]
2308
+ [[4 0 0]
2309
+ [0 5 0]
2310
+ [0 0 6]]
2311
+ [[7 0 0]
2312
+ [0 8 0]
2313
+ [0 0 9]]]
2314
+ """
2315
+ ndim = F.rank(arr)
2316
+ shape = F.shape(arr)
2317
+ axis = _check_axis_in_range(axis, ndim)
2318
+ arr = moveaxis(arr, axis, -1)
2319
+ arr = F.reshape(arr, (-1, F.shape(arr)[-1]))
2320
+ slices = []
2321
+ for i in range(F.shape(arr)[0]):
2322
+ slices.append(func1d(arr[i], *args, **kwargs))
2323
+ stacked_slices = stack(slices)
2324
+ shape_stacked = (_tuple_slice(shape, None, axis) + _tuple_slice(shape, axis + 1, None) +
2325
+ _tuple_slice(F.shape(stacked_slices), 1, None))
2326
+ res = F.reshape(stacked_slices, shape_stacked)
2327
+
2328
+ # moves the dimensions returned by `func1d` back to `axis`
2329
+ ndim_func = F.rank(res) - ndim + 1
2330
+ if ndim_func >= 1:
2331
+ res = moveaxis(res, F.make_range(ndim - 1, F.rank(res)),
2332
+ F.make_range(axis, axis + ndim_func))
2333
+ return res
2334
+
2335
+
2336
+ def _stack_arrays(arrs):
2337
+ """Stacks a sequence of Tensor"""
2338
+ if isinstance(arrs, (tuple, list)):
2339
+ tensor_list = []
2340
+ for arr in arrs:
2341
+ tensor_list.append(_to_tensor(arr))
2342
+ return stack(tensor_list)
2343
+ return atleast_1d(_to_tensor(arrs))
2344
+
2345
+
2346
+ def piecewise(x, condlist, funclist, *args, **kw):
2347
+ """
2348
+ Evaluates a piecewise-defined function.
2349
+ Given a set of conditions and corresponding functions, evaluate each function on the input
2350
+ data wherever its condition is true.
2351
+
2352
+ Args:
2353
+ x (Union[int, float, bool, list, tuple, Tensor]): The input domain.
2354
+ condlist (Union[bool, list[Tensor, bool]]): Each boolean array corresponds to a
2355
+ function in `funclist`. Wherever `condlist[i]` is True, `funclist[i](x)` is used as
2356
+ the output value. Each boolean array in `condlist` selects a piece of `x`, and
2357
+ should therefore be of the same shape as `x`. The length of `condlist` must
2358
+ correspond to that of `funclist`. If one extra function is given, i.e. if
2359
+ ``len(funclist) == len(condlist) + 1``, then that extra function is the default
2360
+ value, used wherever all conditions are false.
2361
+ funclist (Union[list[callables], list[scalars]]): Each function is evaluated over
2362
+ `x` wherever its corresponding condition is True. It should take a 1d array as input
2363
+ and give an 1d array or a scalar value as output. If, instead of a callable, a scalar
2364
+ is provided then a constant function ``(lambda x: scalar)`` is assumed.
2365
+ args (any): Any further arguments given to `piecewise` are passed to the functions upon
2366
+ execution, i.e., if called ``piecewise(..., ..., 1, 'a')``, then each function is
2367
+ called as ``f(x, 1, 'a')``.
2368
+ kw (any): Keyword arguments used in calling `piecewise` are passed to the functions upon
2369
+ execution, i.e., if called ``piecewise(..., ..., alpha=1)``, then each function is
2370
+ called as ``f(x, alpha=1)``.
2371
+
2372
+ Returns:
2373
+ Tensor, the output is the same shape and type as `x` and is found by calling the
2374
+ functions in `funclist` on the appropriate portions of `x`, as defined by the boolean
2375
+ arrays in `condlist`. Portions not covered by any condition have a default value of 0.
2376
+
2377
+ Supported Platforms:
2378
+ ``Ascend`` ``GPU`` ``CPU``
2379
+
2380
+ Raises:
2381
+ ValueError: If length of `funclist` is not in ``(len(condlist), len(condlist) + 1)``
2382
+
2383
+ Examples:
2384
+ >>> import mindspore.numpy as np
2385
+ >>> x = np.linspace(-2.5, 2.5, 6)
2386
+ >>> print(np.piecewise(x, [x < 0, x >= 0], [-1, 1]))
2387
+ [-1 -1 -1 1 1 1]
2388
+ """
2389
+ x = _to_tensor(x)
2390
+ choicelist = funclist
2391
+ if isinstance(funclist, (tuple, list)):
2392
+ if _callable(x, funclist[0]):
2393
+ choicelist = []
2394
+ for func in funclist:
2395
+ choicelist.append(func(x, *args, **kw))
2396
+ condlist = _stack_arrays(condlist)
2397
+ choicelist = _stack_arrays(choicelist)
2398
+
2399
+ default = 0
2400
+ n1 = len(condlist)
2401
+ n2 = len(funclist)
2402
+ if n1 + 1 == n2:
2403
+ default = choicelist[-1]
2404
+ choicelist = choicelist[:-1]
2405
+ elif n1 != n2:
2406
+ _raise_value_error('the number of choices should be either equal to conditions or ', n1 + 1)
2407
+ return select(condlist, choicelist, default=default)
2408
+
2409
+
2410
+ def unravel_index(indices, shape, order='C'):
2411
+ """
2412
+ Converts a flat index or array of flat indices into a tuple of coordinate arrays.
2413
+
2414
+ Note:
2415
+ Out-of-bound indices are clipped by the boundaries of `shape` instead of raising
2416
+ an error.
2417
+
2418
+ Args:
2419
+ indices (Union[int, float, bool, list, tuple, Tensor]): An integer array whose elements
2420
+ are indices into the flattened version of an array of dimensions shape.
2421
+ shape (tuple(int)): The shape of the array to use for unraveling indices.
2422
+ order (Union['C', 'F'], optional): Determines whether the indices should be viewed as
2423
+ indexing in row-major (C-style) or column-major (Fortran-style) order. Default: ``'C'`` .
2424
+
2425
+ Returns:
2426
+ Tensor, each array in the tuple has the same shape as the indices array.
2427
+
2428
+ Supported Platforms:
2429
+ ``Ascend`` ``GPU`` ``CPU``
2430
+
2431
+ Raises:
2432
+ ValueError: If `order` is not 'C' or 'F'.
2433
+
2434
+ Examples:
2435
+ >>> import mindspore.numpy as np
2436
+ >>> print(np.unravel_index([22, 41, 37], (7,6)))
2437
+ (Tensor(shape=[3], dtype=Int32, value= [3, 6, 6]),
2438
+ Tensor(shape=[3], dtype=Int32, value= [4, 5, 1]))
2439
+ >>> print(np.unravel_index([31, 41, 13], (7,6), order='F'))
2440
+ (Tensor(shape=[3], dtype=Int32, value= [3, 6, 6]),
2441
+ Tensor(shape=[3], dtype=Int32, value= [4, 5, 1]))
2442
+ """
2443
+ indices = _to_tensor(indices)
2444
+ if order not in ('C', 'F'):
2445
+ _raise_value_error('invalid order. Expected "C" or "F"')
2446
+ if isinstance(shape, int):
2447
+ shape = (shape,)
2448
+ ndim = F.rank(indices)
2449
+ if order == 'F':
2450
+ sizes = _cumprod(shape)
2451
+ else:
2452
+ sizes = _cumprod(shape[::-1])
2453
+ sizes = _to_tensor(sizes[::-1] + (1,))
2454
+ sizes = F.reshape(sizes, (-1,) + _list_comprehensions(ndim, 1, True))
2455
+ total_size = sizes[0]
2456
+ indices = where(indices > total_size - 1, total_size - 1, indices)
2457
+ if _get_device() == 'GPU':
2458
+ dtype = F.dtype(total_size)
2459
+ lowerbounds = (-(total_size.astype(mstype.float32))).astype(dtype)
2460
+ else:
2461
+ lowerbounds = -total_size
2462
+ indices = where(indices < lowerbounds, lowerbounds, indices)
2463
+ res = _mod(indices, sizes[:-1])//sizes[1:]
2464
+
2465
+ num = len(res)
2466
+ if ndim == 0 and num == 1:
2467
+ return res.ravel()
2468
+ if order == 'F':
2469
+ r = range(num - 1, -1, -1)
2470
+ else:
2471
+ r = range(num)
2472
+ subs = ()
2473
+ for i in r:
2474
+ subs += (res[i],)
2475
+ return subs
2476
+
2477
+
2478
+ def apply_over_axes(func, a, axes):
2479
+ """
2480
+ Applies a function repeatedly over multiple axes.
2481
+
2482
+ `func` is called as `res = func(a, axis)`, where `axis` is the first element of `axes`.
2483
+ The result `res` of the function call must have either the same dimensions as `a` or
2484
+ one less dimension. If `res` has one less dimension than `a`, a dimension is inserted before `axis`.
2485
+ The call to `func` is then repeated for each axis in `axes`, with `res` as the first argument.
2486
+
2487
+ Args:
2488
+ func (function): This function must take two arguments, `func(a, axis)`.
2489
+ a (Union[int, float, bool, list, tuple, Tensor]): Input tensor.
2490
+ axes (Union[int, list, tuple]): Axes over which `func` is applied; the elements must be integers.
2491
+
2492
+ Returns:
2493
+ Tensor. The number of dimensions is the same as `a`, but the shape can be different.
2494
+ This depends on whether `func` changes the shape of its output with respect to its input.
2495
+
2496
+ Raises:
2497
+ TypeError: If input `a` is not array_like or `axes` is not int or sequence of ints.
2498
+ ValueError: If any axis is out of range or duplicate axes exist.
2499
+
2500
+ Supported Platforms:
2501
+ ``Ascend`` ``GPU`` ``CPU``
2502
+
2503
+ Examples:
2504
+ >>> import mindspore.numpy as np
2505
+ >>> x = np.arange(10).reshape(2, 5).astype('float32')
2506
+ >>> print(x)
2507
+ [[0. 1. 2. 3. 4.]
2508
+ [5. 6. 7. 8. 9.]]
2509
+ >>> print(np.apply_over_axes(np.sum, x, axes=0))
2510
+ [[ 5. 7. 9. 11. 13.]]
2511
+ """
2512
+ a = _to_tensor(a)
2513
+ if isinstance(axes, int):
2514
+ axes = (axes,)
2515
+ res = a
2516
+ for axis in axes:
2517
+ res = func(res, axis=axis)
2518
+ res = F.expand_dims(res, axis) if res.ndim != a.ndim else res
2519
+ if res.ndim != a.ndim:
2520
+ _raise_value_error("function is not returning a tensor of the correct shape")
2521
+ return res
2522
+
2523
+
2524
+ def argwhere(a):
2525
+ """
2526
+ Find the indices of Tensor elements that are non-zero, grouped by element.
2527
+
2528
+ Args:
2529
+ a (Union[list, tuple, Tensor]): Input tensor.
2530
+
2531
+ Returns:
2532
+ Tensor. Indices of elements that are non-zero. Indices are grouped by element.
2533
+ This Tensor will have shape :math:`(N, a.ndim)` where :math:`N` is the number of non-zero items.
2534
+
2535
+ Raises:
2536
+ TypeError: If input `a` is not array_like.
2537
+ ValueError: If dim of `a` equals to 0.
2538
+
2539
+ Supported Platforms:
2540
+ ``Ascend`` ``GPU`` ``CPU``
2541
+
2542
+ Examples:
2543
+ >>> import mindspore.numpy as np
2544
+ >>> x = np.array([[[1, 0], [-5, 0]]])
2545
+ >>> np.argwhere(x)
2546
+ Tensor(shape=[2, 3], dtype=Int64, value=[[0, 0, 0], [0, 1, 0]])
2547
+ """
2548
+ a = _to_tensor(a)
2549
+ return F.argwhere(a)
2550
+
2551
+
2552
+ def intersect1d(ar1, ar2, assume_unique=False, return_indices=False):
2553
+ """
2554
+ Find the intersection of two Tensors.
2555
+ Return the sorted, unique values that are in both of the input Tensors.
2556
+
2557
+ Args:
2558
+ ar1 (Union[int, float, bool, list, tuple, Tensor]): Input tensor.
2559
+ ar2 (Union[int, float, bool, list, tuple, Tensor]): Input tensor.
2560
+ assume_unique (bool): If `True`, the input Tensors are assumed to be unique, which can speed up the calculation.
2561
+ If `True` but `ar1` or `ar2` are not unique,
2562
+ incorrect results and out-of-bounds indices could result.
2563
+ Default: ``False``.
2564
+ return_indices (bool): If `True`, the indices which correspond to the intersection of two Tensors are returned.
2565
+ The first instance of a value is used if there are multiple.
2566
+ Default: ``False``.
2567
+
2568
+ Returns:
2569
+ Tensor or tuple of Tensors.
2570
+ If `return_indices` is ``False``, return the intersection tensor, otherwise return tuple of tensors.
2571
+
2572
+ Raises:
2573
+ TypeError: If input `ar1` or `ar2` is not array_like.
2574
+ TypeError: If `assume_unique` or `return_indices` is not bool.
2575
+
2576
+ Supported Platforms:
2577
+ ``Ascend`` ``GPU`` ``CPU``
2578
+
2579
+ Examples:
2580
+ >>> import mindspore.numpy as np
2581
+ >>> np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1])
2582
+ Tensor(shape=[2], dtype=Int32, value=[1, 3])
2583
+ """
2584
+ def unique_w_ind(arr):
2585
+ array, sort_indices = arr.ravel().sort()
2586
+ array_type = array.dtype
2587
+ cmp_array1 = F.cat((array, Tensor([0], dtype=array_type)))
2588
+ cmp_array2 = F.cat((Tensor([0], dtype=array_type), array))
2589
+ mask = cmp_array1 != cmp_array2
2590
+ mask[0] = True
2591
+ array = F.masked_select(array, mask[:-1])
2592
+ ind = F.masked_select(sort_indices, mask[:-1])
2593
+ return array, ind
2594
+
2595
+ if not isinstance(assume_unique, bool) or not isinstance(return_indices, bool):
2596
+ _raise_type_error("assume_unique or return_indices is not bool type.")
2597
+ ar1, ar2 = _to_tensor(ar1, ar2)
2598
+ ind1 = F.fill(mstype.int32, (ar1.size,), -1)
2599
+ ind2 = F.fill(mstype.int32, (ar2.size,), -1)
2600
+ if not assume_unique:
2601
+ if return_indices:
2602
+ array1, ind1 = unique_w_ind(ar1)
2603
+ array2, ind2 = unique_w_ind(ar2)
2604
+ else:
2605
+ array1 = F.unique(ar1)[0]
2606
+ array2 = F.unique(ar2)[0]
2607
+ else:
2608
+ array1 = ar1.ravel()
2609
+ array2 = ar2.ravel()
2610
+ concat_array = concatenate((array1, array2))
2611
+ if return_indices:
2612
+ concat_sort_indices = F.argsort(concat_array)
2613
+ concat_array = concat_array[concat_sort_indices]
2614
+ else:
2615
+ concat_array, concat_sort_indices = concat_array.sort()
2616
+
2617
+ mask_res = concat_array[1:] == concat_array[:-1]
2618
+ res = F.masked_select(concat_array[1:], mask_res)
2619
+
2620
+ if return_indices:
2621
+ ar1_indices = F.masked_select(concat_sort_indices[:-1], mask_res)
2622
+ ar2_indices = F.masked_select(concat_sort_indices[1:], mask_res)
2623
+ if ar2_indices.shape[0] > 0:
2624
+ ar2_indices = ar2_indices - array1.size
2625
+ if not assume_unique:
2626
+ ar1_indices = ind1.index_select(0, ar1_indices)
2627
+ ar2_indices = ind2.index_select(0, ar2_indices)
2628
+ return res, ar1_indices, ar2_indices
2629
+ return res