mindspore 2.0.0a0__cp39-cp39-win_amd64.whl → 2.0.0rc1__cp39-cp39-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.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-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
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
from __future__ import absolute_import
|
|
18
18
|
from functools import partial
|
|
19
19
|
import numpy as np
|
|
20
|
-
from mindspore.common import jit
|
|
20
|
+
from mindspore.common import jit, mutable
|
|
21
21
|
from mindspore.common import Tensor
|
|
22
22
|
from mindspore.common import dtype as mstype
|
|
23
23
|
from mindspore.nn.cell import Cell
|
|
@@ -26,6 +26,7 @@ from mindspore.ops.primitive import constexpr
|
|
|
26
26
|
from mindspore.ops.function.array_func import ones, expand_dims, size, reshape, broadcast_to, transpose
|
|
27
27
|
from mindspore.ops.composite import _Vmap, _Grad, _TaylorOperation, GradOperation
|
|
28
28
|
from mindspore.ops import operations as P
|
|
29
|
+
from mindspore.ops.operations import _inner_ops as inner
|
|
29
30
|
|
|
30
31
|
cast = P.Cast()
|
|
31
32
|
dtype = P.DType()
|
|
@@ -86,11 +87,12 @@ def _check_grad_position(grad_position, args_num):
|
|
|
86
87
|
|
|
87
88
|
|
|
88
89
|
@constexpr
|
|
89
|
-
def _get_grad_op(get_by_list, get_by_position, has_aux, get_value=False):
|
|
90
|
-
return _Grad(get_by_list=get_by_list, get_by_position=get_by_position, has_aux=has_aux, get_value=get_value
|
|
90
|
+
def _get_grad_op(get_by_list, get_by_position, has_aux, get_value=False, return_ids=False):
|
|
91
|
+
return _Grad(get_by_list=get_by_list, get_by_position=get_by_position, has_aux=has_aux, get_value=get_value,
|
|
92
|
+
return_ids=return_ids)
|
|
91
93
|
|
|
92
94
|
|
|
93
|
-
def grad(fn, grad_position=0, weights=None, has_aux=False):
|
|
95
|
+
def grad(fn, grad_position=0, weights=None, has_aux=False, return_ids=False):
|
|
94
96
|
"""
|
|
95
97
|
A wrapper function to generate the gradient function for the input function.
|
|
96
98
|
|
|
@@ -113,11 +115,19 @@ def grad(fn, grad_position=0, weights=None, has_aux=False):
|
|
|
113
115
|
has_aux (bool): If True, only the first output of `fn` contributes the gradient of `fn`, while the other outputs
|
|
114
116
|
will be returned straightly. It means the `fn` must return more than one outputs in this case.
|
|
115
117
|
Default: False.
|
|
118
|
+
return_ids(bool): Whether return the tuple made by gradients and the index to specify which inputs
|
|
119
|
+
to be differentiated or the name of parameters of the training network that need to calculate the gradient.
|
|
120
|
+
If True, the output gradients will be replaced by the tuples made by gradients and the index to specify
|
|
121
|
+
which inputs to be differentiated or the name of parameters of the training network.
|
|
122
|
+
Default: False.
|
|
116
123
|
|
|
117
124
|
Returns:
|
|
118
125
|
Function, the gradient function to calculate gradient for the input function or cell.
|
|
119
126
|
For example, as for `out1, out2 = fn(*args)`, when `has_aux` is set True, gradient function will return outputs
|
|
120
127
|
like `(gradient, out2)` and `out2` does not contribute to the differentiation, otherwise `gradient`.
|
|
128
|
+
When return_ids is set to True, The format of the output will be the same with the output of grad when
|
|
129
|
+
return_ids is set to false, but every gradient in the output will be replaced by a tuple of position id or
|
|
130
|
+
parameter name and its gradient.
|
|
121
131
|
|
|
122
132
|
Raises:
|
|
123
133
|
ValueError: If both `grad_position` and `weights` are None.
|
|
@@ -160,7 +170,7 @@ def grad(fn, grad_position=0, weights=None, has_aux=False):
|
|
|
160
170
|
>>> print(aux)
|
|
161
171
|
(Tensor(shape=[2], dtype=Float32, value= [ 5.00000000e+00, 5.00000000e+00]),)
|
|
162
172
|
>>>
|
|
163
|
-
>>> # For given network to be differentiated with both inputs and weights, there are
|
|
173
|
+
>>> # For given network to be differentiated with both inputs and weights, there are 4 cases.
|
|
164
174
|
>>> net = nn.Dense(10, 1)
|
|
165
175
|
>>> loss_fn = nn.MSELoss()
|
|
166
176
|
>>> def forward(inputs, labels):
|
|
@@ -192,17 +202,36 @@ def grad(fn, grad_position=0, weights=None, has_aux=False):
|
|
|
192
202
|
>>> inputs_gradient, params_gradient = grad_fn(inputs, labels)
|
|
193
203
|
>>> print(len(weights), len(params_gradient))
|
|
194
204
|
2 2
|
|
205
|
+
>>> # Case 4: return the gradient with ids.
|
|
206
|
+
>>> import numpy as np
|
|
207
|
+
>>> import mindspore
|
|
208
|
+
>>> import mindspore.nn as nn
|
|
209
|
+
>>> from mindspore import Tensor, ops
|
|
210
|
+
>>> from mindspore import grad
|
|
211
|
+
>>>
|
|
212
|
+
>>> # Cell object to be differentiated
|
|
213
|
+
>>> class Net(nn.Cell):
|
|
214
|
+
... def construct(self, x, y, z):
|
|
215
|
+
... return x * y * z
|
|
216
|
+
>>> x = Tensor([1, 2], mindspore.float32)
|
|
217
|
+
>>> y = Tensor([-2, 3], mindspore.float32)
|
|
218
|
+
>>> z = Tensor([0, 3], mindspore.float32)
|
|
219
|
+
>>> net = Net()
|
|
220
|
+
>>> output = grad(net, grad_position=(1, 2), return_ids = True)(x, y, z)
|
|
221
|
+
>>> print(output)
|
|
222
|
+
((1, Tensor(shape=[2], dtype=Float32, value=[ 0.00000000e+00, 6.00000000e+00])),
|
|
223
|
+
(2, Tensor(shape=[2], dtype=Float32, value=[-2.00000000e+00, 6.00000000e+00])))
|
|
195
224
|
"""
|
|
196
225
|
if grad_position is None and weights is None:
|
|
197
226
|
raise ValueError("`grad_position` and `weight` can not be None at the same time.")
|
|
198
227
|
|
|
199
228
|
if grad_position is None:
|
|
200
|
-
return _get_grad_op(True, False, has_aux)(fn, weights)
|
|
229
|
+
return _get_grad_op(True, False, has_aux, False, return_ids)(fn, weights)
|
|
201
230
|
|
|
202
231
|
grad_position = _convert_grad_position_type(grad_position)
|
|
203
232
|
if weights is None:
|
|
204
|
-
return _get_grad_op(False, True, has_aux)(fn, None, grad_position)
|
|
205
|
-
return _get_grad_op(True, True, has_aux)(fn, weights, grad_position)
|
|
233
|
+
return _get_grad_op(False, True, has_aux, False, return_ids)(fn, None, grad_position)
|
|
234
|
+
return _get_grad_op(True, True, has_aux, False, return_ids)(fn, weights, grad_position)
|
|
206
235
|
|
|
207
236
|
|
|
208
237
|
def value_and_grad(fn, grad_position=0, weights=None, has_aux=False):
|
|
@@ -329,6 +358,55 @@ def value_and_grad(fn, grad_position=0, weights=None, has_aux=False):
|
|
|
329
358
|
return _get_grad_op(True, True, has_aux, True)(fn, weights, grad_position)
|
|
330
359
|
|
|
331
360
|
|
|
361
|
+
def get_grad(gradients, identifier):
|
|
362
|
+
"""
|
|
363
|
+
When `return_ids` of :func:`mindspore.grad` is set to True, use its return value as gradients. Then find
|
|
364
|
+
the specific gradient from `gradients` according to `identifier` .
|
|
365
|
+
|
|
366
|
+
As for gradient, two typical cases are included:
|
|
367
|
+
|
|
368
|
+
1. `identifier` is the position of the specific tensor to get gradient.
|
|
369
|
+
2. `identifier` is a parameter of a network.
|
|
370
|
+
|
|
371
|
+
Args:
|
|
372
|
+
gradients (Union[tuple[int, Tensor], tuple[tuple, tuple]]): The return value of :func:`mindspore.grad`
|
|
373
|
+
when `return_ids` is set to True.
|
|
374
|
+
identifier (Union[int, Parameter]): The position number of a tensor, or a parameter that is used in
|
|
375
|
+
:func:`mindspore.grad`.
|
|
376
|
+
|
|
377
|
+
Returns:
|
|
378
|
+
The gradient of the tensor on the position or in the parameter that specified by the `identifier`.
|
|
379
|
+
|
|
380
|
+
Raises:
|
|
381
|
+
RuntimeError: If gradient is not found.
|
|
382
|
+
TypeError: If type of Args does not belong to required ones.
|
|
383
|
+
|
|
384
|
+
Supported Platforms:
|
|
385
|
+
``Ascend`` ``GPU`` ``CPU``
|
|
386
|
+
|
|
387
|
+
Examples:
|
|
388
|
+
>>> import numpy as np
|
|
389
|
+
>>> import mindspore
|
|
390
|
+
>>> import mindspore.nn as nn
|
|
391
|
+
>>> from mindspore import Tensor, ops
|
|
392
|
+
>>> from mindspore import grad, get_grad
|
|
393
|
+
>>>
|
|
394
|
+
>>> # Cell object to be differentiated
|
|
395
|
+
>>> class Net(nn.Cell):
|
|
396
|
+
... def construct(self, x, y, z):
|
|
397
|
+
... return x * y * z
|
|
398
|
+
>>> x = Tensor([1, 2], mindspore.float32)
|
|
399
|
+
>>> y = Tensor([-2, 3], mindspore.float32)
|
|
400
|
+
>>> z = Tensor([0, 3], mindspore.float32)
|
|
401
|
+
>>> net = Net()
|
|
402
|
+
>>> out_grad = grad(net, grad_position=(1, 2), return_ids=True)(x, y, z)
|
|
403
|
+
>>> output = get_grad(out_grad, 1)
|
|
404
|
+
>>> print(output)
|
|
405
|
+
[0. 6.]
|
|
406
|
+
"""
|
|
407
|
+
return inner.GetGrad()(gradients, identifier)
|
|
408
|
+
|
|
409
|
+
|
|
332
410
|
def _trans_jet_inputs(primals_item, series_item):
|
|
333
411
|
"""Trans inputs of jet"""
|
|
334
412
|
value_type = [mstype.int32, mstype.int64, mstype.float32, mstype.float64]
|
|
@@ -572,11 +650,16 @@ _grad_single = GradOperation(sens_param=True)
|
|
|
572
650
|
_grad_all = GradOperation(sens_param=True, get_all=True)
|
|
573
651
|
|
|
574
652
|
|
|
653
|
+
@constexpr
|
|
654
|
+
def _check_jvp_input_v_len(inputs_len, v_len):
|
|
655
|
+
if inputs_len != v_len:
|
|
656
|
+
raise ValueError(f'v has invalid length: should be {inputs_len}, but got {v_len}')
|
|
657
|
+
|
|
658
|
+
|
|
575
659
|
def jvp(fn, inputs, v, has_aux=False):
|
|
576
660
|
"""
|
|
577
661
|
Compute the jacobian-vector-product of the given network. `jvp` matches
|
|
578
|
-
`forward-mode differentiation <https://www.mindspore.cn/docs/en/r2.0
|
|
579
|
-
#forward-mode-ad>`_.
|
|
662
|
+
`forward-mode differentiation <https://www.mindspore.cn/docs/en/r2.0/design/auto_gradient.html#forward-mode-ad>`_.
|
|
580
663
|
|
|
581
664
|
Args:
|
|
582
665
|
fn (Union[Function, Cell]): The function or net that takes Tensor inputs and returns single Tensor or tuple of
|
|
@@ -662,9 +745,9 @@ def jvp(fn, inputs, v, has_aux=False):
|
|
|
662
745
|
if isinstance(outputs, tuple):
|
|
663
746
|
u = ()
|
|
664
747
|
for item in outputs:
|
|
665
|
-
u = u + (oneslike(item),)
|
|
748
|
+
u = u + (mutable(oneslike(item)),)
|
|
666
749
|
else:
|
|
667
|
-
u = oneslike(outputs)
|
|
750
|
+
u = mutable(oneslike(outputs))
|
|
668
751
|
if len(jvp_inputs) == 1:
|
|
669
752
|
second_grad_net = _grad_single(grad_single)
|
|
670
753
|
gradient_outputs = second_grad_net(u, jvp_inputs, vectors)
|
|
@@ -689,6 +772,15 @@ def jvp(fn, inputs, v, has_aux=False):
|
|
|
689
772
|
|
|
690
773
|
if not isinstance(inputs, (Tensor, tuple, list)) or not isinstance(v, (Tensor, tuple, list)):
|
|
691
774
|
_raise_type_error()
|
|
775
|
+
|
|
776
|
+
inputs_len = 1
|
|
777
|
+
v_len = 1
|
|
778
|
+
if isinstance(inputs, (tuple, list)):
|
|
779
|
+
inputs_len = len(inputs)
|
|
780
|
+
if isinstance(v, (tuple, list)):
|
|
781
|
+
v_len = len(v)
|
|
782
|
+
_check_jvp_input_v_len(inputs_len, v_len)
|
|
783
|
+
|
|
692
784
|
if isinstance(v, list):
|
|
693
785
|
v = tuple(v)
|
|
694
786
|
if isinstance(inputs, (tuple, list)):
|
|
@@ -776,8 +868,7 @@ def _check_tensor(inputs):
|
|
|
776
868
|
def vjp(fn, *inputs, has_aux=False):
|
|
777
869
|
"""
|
|
778
870
|
Compute the vector-jacobian-product of the given network. `vjp` matches
|
|
779
|
-
`reverse-mode differentiation <https://www.mindspore.cn/docs/en/r2.0
|
|
780
|
-
#reverse-mode-ad>`_.
|
|
871
|
+
`reverse-mode differentiation <https://www.mindspore.cn/docs/en/r2.0/design/auto_gradient.html#reverse-mode-ad>`_.
|
|
781
872
|
|
|
782
873
|
Args:
|
|
783
874
|
fn (Union[Function, Cell]): The function or net that takes Tensor inputs and returns single Tensor or tuple of
|
|
@@ -889,15 +980,23 @@ def _jacfwd_trans_item(item, inputs_shape, grad_position):
|
|
|
889
980
|
return output_wrt_input_all
|
|
890
981
|
|
|
891
982
|
|
|
892
|
-
def
|
|
983
|
+
def _jac_postprocess(x, shape, grad_position, mode):
|
|
893
984
|
"""reformat jacobian."""
|
|
985
|
+
|
|
986
|
+
if mode == 'forward':
|
|
987
|
+
func = _jacfwd_trans_item
|
|
988
|
+
args = (shape, grad_position)
|
|
989
|
+
else:
|
|
990
|
+
func = _jacrev_trans_item
|
|
991
|
+
args = (shape,)
|
|
992
|
+
|
|
894
993
|
if isinstance(x, tuple):
|
|
895
994
|
jacobian = ()
|
|
896
995
|
for item in x:
|
|
897
|
-
jacobian +=
|
|
996
|
+
jacobian += func(item, *args)
|
|
898
997
|
res = jacobian
|
|
899
998
|
else:
|
|
900
|
-
res =
|
|
999
|
+
res = func(x, *args)
|
|
901
1000
|
if len(res) == 1:
|
|
902
1001
|
return res[0]
|
|
903
1002
|
input_num = len(grad_position)
|
|
@@ -910,11 +1009,20 @@ def _jacfwd_postprocess(x, inputs_shape, grad_position):
|
|
|
910
1009
|
for i in range(output_num):
|
|
911
1010
|
input_grad = ()
|
|
912
1011
|
for j in range(input_num):
|
|
913
|
-
|
|
1012
|
+
if mode == 'forward':
|
|
1013
|
+
grad_increment = (res[i * input_num + j],)
|
|
1014
|
+
else:
|
|
1015
|
+
grad_increment = (res[j * output_num + i],)
|
|
1016
|
+
input_grad += grad_increment
|
|
914
1017
|
jac += (input_grad,)
|
|
915
1018
|
return jac
|
|
916
1019
|
|
|
917
1020
|
|
|
1021
|
+
def _jacfwd_postprocess(x, inputs_shape, grad_position):
|
|
1022
|
+
"""reformat forward-computed Jacobian."""
|
|
1023
|
+
return _jac_postprocess(x, inputs_shape, grad_position, 'forward')
|
|
1024
|
+
|
|
1025
|
+
|
|
918
1026
|
def _jacfwd_construct_v(inputs, grad_position):
|
|
919
1027
|
"""
|
|
920
1028
|
For input (x1, x2), x1.shape = (a, b), x2.shape = (c, d), this method generates corresponding v (v1, v2),
|
|
@@ -927,10 +1035,9 @@ def _jacfwd_construct_v(inputs, grad_position):
|
|
|
927
1035
|
items_num = ()
|
|
928
1036
|
cum_num = (0,)
|
|
929
1037
|
for item in inputs:
|
|
930
|
-
|
|
931
|
-
num += item_num
|
|
1038
|
+
num += size(item)
|
|
932
1039
|
inputs_shape += ((item.shape, num),)
|
|
933
|
-
items_num += (
|
|
1040
|
+
items_num += (size(item),)
|
|
934
1041
|
cum_num += (num,)
|
|
935
1042
|
for i, element in enumerate(inputs):
|
|
936
1043
|
item_size = items_num[i]
|
|
@@ -953,18 +1060,17 @@ _vmap = _Vmap()
|
|
|
953
1060
|
def jacfwd(fn, grad_position=0, has_aux=False):
|
|
954
1061
|
"""
|
|
955
1062
|
Compute Jacobian via forward mode, corresponding to
|
|
956
|
-
`forward-mode differentiation <https://www.mindspore.cn/docs/en/r2.0
|
|
957
|
-
#forward-mode-ad>`_.
|
|
1063
|
+
`forward-mode differentiation <https://www.mindspore.cn/docs/en/r2.0/design/auto_gradient.html#forward-mode-ad>`_.
|
|
958
1064
|
When number of outputs is much greater than that of inputs, it's better to calculate Jacobian via forward mode than
|
|
959
1065
|
reverse mode to get better performance.
|
|
960
1066
|
|
|
961
1067
|
Args:
|
|
962
1068
|
fn (Union[Cell, Function]): Function to do GradOperation.
|
|
963
|
-
grad_position (Union[int, tuple[int]]): If int, get the gradient with respect to single input.
|
|
1069
|
+
grad_position (Union[int, tuple[int]], optional): If int, get the gradient with respect to single input.
|
|
964
1070
|
If tuple, get the gradients with respect to selected inputs. 'grad_position' begins with 0. Default: 0.
|
|
965
|
-
has_aux (bool): If True, only the first output of `fn` contributes the gradient of `fn`,
|
|
966
|
-
will be returned straightly. It means the `fn` must return more than one
|
|
967
|
-
Default: False.
|
|
1071
|
+
has_aux (bool, optional): If True, only the first output of `fn` contributes the gradient of `fn`,
|
|
1072
|
+
while the other outputs will be returned straightly. It means the `fn` must return more than one
|
|
1073
|
+
outputs in this case. Default: False.
|
|
968
1074
|
|
|
969
1075
|
Returns:
|
|
970
1076
|
Function, returns the Jacobian function for the input function or cell.
|
|
@@ -1032,9 +1138,9 @@ def jacfwd(fn, grad_position=0, has_aux=False):
|
|
|
1032
1138
|
if isinstance(outputs, tuple):
|
|
1033
1139
|
u = ()
|
|
1034
1140
|
for item in outputs:
|
|
1035
|
-
u = u + (oneslike(item),)
|
|
1141
|
+
u = u + (mutable(oneslike(item)),)
|
|
1036
1142
|
else:
|
|
1037
|
-
u = oneslike(outputs)
|
|
1143
|
+
u = mutable(oneslike(outputs))
|
|
1038
1144
|
if len(jvp_inputs) == 1:
|
|
1039
1145
|
second_grad_net = _grad_single(grad_single)
|
|
1040
1146
|
else:
|
|
@@ -1044,7 +1150,7 @@ def jacfwd(fn, grad_position=0, has_aux=False):
|
|
|
1044
1150
|
|
|
1045
1151
|
def inner_aux_fn(jvp_inputs, vectors):
|
|
1046
1152
|
outputs = aux_fn(*jvp_inputs)
|
|
1047
|
-
u = oneslike(outputs)
|
|
1153
|
+
u = mutable(oneslike(outputs))
|
|
1048
1154
|
if len(jvp_inputs) == 1:
|
|
1049
1155
|
second_grad_net = _grad_single(grad_single)
|
|
1050
1156
|
else:
|
|
@@ -1080,29 +1186,8 @@ def _jacrev_trans_item(item, outputs_shape):
|
|
|
1080
1186
|
|
|
1081
1187
|
|
|
1082
1188
|
def _jacrev_postprocess(x, outputs_shape, grad_position):
|
|
1083
|
-
"""reformat jacobian."""
|
|
1084
|
-
|
|
1085
|
-
jacobian = ()
|
|
1086
|
-
for item in x:
|
|
1087
|
-
jacobian += _jacrev_trans_item(item, outputs_shape)
|
|
1088
|
-
res = jacobian
|
|
1089
|
-
else:
|
|
1090
|
-
res = _jacrev_trans_item(x, outputs_shape)
|
|
1091
|
-
if len(res) == 1:
|
|
1092
|
-
return res[0]
|
|
1093
|
-
input_num = len(grad_position)
|
|
1094
|
-
if len(res) % input_num != 0:
|
|
1095
|
-
raise ValueError("The numbers of inputs and outputs do not match.")
|
|
1096
|
-
output_num = len(res) // input_num
|
|
1097
|
-
if input_num == 1 or output_num == 1:
|
|
1098
|
-
return res
|
|
1099
|
-
jac = ()
|
|
1100
|
-
for i in range(output_num):
|
|
1101
|
-
input_grad = ()
|
|
1102
|
-
for j in range(input_num):
|
|
1103
|
-
input_grad += (res[j * output_num + i],)
|
|
1104
|
-
jac += (input_grad,)
|
|
1105
|
-
return jac
|
|
1189
|
+
"""reformat reverse-computed jacobian."""
|
|
1190
|
+
return _jac_postprocess(x, outputs_shape, grad_position, 'reverse')
|
|
1106
1191
|
|
|
1107
1192
|
|
|
1108
1193
|
def _jacrev_construct_v(inputs, outputs, has_aux=False):
|
|
@@ -1126,7 +1211,7 @@ def _jacrev_construct_v(inputs, outputs, has_aux=False):
|
|
|
1126
1211
|
outputs_shape += ((item.shape, num),)
|
|
1127
1212
|
items_num += (item_num,)
|
|
1128
1213
|
cum_num += (num,)
|
|
1129
|
-
for
|
|
1214
|
+
for element in inputs:
|
|
1130
1215
|
primal = broadcast_to(element, (num,) + element.shape)
|
|
1131
1216
|
primals += (primal,)
|
|
1132
1217
|
for i, element in enumerate(outputs):
|
|
@@ -1145,18 +1230,17 @@ _grad = _Grad(get_by_position=True, has_aux=False, sens_param=True)
|
|
|
1145
1230
|
def jacrev(fn, grad_position=0, has_aux=False):
|
|
1146
1231
|
"""
|
|
1147
1232
|
Compute Jacobian via reverse mode, corresponding to
|
|
1148
|
-
`reverse-mode differentiation <https://www.mindspore.cn/docs/en/r2.0
|
|
1149
|
-
#reverse-mode-ad>`_.
|
|
1233
|
+
`reverse-mode differentiation <https://www.mindspore.cn/docs/en/r2.0/design/auto_gradient.html#reverse-mode-ad>`_.
|
|
1150
1234
|
When number of inputs is much greater than that of outputs, it's better to calculate Jacobian via reverse mode than
|
|
1151
1235
|
forward mode to get better performance.
|
|
1152
1236
|
|
|
1153
1237
|
Args:
|
|
1154
1238
|
fn (Union[Cell, Function]): Function to do GradOperation.
|
|
1155
|
-
grad_position (Union[int, tuple[int]]): If int, get the gradient with respect to single input.
|
|
1239
|
+
grad_position (Union[int, tuple[int]], optional): If int, get the gradient with respect to single input.
|
|
1156
1240
|
If tuple, get the gradients with respect to selected inputs. 'grad_position' begins with 0. Default: 0.
|
|
1157
|
-
has_aux (bool): If True, only the first output of `fn` contributes the gradient of `fn`,
|
|
1158
|
-
will be returned straightly. It means the `fn` must return more than
|
|
1159
|
-
Default: False.
|
|
1241
|
+
has_aux (bool, optional): If True, only the first output of `fn` contributes the gradient of `fn`,
|
|
1242
|
+
while the other outputs will be returned straightly. It means the `fn` must return more than
|
|
1243
|
+
one outputs in this case. Default: False.
|
|
1160
1244
|
|
|
1161
1245
|
Returns:
|
|
1162
1246
|
Function, returns the Jacobian function for the input function or cell.
|
|
@@ -1277,7 +1361,7 @@ def stop_gradient(value):
|
|
|
1277
1361
|
StopGradient is used for eliminating the effect of a value on the gradient, such as truncating
|
|
1278
1362
|
the gradient propagation from an output of a function.
|
|
1279
1363
|
For more details, please refer to `Stop Gradient
|
|
1280
|
-
<https://www.mindspore.cn/tutorials/en/r2.0
|
|
1364
|
+
<https://www.mindspore.cn/tutorials/en/r2.0/beginner/autograd.html#stop-gradient>`_.
|
|
1281
1365
|
|
|
1282
1366
|
Args:
|
|
1283
1367
|
value (Any): The value whose effect on the gradient to be eliminated.
|
|
@@ -1319,6 +1403,7 @@ __all__ = [
|
|
|
1319
1403
|
'jvp',
|
|
1320
1404
|
'vjp',
|
|
1321
1405
|
'linearize',
|
|
1322
|
-
'stop_gradient'
|
|
1406
|
+
'stop_gradient',
|
|
1407
|
+
'get_grad'
|
|
1323
1408
|
]
|
|
1324
1409
|
__all__.sort()
|
|
@@ -26,18 +26,17 @@ from .._primitive_cache import _get_cache_prim
|
|
|
26
26
|
def bounding_box_decode(anchor_box, deltas, max_shape, means=(0.0, 0.0, 0.0, 0.0), stds=(1.0, 1.0, 1.0, 1.0),
|
|
27
27
|
wh_ratio_clip=0.016):
|
|
28
28
|
r"""
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
The function of the operator is to calculate the offset, and this operator converts the offset into a Bbox,
|
|
32
|
-
which is used to mark the target in the subsequent images, etc.
|
|
29
|
+
Decode the bounding box locations, calculate the offset, and convert the offset into a Bbox, which is used to mark
|
|
30
|
+
the target in the subsequent images, etc.
|
|
33
31
|
|
|
34
32
|
Args:
|
|
35
33
|
anchor_box (Tensor): Anchor boxes. The shape of `anchor_box` must be :math:`(n, 4)`.
|
|
36
34
|
deltas (Tensor): Delta of boxes. Which has the same shape with `anchor_box`.
|
|
37
35
|
max_shape (tuple): The max size limit for decoding box calculation.
|
|
38
|
-
means (tuple): The means of `deltas` calculation. Default: (0.0, 0.0, 0.0, 0.0).
|
|
39
|
-
stds (tuple): The standard deviations of `deltas` calculation. Default: (1.0, 1.0, 1.0, 1.0).
|
|
40
|
-
wh_ratio_clip (float): The limit of width and height ratio for decoding box calculation.
|
|
36
|
+
means (tuple, optional): The means of `deltas` calculation. Default: (0.0, 0.0, 0.0, 0.0).
|
|
37
|
+
stds (tuple, optional): The standard deviations of `deltas` calculation. Default: (1.0, 1.0, 1.0, 1.0).
|
|
38
|
+
wh_ratio_clip (float, optional): The limit of width and height ratio for decoding box calculation.
|
|
39
|
+
Default: 0.016.
|
|
41
40
|
|
|
42
41
|
Returns:
|
|
43
42
|
Tensor, decoded boxes. It has the same data type and shape as `anchor_box`.
|
|
@@ -66,16 +65,14 @@ def bounding_box_decode(anchor_box, deltas, max_shape, means=(0.0, 0.0, 0.0, 0.0
|
|
|
66
65
|
|
|
67
66
|
def bounding_box_encode(anchor_box, groundtruth_box, means=(0.0, 0.0, 0.0, 0.0), stds=(1.0, 1.0, 1.0, 1.0)):
|
|
68
67
|
r"""
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
This operator will calculate the offset between the predicted bounding boxes and the real bounding boxes,
|
|
72
|
-
and this offset will be used as a variable for the loss.
|
|
68
|
+
Encode the bounding box locations, calculate the offset between the predicted bounding boxes and
|
|
69
|
+
the real bounding boxes, and the offset will be used as a variable for the loss.
|
|
73
70
|
|
|
74
71
|
Args:
|
|
75
72
|
anchor_box (Tensor): Anchor boxes. The shape of `anchor_box` must be :math:`(n, 4)`.
|
|
76
73
|
groundtruth_box (Tensor): Ground truth boxes. Which has the same shape with `anchor_box`.
|
|
77
|
-
means (tuple): Means for encoding bounding boxes calculation. Default: (0.0, 0.0, 0.0, 0.0).
|
|
78
|
-
stds (tuple): The standard deviations of deltas calculation. Default: (1.0, 1.0, 1.0, 1.0).
|
|
74
|
+
means (tuple, optional): Means for encoding bounding boxes calculation. Default: (0.0, 0.0, 0.0, 0.0).
|
|
75
|
+
stds (tuple, optional): The standard deviations of deltas calculation. Default: (1.0, 1.0, 1.0, 1.0).
|
|
79
76
|
|
|
80
77
|
Returns:
|
|
81
78
|
Tensor, encoded bounding boxes. It has the same data type and shape as input `anchor_box`.
|
|
@@ -103,18 +100,36 @@ def bounding_box_encode(anchor_box, groundtruth_box, means=(0.0, 0.0, 0.0, 0.0),
|
|
|
103
100
|
|
|
104
101
|
def check_valid(bboxes, img_metas):
|
|
105
102
|
r"""
|
|
106
|
-
Checks bounding box.
|
|
103
|
+
Checks whether the bounding box is in the image.
|
|
104
|
+
|
|
105
|
+
`bboxes` contain several sets of bounding boxes, each represented by two abscissa points :math:`(x0, x1)` and
|
|
106
|
+
two ordinate points :math:`(y0, y1)` .
|
|
107
|
+
`img_metas` provides information about the original image, including three parameters
|
|
108
|
+
:math:`(height, width, ratio)` , which specify the valid boundary of the image.
|
|
109
|
+
|
|
110
|
+
when the following conditions are met:
|
|
111
|
+
|
|
112
|
+
:math:`x0 >= 0`
|
|
107
113
|
|
|
108
|
-
|
|
114
|
+
:math:`y0 >= 0`
|
|
115
|
+
|
|
116
|
+
:math:`x1 <= width * ratio - 1`
|
|
117
|
+
|
|
118
|
+
:math:`y1 <= height * ratio - 1`
|
|
119
|
+
|
|
120
|
+
the bounding box is considered to be within the image.
|
|
109
121
|
|
|
110
122
|
.. warning::
|
|
111
|
-
|
|
123
|
+
The bounding box specified by `bboxes` and the image information specified by `img_metas` need to be valid,
|
|
124
|
+
i.e.:
|
|
125
|
+
:math:`x0 <= x1` , :math:`y0 <= y1` , and :math:`(height, width, ratio)` are all positive.
|
|
112
126
|
|
|
113
127
|
Args:
|
|
114
|
-
bboxes (Tensor): Bounding boxes tensor with shape :math:`(N, 4)
|
|
115
|
-
bounding boxes, the value `4` indicates
|
|
116
|
-
|
|
117
|
-
|
|
128
|
+
bboxes (Tensor): Bounding boxes tensor with shape :math:`(N, 4)` . :math:`N` indicates the number of
|
|
129
|
+
bounding boxes, the value `4` indicates four coordinate points :math:`(x0, y0, x1, y1)` . Data type must
|
|
130
|
+
be float16 or float32.
|
|
131
|
+
img_metas (Tensor): Raw image size information with the format of :math:`(height, width, ratio)` , specifying
|
|
132
|
+
the valid boundary :math:`(height * ratio - 1, width * ratio - 1)` . Data type must be float16 or float32.
|
|
118
133
|
|
|
119
134
|
Returns:
|
|
120
135
|
Tensor, with shape of :math:`(N,)` and dtype of bool, specifying whether the bounding boxes is in the image.
|
|
@@ -139,7 +154,7 @@ def check_valid(bboxes, img_metas):
|
|
|
139
154
|
|
|
140
155
|
|
|
141
156
|
def crop_and_resize(image, boxes, box_indices, crop_size, method="bilinear", extrapolation_value=0.0):
|
|
142
|
-
"""
|
|
157
|
+
r"""
|
|
143
158
|
Extracts crops from the input image Tensor and resizes them.
|
|
144
159
|
|
|
145
160
|
Note:
|
|
@@ -147,28 +162,29 @@ def crop_and_resize(image, boxes, box_indices, crop_size, method="bilinear", ext
|
|
|
147
162
|
For now, the backward of the operator only support bilinear method, for other methods, will return 0.
|
|
148
163
|
|
|
149
164
|
Args:
|
|
150
|
-
image (Tensor):
|
|
151
|
-
|
|
152
|
-
boxes (Tensor):
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
The aspect ratio of the image content is not preserved. Both crop_height and crop_width need to be positive.
|
|
165
|
+
image (Tensor): A 4-D Tensor representing a batch of images. It has shape
|
|
166
|
+
:math:`(batch, image\_height, image\_width, depth)`.
|
|
167
|
+
boxes (Tensor): A 2-D Tensor with shape :math:`(num\_boxes, 4)` representing the normalized
|
|
168
|
+
coordinates of the boxes to be cropped. The coordinates are specified in the
|
|
169
|
+
form :math:`[y1, x1, y2, x2]`, where :math:`(y1, x1)` is the first corner
|
|
170
|
+
and :math:`(y2, x2)` is the second corner of the box.
|
|
171
|
+
If :math:`y1 > y2`, the sampled crop is inverted upside down, the width dimensionis treated
|
|
172
|
+
similarly when :math:`x1 > x2`. If normalized coordinates are not in range :math:`[0, 1]`,
|
|
173
|
+
extrapolated input image values are used instead. Supported data type: float32.
|
|
174
|
+
box_indices (Tensor): A 1-D Tensor of shape :math:`\text{num\_boxes}` representing the batch
|
|
175
|
+
index for each box. Supported type: int32.
|
|
176
|
+
crop_size (Tuple[int]): A tuple of two elements: (crop_height, crop_width), representing
|
|
177
|
+
the output size of the cropped and resized images.
|
|
178
|
+
Only positive values are supported. Supported type: int32.
|
|
165
179
|
method (str, optional): An optional string that specifies the sampling method for resizing.
|
|
166
180
|
It can be "bilinear", "nearest" or "bilinear_v2". The option "bilinear" stands for standard bilinear
|
|
167
|
-
interpolation algorithm, while "bilinear_v2" may result in better result in some cases.
|
|
181
|
+
interpolation algorithm, while "bilinear_v2" may result in better result in some cases.
|
|
182
|
+
"nearest" is the nearest neighbor interpolation algorithm.
|
|
183
|
+
Default: "bilinear".
|
|
168
184
|
extrapolation_value (float, optional): An optional float value used extrapolation, if applicable. Default: 0.0.
|
|
169
185
|
|
|
170
186
|
Returns:
|
|
171
|
-
A 4-D tensor of shape
|
|
187
|
+
A 4-D tensor of shape :math:`(num_boxes, crop_height, crop_width, depth)` with type(float32).
|
|
172
188
|
|
|
173
189
|
Raises:
|
|
174
190
|
TypeError: If `image` or `boxes` or `box_indices` is not a Tensor.
|