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