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
|
@@ -13,21 +13,21 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""channel shuffle"""
|
|
16
|
-
from mindspore.ops.primitive import constexpr
|
|
17
16
|
from mindspore.ops import operations as P
|
|
18
17
|
from mindspore.nn.cell import Cell
|
|
18
|
+
from mindspore.ops.primitive import _primexpr
|
|
19
19
|
|
|
20
20
|
__all__ = ['ChannelShuffle']
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class ChannelShuffle(Cell):
|
|
24
24
|
r"""
|
|
25
|
-
Divide the channels
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
Divide the channels of Tensor whose shape is :math:`(*, C, H, W)` into :math:`g` groups to obtain a Tensor with
|
|
26
|
+
shape :math:`(*, C \frac g, g, H, W)`, and transpose along the corresponding axis of :math:`C`,
|
|
27
|
+
:math:`\frac{g}{}` and :math:`g` to restore Tensor to the original shape.
|
|
28
28
|
|
|
29
29
|
Args:
|
|
30
|
-
groups (int): Number of groups to divide channels in. Refer to :math:`g`.
|
|
30
|
+
groups (int): Number of groups to divide channels in, must be greater than 0. Refer to :math:`g`.
|
|
31
31
|
|
|
32
32
|
Inputs:
|
|
33
33
|
- **x** (Tensor) - Tensor of shape :math:`(*, C_{in}, H_{in}, W_{in})`.
|
|
@@ -83,8 +83,9 @@ class ChannelShuffle(Cell):
|
|
|
83
83
|
self.transpose = P.Transpose()
|
|
84
84
|
|
|
85
85
|
@staticmethod
|
|
86
|
-
@
|
|
86
|
+
@_primexpr
|
|
87
87
|
def _check_input_dim(shape, channels, groups, cls_name):
|
|
88
|
+
"""check input dim"""
|
|
88
89
|
dim = len(shape)
|
|
89
90
|
if dim < 3:
|
|
90
91
|
raise ValueError(f"For {cls_name}, the in_shape must have more than 2 dims, but got {dim}.")
|
mindspore/nn/layer/combined.py
CHANGED
|
@@ -17,7 +17,7 @@ from __future__ import absolute_import
|
|
|
17
17
|
|
|
18
18
|
from mindspore import nn
|
|
19
19
|
from mindspore.ops.primitive import Primitive
|
|
20
|
-
|
|
20
|
+
import mindspore._checkparam as Validator
|
|
21
21
|
from mindspore.nn.layer.normalization import BatchNorm2d, BatchNorm1d
|
|
22
22
|
from mindspore.nn.layer.activation import get_activation, LeakyReLU
|
|
23
23
|
from mindspore.nn.cell import Cell
|
mindspore/nn/layer/container.py
CHANGED
|
@@ -109,7 +109,7 @@ class _CellListBase:
|
|
|
109
109
|
class SequentialCell(Cell):
|
|
110
110
|
"""
|
|
111
111
|
Sequential Cell container. For more details about Cell, please refer to
|
|
112
|
-
`Cell <https://www.mindspore.cn/docs/en/r2.0
|
|
112
|
+
`Cell <https://www.mindspore.cn/docs/en/r2.0/api_python/nn/mindspore.nn.Cell.html#mindspore.nn.Cell>`_.
|
|
113
113
|
|
|
114
114
|
A list of Cells will be added to it in the order they are passed in the constructor.
|
|
115
115
|
Alternatively, an ordered dict of cells can also be passed in.
|
|
@@ -168,7 +168,12 @@ class SequentialCell(Cell):
|
|
|
168
168
|
self._is_dynamic_name = []
|
|
169
169
|
if len(args) == 1:
|
|
170
170
|
cells = args[0]
|
|
171
|
-
if isinstance(cells,
|
|
171
|
+
if isinstance(cells, Cell):
|
|
172
|
+
cell = cells
|
|
173
|
+
self.insert_child_to_cell(str(0), cell)
|
|
174
|
+
cell.update_parameters_name(str(0) + ".")
|
|
175
|
+
self._is_dynamic_name.append(True)
|
|
176
|
+
elif isinstance(cells, list):
|
|
172
177
|
for index, cell in enumerate(cells):
|
|
173
178
|
self.insert_child_to_cell(str(index), cell)
|
|
174
179
|
cell.update_parameters_name(str(index) + ".")
|
|
@@ -179,7 +184,7 @@ class SequentialCell(Cell):
|
|
|
179
184
|
cell.update_parameters_name(name + ".")
|
|
180
185
|
self._is_dynamic_name.append(False)
|
|
181
186
|
else:
|
|
182
|
-
raise TypeError(f"For '{self.__class__.__name__}', the 'args[0]' must be list or orderedDict, "
|
|
187
|
+
raise TypeError(f"For '{self.__class__.__name__}', the 'args[0]' must be Cell, list or orderedDict, "
|
|
183
188
|
f"but got {type(cells).__name__}")
|
|
184
189
|
else:
|
|
185
190
|
for index, cell in enumerate(args):
|
|
@@ -233,6 +238,9 @@ class SequentialCell(Cell):
|
|
|
233
238
|
self._cells = temp_dict
|
|
234
239
|
self.cell_list = list(self._cells.values())
|
|
235
240
|
|
|
241
|
+
def __bool__(self):
|
|
242
|
+
return len(self._cells) != 0
|
|
243
|
+
|
|
236
244
|
def __len__(self):
|
|
237
245
|
return len(self._cells)
|
|
238
246
|
|
|
@@ -279,11 +287,37 @@ class SequentialCell(Cell):
|
|
|
279
287
|
input_data = cell(input_data)
|
|
280
288
|
return input_data
|
|
281
289
|
|
|
290
|
+
def _insert(self, index, cell):
|
|
291
|
+
"""
|
|
292
|
+
Inserts a given Cell before a given index in the list.
|
|
293
|
+
|
|
294
|
+
Args:
|
|
295
|
+
index(int): The Insert index in the CellList.
|
|
296
|
+
cell(Cell): The Cell to be inserted.
|
|
297
|
+
"""
|
|
298
|
+
cls_name = self.__class__.__name__
|
|
299
|
+
idx = _valid_index(len(self), index, cls_name)
|
|
300
|
+
_valid_cell(cell, cls_name)
|
|
301
|
+
length = len(self)
|
|
302
|
+
prefix, key_index = _get_prefix_and_index(self._cells)
|
|
303
|
+
while length > idx:
|
|
304
|
+
if self._auto_prefix:
|
|
305
|
+
tmp_cell = self._cells[str(length-1)]
|
|
306
|
+
for _, param in tmp_cell.parameters_and_names():
|
|
307
|
+
param.name = f'{prefix}{str(length)}{"."}{".".join(param.name.split(".")[key_index+1:])}'
|
|
308
|
+
self._cells[str(length)] = self._cells[str(length - 1)]
|
|
309
|
+
length -= 1
|
|
310
|
+
self._cells[str(idx)] = cell
|
|
311
|
+
if self._auto_prefix:
|
|
312
|
+
cell.update_parameters_name(prefix + str(idx) + ".")
|
|
313
|
+
self.cell_list = list(self._cells.values())
|
|
314
|
+
self._is_dynamic_name.insert(index, True)
|
|
315
|
+
|
|
282
316
|
|
|
283
317
|
class CellList(_CellListBase, Cell):
|
|
284
318
|
"""
|
|
285
319
|
Holds Cells in a list. For more details about Cell, please refer to
|
|
286
|
-
`Cell <https://www.mindspore.cn/docs/en/r2.0
|
|
320
|
+
`Cell <https://www.mindspore.cn/docs/en/r2.0/api_python/nn/mindspore.nn.Cell.html#mindspore.nn.Cell>`_.
|
|
287
321
|
|
|
288
322
|
CellList can be used like a regular Python list, the Cells it contains have been initialized. Unlike the
|
|
289
323
|
SequentialCell, the cells in CellList are not connected.
|
|
@@ -364,6 +398,9 @@ class CellList(_CellListBase, Cell):
|
|
|
364
398
|
temp_dict[str(idx)] = cell
|
|
365
399
|
self._cells = temp_dict
|
|
366
400
|
|
|
401
|
+
def __bool__(self):
|
|
402
|
+
return len(self._cells) != 0
|
|
403
|
+
|
|
367
404
|
def __len__(self):
|
|
368
405
|
return len(self._cells)
|
|
369
406
|
|
mindspore/nn/layer/conv.py
CHANGED
|
@@ -20,11 +20,12 @@ import numpy as np
|
|
|
20
20
|
from mindspore import log as logger
|
|
21
21
|
from mindspore import context
|
|
22
22
|
from mindspore.ops import operations as P
|
|
23
|
-
from mindspore.ops.primitive import
|
|
23
|
+
from mindspore.ops.primitive import _primexpr
|
|
24
24
|
from mindspore.common.parameter import Parameter
|
|
25
25
|
from mindspore.common.initializer import initializer
|
|
26
26
|
from mindspore.common.tensor import Tensor
|
|
27
|
-
from mindspore
|
|
27
|
+
from mindspore import _checkparam as Validator
|
|
28
|
+
from mindspore._checkparam import twice, _check_3d_int_or_tuple
|
|
28
29
|
from mindspore._extends import cell_attr_register
|
|
29
30
|
from mindspore.nn.cell import Cell
|
|
30
31
|
|
|
@@ -142,7 +143,7 @@ class Conv2d(_Conv):
|
|
|
142
143
|
\sum_{k = 0}^{C_{in} - 1} \text{ccor}({\text{weight}(C_{\text{out}_j}, k), \text{X}(N_i, k)})
|
|
143
144
|
|
|
144
145
|
where :math:`ccor` is the `cross-correlation <https://en.wikipedia.org/wiki/Cross-correlation>`_,
|
|
145
|
-
:math:`C_{in}` is the channel number of the input, :math:`out_{j}` corresponds to the
|
|
146
|
+
:math:`C_{in}` is the channel number of the input, :math:`out_{j}` corresponds to the :math:`j`-th channel of
|
|
146
147
|
the output and :math:`j` is in the range of :math:`[0, C_{out}-1]`. :math:`\text{weight}(C_{\text{out}_j}, k)`
|
|
147
148
|
is a convolution kernel slice with shape :math:`(\text{kernel_size[0]}, \text{kernel_size[1]})`,
|
|
148
149
|
where :math:`\text{kernel_size[0]}` and :math:`\text{kernel_size[1]}` are the height and width of the convolution
|
|
@@ -220,17 +221,17 @@ class Conv2d(_Conv):
|
|
|
220
221
|
|
|
221
222
|
.. math::
|
|
222
223
|
\begin{array}{ll} \\
|
|
223
|
-
H_{out}
|
|
224
|
-
W_{out}
|
|
224
|
+
H_{out} = \left \lceil{\frac{H_{in}}{\text{stride[0]}}} \right \rceil \\
|
|
225
|
+
W_{out} = \left \lceil{\frac{W_{in}}{\text{stride[1]}}} \right \rceil \\
|
|
225
226
|
\end{array}
|
|
226
227
|
|
|
227
228
|
pad_mode is 'valid':
|
|
228
229
|
|
|
229
230
|
.. math::
|
|
230
231
|
\begin{array}{ll} \\
|
|
231
|
-
H_{out}
|
|
232
|
+
H_{out} = \left \lceil{\frac{H_{in} - \text{dilation[0]} \times (\text{kernel_size[0]} - 1) }
|
|
232
233
|
{\text{stride[0]}}} \right \rceil \\
|
|
233
|
-
W_{out}
|
|
234
|
+
W_{out} = \left \lceil{\frac{W_{in} - \text{dilation[1]} \times (\text{kernel_size[1]} - 1) }
|
|
234
235
|
{\text{stride[1]}}} \right \rceil \\
|
|
235
236
|
\end{array}
|
|
236
237
|
|
|
@@ -238,9 +239,9 @@ class Conv2d(_Conv):
|
|
|
238
239
|
|
|
239
240
|
.. math::
|
|
240
241
|
\begin{array}{ll} \\
|
|
241
|
-
H_{out}
|
|
242
|
+
H_{out} = \left \lfloor{\frac{H_{in} + padding[0] + padding[1] - (\text{kernel_size[0]} - 1) \times
|
|
242
243
|
\text{dilation[0]} - 1 }{\text{stride[0]}} + 1} \right \rfloor \\
|
|
243
|
-
W_{out}
|
|
244
|
+
W_{out} = \left \lfloor{\frac{W_{in} + padding[2] + padding[3] - (\text{kernel_size[1]} - 1) \times
|
|
244
245
|
\text{dilation[1]} - 1 }{\text{stride[1]}} + 1} \right \rfloor \\
|
|
245
246
|
\end{array}
|
|
246
247
|
|
|
@@ -315,7 +316,7 @@ class Conv2d(_Conv):
|
|
|
315
316
|
return output
|
|
316
317
|
|
|
317
318
|
|
|
318
|
-
@
|
|
319
|
+
@_primexpr
|
|
319
320
|
def _check_input_3d(input_shape, op_name):
|
|
320
321
|
if len(input_shape) != 3:
|
|
321
322
|
raise ValueError(f"For '{op_name}', the dimension of input must be 3d, but got {len(input_shape)}.")
|
|
@@ -333,7 +334,7 @@ class Conv1d(_Conv):
|
|
|
333
334
|
\sum_{k = 0}^{C_{in} - 1} \text{ccor}({\text{weight}(C_{\text{out}_j}, k), \text{X}(N_i, k)})
|
|
334
335
|
|
|
335
336
|
where :math:`ccor` is the `cross-correlation <https://en.wikipedia.org/wiki/Cross-correlation>`_,
|
|
336
|
-
:math:`C_{in}` is the channel number of the input, :math:`out_{j}` corresponds to the
|
|
337
|
+
:math:`C_{in}` is the channel number of the input, :math:`out_{j}` corresponds to the :math:`j`-th channel of
|
|
337
338
|
the output and :math:`j` is in the range of :math:`[0, C_{out}-1]`. :math:`\text{weight}(C_{\text{out}_j}, k)`
|
|
338
339
|
is a convolution kernel slice with shape :math:`\text{kernel_size}`, where :math:`\text{kernel_size}`
|
|
339
340
|
is the width of the convolution kernel. :math:`\text{bias}` is the bias parameter,
|
|
@@ -440,10 +441,10 @@ class Conv1d(_Conv):
|
|
|
440
441
|
Validator.check_value_type("stride", stride, [int], self.cls_name)
|
|
441
442
|
Validator.check_value_type("padding", padding, [int], self.cls_name)
|
|
442
443
|
Validator.check_value_type("dilation", dilation, [int], self.cls_name)
|
|
443
|
-
Validator.check_int(kernel_size, 1,
|
|
444
|
-
Validator.check_int(stride, 1,
|
|
444
|
+
Validator.check_int(kernel_size, 1, Validator.GE, 'kernel_size', self.cls_name)
|
|
445
|
+
Validator.check_int(stride, 1, Validator.GE, 'stride', self.cls_name)
|
|
445
446
|
Validator.check_non_negative_int(padding, 'padding', self.cls_name)
|
|
446
|
-
Validator.check_int(dilation, 1,
|
|
447
|
+
Validator.check_int(dilation, 1, Validator.GE, 'dilation', self.cls_name)
|
|
447
448
|
kernel_size = (1, kernel_size)
|
|
448
449
|
stride = (1, stride)
|
|
449
450
|
dilation = (1, dilation)
|
|
@@ -496,7 +497,7 @@ class Conv1d(_Conv):
|
|
|
496
497
|
return output
|
|
497
498
|
|
|
498
499
|
|
|
499
|
-
@
|
|
500
|
+
@_primexpr
|
|
500
501
|
def _check_input_5dims(input_shape, op_name):
|
|
501
502
|
if len(input_shape) != 5:
|
|
502
503
|
raise ValueError(f"For '{op_name}', the dimension of input must be 5d, but got {len(input_shape)}.")
|
|
@@ -516,8 +517,8 @@ class Conv3d(_Conv):
|
|
|
516
517
|
\sum_{k = 0}^{C_{in} - 1} \text{ccor}({\text{weight}(C_{\text{out}_j}, k), \text{X}(N_i, k)})
|
|
517
518
|
|
|
518
519
|
where :math:`ccor` is the `cross-correlation <https://en.wikipedia.org/wiki/Cross-correlation>`_,
|
|
519
|
-
:math:`C_{in}` is the channel number of the input, :math:`out_{j}` corresponds to the
|
|
520
|
-
the output and :math:`j` is in the range of :math:`[0
|
|
520
|
+
:math:`C_{in}` is the channel number of the input, :math:`out_{j}` corresponds to the :math:`j`-th channel of
|
|
521
|
+
the output and :math:`j` is in the range of :math:`[0, C_{out}-1]`. :math:`\text{weight}(C_{\text{out}_j}, k)`
|
|
521
522
|
is a convolution kernel slice with shape
|
|
522
523
|
:math:`(\text{kernel_size[0]}, \text{kernel_size[1]}, \text{kernel_size[2]})`,
|
|
523
524
|
where :math:`\text{kernel_size[0]}`, :math:`\text{kernel_size[1]}` and :math:`\text{kernel_size[2]}` are
|
|
@@ -724,7 +725,8 @@ class Conv3dTranspose(_Conv):
|
|
|
724
725
|
Calculates a 3D transposed convolution, which can be regarded as Conv3d for the gradient of the input.
|
|
725
726
|
It also called deconvolution (although it is not an actual deconvolution).
|
|
726
727
|
|
|
727
|
-
|
|
728
|
+
he input is typically of shape :math:`(N, C_{in}, D_{in}, H_{in}, W_{in})`,
|
|
729
|
+
where :math:`N` is batch size, :math:`C_{in}` is a number of
|
|
728
730
|
channels, :math:`D_{in}, H_{in}, W_{in}` are the depth, height and width of the feature layer respectively.
|
|
729
731
|
|
|
730
732
|
When Conv3d and Conv3dTranspose are initialized with the same parameters, and `pad_mode` is set to 'pad',
|
|
@@ -973,6 +975,12 @@ class Conv2dTranspose(_Conv):
|
|
|
973
975
|
If `padding` is a tuple of 4 integers, then the top, bottom, left, and right padding
|
|
974
976
|
is equal to `padding[0]`, `padding[1]`, `padding[2]`, and `padding[3]` respectively.
|
|
975
977
|
The value should be greater than or equal to 0. Default: 0.
|
|
978
|
+
output_padding (Union[int, tuple[int]]): The number of padding on the height and width directions of the output.
|
|
979
|
+
The data type is an integer or a tuple of two integers. If `output_padding` is an integer,
|
|
980
|
+
then the bottom and right padding are all equal to `output_padding`. If `output_padding` is a tuple of
|
|
981
|
+
2 integers, then the bottom and right padding is equal to `output_padding[0]`, `output_padding[1]`
|
|
982
|
+
respectively. If `output_padding` is not equal to 0, `pad_mode` must be `pad`.
|
|
983
|
+
The value should be in range of `[0, max(stride, dilation))` . Default: 0.
|
|
976
984
|
dilation (Union[int, tuple[int]]): Dilation size of 2D convolution kernel.
|
|
977
985
|
The data type is an integer or a tuple of two integers. If :math:`k > 1`, the kernel is sampled
|
|
978
986
|
every `k` elements. The value of `k` on the height and width directions is in range of [1, H]
|
|
@@ -1020,10 +1028,10 @@ class Conv2dTranspose(_Conv):
|
|
|
1020
1028
|
\begin{array}{ll} \\
|
|
1021
1029
|
H_{out} = \text H_{in}\times \text {stride[0]} - (padding[0] + padding[1])
|
|
1022
1030
|
+ \text{kernel_size[0]} + (\text{dilation[0]} - 1) \times
|
|
1023
|
-
(\text{kernel_size[0]} - 1) - \text {stride[0]} \\
|
|
1031
|
+
(\text{kernel_size[0]} - 1) - \text {stride[0]} + \text {output_padding[0]} \\
|
|
1024
1032
|
W_{out} = \text W_{in}\times \text {stride[1]} - (padding[2] + padding[3])
|
|
1025
1033
|
+ \text{kernel_size[1]} + (\text{dilation[1]} - 1) \times
|
|
1026
|
-
(\text{kernel_size[1]} - 1) - \text {stride[1]} \\
|
|
1034
|
+
(\text{kernel_size[1]} - 1) - \text {stride[1]} + \text {output_padding[1]} \\
|
|
1027
1035
|
\end{array}
|
|
1028
1036
|
|
|
1029
1037
|
Raises:
|
|
@@ -1053,6 +1061,7 @@ class Conv2dTranspose(_Conv):
|
|
|
1053
1061
|
stride=1,
|
|
1054
1062
|
pad_mode='same',
|
|
1055
1063
|
padding=0,
|
|
1064
|
+
output_padding=0,
|
|
1056
1065
|
dilation=1,
|
|
1057
1066
|
group=1,
|
|
1058
1067
|
has_bias=False,
|
|
@@ -1065,6 +1074,9 @@ class Conv2dTranspose(_Conv):
|
|
|
1065
1074
|
Validator.check_value_type('padding', padding, (int, tuple), self.cls_name)
|
|
1066
1075
|
if isinstance(padding, tuple):
|
|
1067
1076
|
Validator.check_equal_int(len(padding), 4, 'padding size', self.cls_name)
|
|
1077
|
+
Validator.check_value_type('output_padding', output_padding, (int, tuple), self.cls_name)
|
|
1078
|
+
if isinstance(output_padding, tuple):
|
|
1079
|
+
Validator.check_equal_int(len(output_padding), 2, 'output_padding size', self.cls_name)
|
|
1068
1080
|
# out_channels and in_channels swap.
|
|
1069
1081
|
# cause Conv2DBackpropInput's out_channel refers to Conv2D's out_channel,
|
|
1070
1082
|
# then Conv2dTranspose's out_channel refers to Conv2DBackpropInput's in_channel.
|
|
@@ -1089,6 +1101,7 @@ class Conv2dTranspose(_Conv):
|
|
|
1089
1101
|
self.is_valid = self.pad_mode == 'valid'
|
|
1090
1102
|
self.is_same = self.pad_mode == 'same'
|
|
1091
1103
|
self.is_pad = self.pad_mode == 'pad'
|
|
1104
|
+
self.output_padding = output_padding
|
|
1092
1105
|
if Validator.check_bool(has_bias, "has_bias", self.cls_name):
|
|
1093
1106
|
self.bias = Parameter(initializer(bias_init, [out_channels]), name='bias')
|
|
1094
1107
|
|
|
@@ -1120,7 +1133,29 @@ class Conv2dTranspose(_Conv):
|
|
|
1120
1133
|
if self.has_bias:
|
|
1121
1134
|
return self.bias_add(self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out)),
|
|
1122
1135
|
self.bias)
|
|
1123
|
-
|
|
1136
|
+
conv2d_trans_ret = self.conv2d_transpose(x, self.weight, (n, self.out_channels, h_out, w_out))
|
|
1137
|
+
if isinstance(self.output_padding, tuple):
|
|
1138
|
+
if self.output_padding[0] < 0 or self.output_padding[0] >= max(self.dilation[0], self.stride[0]):
|
|
1139
|
+
raise ValueError("output_padding[0] must be in range of [0, max(stride_h, dilation_h)).")
|
|
1140
|
+
if self.output_padding[1] < 0 or self.output_padding[1] >= max(self.dilation[1], self.stride[1]):
|
|
1141
|
+
raise ValueError("output_padding[1] must be in range of [0, max(stride_w, dilation_w)).")
|
|
1142
|
+
if not self.is_pad and (self.output_padding[0] > 0 or self.output_padding[1] > 0):
|
|
1143
|
+
raise ValueError("when output_padding is not zero, pad_mode must be 'pad'")
|
|
1144
|
+
|
|
1145
|
+
pad = P.Pad(paddings=((0, 0), (0, 0), (0, self.output_padding[0]), (0, self.output_padding[1])))
|
|
1146
|
+
return pad(conv2d_trans_ret)
|
|
1147
|
+
|
|
1148
|
+
if self.output_padding == 0:
|
|
1149
|
+
return conv2d_trans_ret
|
|
1150
|
+
|
|
1151
|
+
if self.output_padding < 0 or self.output_padding >= max(self.dilation[0], self.stride[0]):
|
|
1152
|
+
raise ValueError("output_padding must be in range of [0, max(stride_h, dilation_h)).")
|
|
1153
|
+
if self.output_padding < 0 or self.output_padding >= max(self.dilation[1], self.stride[1]):
|
|
1154
|
+
raise ValueError("output_padding must be in range of [0, max(stride_w, dilation_w)).")
|
|
1155
|
+
if not self.is_pad and self.output_padding > 0:
|
|
1156
|
+
raise ValueError("when output_padding is not zero, pad_mode must be 'pad'")
|
|
1157
|
+
pad = P.Pad(paddings=((0, 0), (0, 0), (0, self.output_padding), (0, self.output_padding)))
|
|
1158
|
+
return pad(conv2d_trans_ret)
|
|
1124
1159
|
|
|
1125
1160
|
|
|
1126
1161
|
class Conv1dTranspose(_Conv):
|
|
@@ -1128,7 +1163,8 @@ class Conv1dTranspose(_Conv):
|
|
|
1128
1163
|
Calculates a 1D transposed convolution, which can be regarded as Conv1d for the gradient of the input,
|
|
1129
1164
|
also called deconvolution (although it is not an actual deconvolution).
|
|
1130
1165
|
|
|
1131
|
-
The input is typically of shape :math:`(N,
|
|
1166
|
+
The input is typically of shape :math:`(N, C_{in}, L_{in})`, where :math:`N` is batch size,
|
|
1167
|
+
:math:`C` is a number of channels
|
|
1132
1168
|
and :math:`L_{in}` is a length of sequence.
|
|
1133
1169
|
|
|
1134
1170
|
When Conv1d and ConvTranspose1d are initialized with the same parameters, and `pad_mode` is set to 'pad',
|
|
@@ -1180,18 +1216,18 @@ class Conv1dTranspose(_Conv):
|
|
|
1180
1216
|
pad_mode is 'same':
|
|
1181
1217
|
|
|
1182
1218
|
.. math::
|
|
1183
|
-
L_{out}
|
|
1219
|
+
L_{out} = \left \lfloor{\frac{L_{in}}{\text{stride}} + 1} \right \rfloor
|
|
1184
1220
|
|
|
1185
1221
|
pad_mode is 'valid':
|
|
1186
1222
|
|
|
1187
1223
|
.. math::
|
|
1188
|
-
L_{out}
|
|
1224
|
+
L_{out} = \left \lfloor{\frac{L_{in} - \text{dilation} \times (\text{kernel_size} - 1) }
|
|
1189
1225
|
{\text{stride}} + 1} \right \rfloor
|
|
1190
1226
|
|
|
1191
1227
|
pad_mode is 'pad':
|
|
1192
1228
|
|
|
1193
1229
|
.. math::
|
|
1194
|
-
L_{out}
|
|
1230
|
+
L_{out} = \left \lfloor{\frac{L_{in} + 2 \times padding - (\text{dilation} - 1) \times
|
|
1195
1231
|
\text{kernel_size} - 1 }{\text{stride}} + 1} \right \rfloor
|
|
1196
1232
|
|
|
1197
1233
|
Raises:
|
|
@@ -1228,10 +1264,10 @@ class Conv1dTranspose(_Conv):
|
|
|
1228
1264
|
Validator.check_value_type("stride", stride, [int], self.cls_name)
|
|
1229
1265
|
Validator.check_value_type("padding", padding, [int], self.cls_name)
|
|
1230
1266
|
Validator.check_value_type("dilation", dilation, [int], self.cls_name)
|
|
1231
|
-
Validator.check_int(kernel_size, 1,
|
|
1232
|
-
Validator.check_int(stride, 1,
|
|
1267
|
+
Validator.check_int(kernel_size, 1, Validator.GE, 'kernel_size', self.cls_name)
|
|
1268
|
+
Validator.check_int(stride, 1, Validator.GE, 'stride', self.cls_name)
|
|
1233
1269
|
Validator.check_non_negative_int(padding, 'padding', self.cls_name)
|
|
1234
|
-
Validator.check_int(dilation, 1,
|
|
1270
|
+
Validator.check_int(dilation, 1, Validator.GE, 'dilation', self.cls_name)
|
|
1235
1271
|
kernel_size = (1, kernel_size)
|
|
1236
1272
|
stride = (1, stride)
|
|
1237
1273
|
dilation = (1, dilation)
|
mindspore/nn/layer/dense.py
CHANGED
|
@@ -23,14 +23,14 @@ import mindspore.common.dtype as mstype
|
|
|
23
23
|
from mindspore.common.tensor import Tensor
|
|
24
24
|
from mindspore.common.initializer import initializer, Uniform
|
|
25
25
|
from mindspore.common.parameter import Parameter
|
|
26
|
-
from mindspore.ops.primitive import constexpr
|
|
27
|
-
from mindspore
|
|
26
|
+
from mindspore.ops.primitive import constexpr, _primexpr
|
|
27
|
+
from mindspore import _checkparam as Validator
|
|
28
28
|
from mindspore.nn.cell import Cell
|
|
29
29
|
|
|
30
30
|
__all__ = ['BiDense']
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
@
|
|
33
|
+
@_primexpr
|
|
34
34
|
def check_dense_inputs_same_shape(input1, input2, prim_name=None):
|
|
35
35
|
msg_prefix = f"For '{prim_name}', the" if prim_name else "The"
|
|
36
36
|
if input1[:-1] != input2[:-1]:
|
|
@@ -46,7 +46,7 @@ def _check_is_tensor(param_name, input_data, cls_name):
|
|
|
46
46
|
f"but got '{P.typeof(input_data)}'")
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
@
|
|
49
|
+
@_primexpr
|
|
50
50
|
def check_last_dimension(input_dim, input_channels, input_name, input_channels_name, prim_name=None):
|
|
51
51
|
msg_prefix = f"For '{prim_name}', the" if prim_name else "The"
|
|
52
52
|
if input_dim != input_channels:
|
|
@@ -63,7 +63,7 @@ class BiDense(Cell):
|
|
|
63
63
|
.. math::
|
|
64
64
|
y = x_1^T A x_2 + b,
|
|
65
65
|
|
|
66
|
-
where :math:`
|
|
66
|
+
where :math:`x_{1}` is the first input tensor, :math:`x_{2}` is the second input tensor
|
|
67
67
|
, :math:`A` is a weight matrix with the same data type as the :math:`x_{*}` created by the layer
|
|
68
68
|
, and :math:`b` is a bias vector with the same data type as the :math:`x_{*}` created by the layer
|
|
69
69
|
(only if has_bias is True).
|
|
@@ -76,7 +76,7 @@ class BiDense(Cell):
|
|
|
76
76
|
The values of str refer to the function `initializer`. Default: None.
|
|
77
77
|
bias_init (Union[Tensor, str, Initializer, numbers.Number]): The trainable bias_init parameter.
|
|
78
78
|
The values of str refer to the function `initializer`. Default: None.
|
|
79
|
-
has_bias (bool): Specifies whether the layer uses
|
|
79
|
+
has_bias (bool): Specifies whether the layer uses :math:`\text{bias}` vector. Default: True.
|
|
80
80
|
|
|
81
81
|
Shape:
|
|
82
82
|
- **input1** - :math:`(*, H_{in1})` where :math:`H_{in1}=\text{in1_channels}` and
|
|
@@ -85,8 +85,9 @@ class BiDense(Cell):
|
|
|
85
85
|
- **input2** - :math:`(*, H_{in2})` where :math:`H_{in2}=\text{in2_channels}` and
|
|
86
86
|
:math:`*` means any number of additional dimensions including none. All but the last dimension
|
|
87
87
|
of the inputs should be the same.
|
|
88
|
-
- **output** - :math:`(*, H_{out})` where :math:`H_{out}=\text{out_channels}`
|
|
89
|
-
|
|
88
|
+
- **output** - :math:`(*, H_{out})` where :math:`H_{out}=\text{out_channels}` and
|
|
89
|
+
:math:`*` means any number of additional dimensions including none. All but the last dimension
|
|
90
|
+
are the same shape as the inputs.
|
|
90
91
|
|
|
91
92
|
Dtype:
|
|
92
93
|
- **input1** (Tensor) - The dtype must be float16 or float32 and be same as **input2**.
|
mindspore/nn/layer/embedding.py
CHANGED
|
@@ -29,26 +29,23 @@ from mindspore.parallel._utils import _get_parallel_mode, _get_full_batch
|
|
|
29
29
|
from mindspore.parallel._ps_context import _get_ps_context, _enable_distributed_mindrt
|
|
30
30
|
from mindspore.parallel._ps_context import _is_role_worker, _is_role_pserver
|
|
31
31
|
from mindspore.parallel._ps_context import _insert_hash_table_size, _set_cache_enable, _set_rank_id
|
|
32
|
-
from mindspore
|
|
33
|
-
from mindspore.
|
|
34
|
-
from mindspore.ops.primitive import constexpr
|
|
32
|
+
from mindspore import _checkparam as Validator
|
|
33
|
+
from mindspore.ops.primitive import constexpr, _primexpr
|
|
35
34
|
from mindspore.nn.layer.basic import ClipByNorm
|
|
36
|
-
from mindspore.nn.layer.math import Range
|
|
37
35
|
from mindspore.nn.cell import Cell
|
|
38
36
|
|
|
39
37
|
__all__ = ['Embedding', 'EmbeddingLookup', 'MultiFieldEmbeddingLookup']
|
|
40
38
|
|
|
41
39
|
|
|
42
|
-
@
|
|
40
|
+
@_primexpr
|
|
43
41
|
def _check_input_2d(input_shape, param_name, func_name):
|
|
44
42
|
if len(input_shape) != 2:
|
|
45
43
|
raise ValueError(f"For '{func_name}', the dimension of '{param_name}' must be 2d, but got {len(input_shape)}")
|
|
46
|
-
return True
|
|
47
44
|
|
|
48
45
|
|
|
49
46
|
@constexpr
|
|
50
47
|
def _check_input_dtype(input_dtype, param_name, allow_dtypes, cls_name):
|
|
51
|
-
|
|
48
|
+
Validator.check_type_name(param_name, input_dtype, allow_dtypes, cls_name)
|
|
52
49
|
|
|
53
50
|
|
|
54
51
|
class Embedding(Cell):
|
|
@@ -102,16 +99,16 @@ class Embedding(Cell):
|
|
|
102
99
|
dtype=mstype.float32, padding_idx=None):
|
|
103
100
|
"""Initialize Embedding."""
|
|
104
101
|
super(Embedding, self).__init__()
|
|
105
|
-
self.vocab_size =
|
|
106
|
-
self.embedding_size =
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
self.vocab_size = Validator.check_value_type('vocab_size', vocab_size, [int], self.cls_name)
|
|
103
|
+
self.embedding_size = Validator.check_value_type('embedding_size', embedding_size, [int], self.cls_name)
|
|
104
|
+
Validator.check_value_type('use_one_hot', use_one_hot, [bool], self.cls_name)
|
|
105
|
+
Validator.check_subclass("dtype", dtype, mstype.number_type, self.cls_name)
|
|
109
106
|
self.use_one_hot = use_one_hot
|
|
110
107
|
self.dtype = dtype
|
|
111
108
|
self.init_tensor = initializer(embedding_table, [vocab_size, embedding_size])
|
|
112
109
|
self.padding_idx = padding_idx
|
|
113
110
|
if padding_idx is not None:
|
|
114
|
-
self.padding_idx =
|
|
111
|
+
self.padding_idx = Validator.check_int_range(padding_idx, 0, vocab_size, Validator.INC_LEFT,
|
|
115
112
|
"padding_idx", self.cls_name)
|
|
116
113
|
if isinstance(self.init_tensor, Tensor) and self.init_tensor.init is not None:
|
|
117
114
|
self.init_tensor = self.init_tensor.init_data()
|
|
@@ -129,9 +126,13 @@ class Embedding(Cell):
|
|
|
129
126
|
self.array_mul = P.MatMul()
|
|
130
127
|
self.reshape = P.Reshape()
|
|
131
128
|
self.get_shp = P.Shape()
|
|
129
|
+
self.get_tensor_shp = P.TensorShape()
|
|
130
|
+
self.concat = P.Concat()
|
|
132
131
|
|
|
133
132
|
def construct(self, ids):
|
|
134
133
|
out_shape = self.get_shp(ids) + (self.embedding_size,)
|
|
134
|
+
if F.is_sequence_value_unknown(self.get_shp(ids)):
|
|
135
|
+
out_shape = self.concat((self.get_tensor_shp(ids), Tensor([self.embedding_size])))
|
|
135
136
|
flat_ids = self.reshape_flat(ids, self.shp_flat)
|
|
136
137
|
|
|
137
138
|
if self.use_one_hot:
|
|
@@ -230,14 +231,14 @@ class EmbeddingLookup(Cell):
|
|
|
230
231
|
max_norm=None, sparse=True, vocab_cache_size=0):
|
|
231
232
|
"""Initialize EmbeddingLookup."""
|
|
232
233
|
super(EmbeddingLookup, self).__init__()
|
|
233
|
-
|
|
234
|
-
self.vocab_size =
|
|
235
|
-
self.vocab_cache_size =
|
|
234
|
+
Validator.check_value_type('sparse', sparse, [bool], self.cls_name)
|
|
235
|
+
self.vocab_size = Validator.check_positive_int(vocab_size, 'vocab_size')
|
|
236
|
+
self.vocab_cache_size = Validator.check_non_negative_int(vocab_cache_size, 'vocab_cache_size')
|
|
236
237
|
self.target = target
|
|
237
238
|
self.sparse = sparse
|
|
238
239
|
self.cache_enable = self.vocab_cache_size > 0
|
|
239
240
|
self.forward_unique = False
|
|
240
|
-
|
|
241
|
+
Validator.check_string(target, ['CPU', 'DEVICE'], 'target', self.cls_name)
|
|
241
242
|
if not sparse and target == 'CPU':
|
|
242
243
|
raise ValueError(f"For '{self.cls_name}', 'sparse' must be True when 'target' is \"CPU\", "
|
|
243
244
|
f"but got 'sparse': {sparse} and 'target': {target}")
|
|
@@ -250,7 +251,7 @@ class EmbeddingLookup(Cell):
|
|
|
250
251
|
enable_ps = _get_ps_context("enable_ps")
|
|
251
252
|
if enable_ps:
|
|
252
253
|
self._process_vocab_cache(slice_mode)
|
|
253
|
-
self.embedding_size =
|
|
254
|
+
self.embedding_size = Validator.check_positive_int(embedding_size, 'embedding_size', self.cls_name)
|
|
254
255
|
self.embedding_table = Parameter(initializer(param_init, [self.vocab_size, self.embedding_size]),
|
|
255
256
|
name='embedding_table')
|
|
256
257
|
parallel_mode = _get_parallel_mode()
|
|
@@ -275,7 +276,7 @@ class EmbeddingLookup(Cell):
|
|
|
275
276
|
raise TypeError(f"For '{self.cls_name}', the type of 'manual_shapes' must be tuple(int), "
|
|
276
277
|
f"but got {type(manual_shapes).__name__}!")
|
|
277
278
|
for dim in manual_shapes:
|
|
278
|
-
|
|
279
|
+
Validator.check_positive_int(dim, 'manual shape dim', self.cls_name)
|
|
279
280
|
self.gatherv2.add_prim_attr("manual_split", manual_shapes)
|
|
280
281
|
self.embeddinglookup.add_prim_attr("manual_split", manual_shapes)
|
|
281
282
|
self.gatherv2.shard(((get_group_size(), 1), (1, get_group_size())))
|
|
@@ -313,7 +314,7 @@ class EmbeddingLookup(Cell):
|
|
|
313
314
|
self.embedding_table.unique = self.forward_unique
|
|
314
315
|
self.max_norm = max_norm
|
|
315
316
|
if self.max_norm is not None:
|
|
316
|
-
self.max_norm =
|
|
317
|
+
self.max_norm = Validator.check_positive_float(self.max_norm, 'max_norm', self.cls_name)
|
|
317
318
|
self.max_norm = Tensor(self.max_norm, dtype=mstype.float32)
|
|
318
319
|
|
|
319
320
|
def _process_vocab_cache(self, slice_mode):
|
|
@@ -343,13 +344,15 @@ class EmbeddingLookup(Cell):
|
|
|
343
344
|
f"But got full_batch: {full_batch} and 'slice_mode': \"{slice_mode}\".")
|
|
344
345
|
self.vocab_cache_size = self.vocab_cache_size * rank_size
|
|
345
346
|
_set_rank_id(rank_id)
|
|
347
|
+
|
|
346
348
|
self.cache_enable = True
|
|
349
|
+
_set_cache_enable(True)
|
|
350
|
+
|
|
347
351
|
if _is_role_worker():
|
|
348
352
|
self.vocab_size = self.vocab_cache_size
|
|
349
353
|
|
|
350
354
|
def _set_voacb_cache_enable_for_ps(self, vocab_cache_size, embedding_size, vocab_size, param_init):
|
|
351
355
|
"""PS embeddingLookup cache enable set."""
|
|
352
|
-
_set_cache_enable(True)
|
|
353
356
|
if self.sparse:
|
|
354
357
|
self.forward_unique = True
|
|
355
358
|
param_key = _get_unique_parameter_key()
|
|
@@ -484,7 +487,7 @@ class MultiFieldEmbeddingLookup(EmbeddingLookup):
|
|
|
484
487
|
'MEAN'. Ensure the input_values of the padded id is zero, so that they can be ignored. The final
|
|
485
488
|
output will be zeros if the sum of absolute weight of the field is zero. This class only
|
|
486
489
|
supports ['table_row_slice', 'batch_slice' and 'table_column_slice']. For the operation 'MAX' on
|
|
487
|
-
device Ascend, there is a constraint where
|
|
490
|
+
device Ascend, there is a constraint where :math:`batch\_size * (seq\_length + field\_size) < 3500`.
|
|
488
491
|
|
|
489
492
|
Args:
|
|
490
493
|
vocab_size (int): The size of the dictionary of embeddings.
|
|
@@ -549,7 +552,7 @@ class MultiFieldEmbeddingLookup(EmbeddingLookup):
|
|
|
549
552
|
"""Initialize MultiFieldEmbeddingLookup."""
|
|
550
553
|
super(MultiFieldEmbeddingLookup, self).__init__(vocab_size, embedding_size, param_init, target,
|
|
551
554
|
slice_mode, feature_num_list, max_norm, sparse)
|
|
552
|
-
self.field_size =
|
|
555
|
+
self.field_size = Validator.check_positive_int(field_size, 'field_size', self.cls_name)
|
|
553
556
|
self.operator = operator
|
|
554
557
|
|
|
555
558
|
self.mul = P.Mul()
|
|
@@ -567,7 +570,7 @@ class MultiFieldEmbeddingLookup(EmbeddingLookup):
|
|
|
567
570
|
self.max_mask_mul = P.Mul()
|
|
568
571
|
self.max_no_equal = P.NotEqual()
|
|
569
572
|
|
|
570
|
-
|
|
573
|
+
Validator.check_string(operator, ['SUM', 'MAX', 'MEAN'], 'operator', self.cls_name)
|
|
571
574
|
if operator == MultiFieldEmbeddingLookup.OPERATOR_SUM:
|
|
572
575
|
self.merge_op = P.UnsortedSegmentSum()
|
|
573
576
|
elif operator == MultiFieldEmbeddingLookup.OPERATOR_MAX:
|
|
@@ -619,7 +622,6 @@ class MultiFieldEmbeddingLookup(EmbeddingLookup):
|
|
|
619
622
|
self.negative_inf_value = -3.402823466E+38
|
|
620
623
|
|
|
621
624
|
def construct(self, input_indices, input_values, field_ids):
|
|
622
|
-
|
|
623
625
|
_check_input_2d(F.shape(input_indices), "input_indices", self.cls_name)
|
|
624
626
|
_check_input_2d(F.shape(input_values), "input_values", self.cls_name)
|
|
625
627
|
_check_input_2d(F.shape(field_ids), "field_ids", self.cls_name)
|
|
@@ -629,7 +631,7 @@ class MultiFieldEmbeddingLookup(EmbeddingLookup):
|
|
|
629
631
|
|
|
630
632
|
batch_size = self.shape(input_indices)[0]
|
|
631
633
|
num_segments = batch_size * self.field_size
|
|
632
|
-
bias =
|
|
634
|
+
bias = F.tuple_to_array(F.make_range(0, num_segments, self.field_size))
|
|
633
635
|
bias = self.reshape(bias, (batch_size, -1))
|
|
634
636
|
field_ids = self.bias_add(field_ids, bias)
|
|
635
637
|
|