mindspore 2.4.10__cp310-cp310-win_amd64.whl → 2.6.0rc1__cp310-cp310-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/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +13 -6
- mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +46 -197
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +217 -98
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +435 -371
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +2 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +951 -1992
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +314 -566
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +182 -116
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +157 -117
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +796 -759
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +921 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/mint/special/__init__.py +2 -1
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1370 -189
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +17 -13
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +1 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +365 -363
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
- mindspore/ops/_vmap/vmap_array_ops.py +27 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
- mindspore/ops/auto_generate/gen_extend_func.py +764 -124
- mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
- mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4501 -3802
- mindspore/ops/function/nn_func.py +1726 -620
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +440 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +22 -7
- mindspore/ops/functional_overload.py +1440 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +13 -7
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +232 -78
- mindspore/ops/operations/debug_ops.py +153 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +210 -498
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +66 -53
- mindspore/ops/tensor_method.py +1888 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +7 -3
- mindspore/parallel/_auto_parallel_context.py +152 -34
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +698 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +259 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +25 -14
- mindspore/parallel/shard.py +137 -58
- mindspore/parallel/transform_safetensors.py +363 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +409 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +88 -25
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +184 -113
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +550 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -19,13 +19,64 @@ SequentialSampler, SubsetRandomSampler, and WeightedRandomSampler.
|
|
|
19
19
|
Users can also define a custom sampler by extending from the Sampler class.
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
+
import copy
|
|
22
23
|
import numbers
|
|
24
|
+
|
|
25
|
+
from enum import Enum
|
|
23
26
|
import numpy as np
|
|
24
27
|
import mindspore._c_dataengine as cde
|
|
25
28
|
import mindspore.dataset as ds
|
|
26
29
|
from ..core import validator_helpers as validator
|
|
27
30
|
|
|
28
31
|
|
|
32
|
+
class Shuffle(str, Enum):
|
|
33
|
+
"""Specify the shuffle mode.
|
|
34
|
+
|
|
35
|
+
- ``Shuffle.FALSE`` : Disable the shuffle.
|
|
36
|
+
- ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
|
|
37
|
+
global shuffle is used. When the number of dataset samples is greater than 100 million, partial shuffle is used.
|
|
38
|
+
- ``Shuffle.GLOBAL`` : Shuffle both the files and samples.
|
|
39
|
+
- ``Shuffle.PARTIAL`` : Shuffle data with every 1 million samples
|
|
40
|
+
- ``Shuffle.FILES`` : Shuffle files only.
|
|
41
|
+
- ``Shuffle.INFILE`` : Shuffle data within each file.
|
|
42
|
+
"""
|
|
43
|
+
FALSE: str = "false"
|
|
44
|
+
ADAPTIVE: str = "adaptive"
|
|
45
|
+
GLOBAL: str = "global"
|
|
46
|
+
PARTIAL: str = "partial"
|
|
47
|
+
FILES: str = "files"
|
|
48
|
+
INFILE: str = "infile"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
ShuffleToShuffleMode = {Shuffle.FALSE: cde.ShuffleMode.FALSE,
|
|
52
|
+
Shuffle.ADAPTIVE: cde.ShuffleMode.ADAPTIVE,
|
|
53
|
+
Shuffle.GLOBAL: cde.ShuffleMode.GLOBAL,
|
|
54
|
+
Shuffle.PARTIAL: cde.ShuffleMode.PARTIAL,
|
|
55
|
+
Shuffle.FILES: cde.ShuffleMode.FILES,
|
|
56
|
+
Shuffle.INFILE: cde.ShuffleMode.INFILE}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def shuffle_to_shuffle_mode(shuffle):
|
|
60
|
+
"""
|
|
61
|
+
Shuffle Enum to Shuffle Mode
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
shuffle (Shuffle): shuffle flag to shuffle mode in C layer
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
ShuffleMode, shuffle mode
|
|
68
|
+
"""
|
|
69
|
+
shuffle_mode = cde.ShuffleMode.GLOBAL # Global shuffle
|
|
70
|
+
if not isinstance(shuffle, Shuffle):
|
|
71
|
+
if shuffle is None or shuffle:
|
|
72
|
+
shuffle_mode = cde.ShuffleMode.GLOBAL # Global shuffle
|
|
73
|
+
else:
|
|
74
|
+
shuffle_mode = cde.ShuffleMode.FALSE # No shuffle
|
|
75
|
+
else:
|
|
76
|
+
shuffle_mode = ShuffleToShuffleMode[shuffle]
|
|
77
|
+
return shuffle_mode
|
|
78
|
+
|
|
79
|
+
|
|
29
80
|
def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
|
|
30
81
|
"""
|
|
31
82
|
Create sampler based on user input.
|
|
@@ -33,13 +84,16 @@ def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
|
|
|
33
84
|
Args:
|
|
34
85
|
num_samples (int): Number of samples.
|
|
35
86
|
input_sampler (Union[Iterable, Sampler]): Sampler from user.
|
|
36
|
-
shuffle (
|
|
87
|
+
shuffle (Shuffle): Shuffle is FALSE / ADAPTIVE / GLOBAL / PARTIAL / FILES / INFILE
|
|
37
88
|
num_shards (int): Number of shard for sharding.
|
|
38
89
|
shard_id (int): Shard ID.
|
|
39
90
|
|
|
40
91
|
Returns:
|
|
41
92
|
Sampler, sampler selected based on user input.
|
|
42
93
|
"""
|
|
94
|
+
if input_sampler is None and shuffle not in (Shuffle.FALSE, Shuffle.ADAPTIVE, Shuffle.GLOBAL, Shuffle.PARTIAL,
|
|
95
|
+
Shuffle.FILES, Shuffle.INFILE):
|
|
96
|
+
raise RuntimeError("The input parameter shuffle: {} is not valid.".format(shuffle))
|
|
43
97
|
|
|
44
98
|
if input_sampler is not None:
|
|
45
99
|
# If the user provided a sampler, then it doesn't matter what the other args are because
|
|
@@ -65,23 +119,14 @@ def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
|
|
|
65
119
|
if isinstance(input_sampler, int):
|
|
66
120
|
return SubsetSampler([input_sampler])
|
|
67
121
|
raise TypeError('Unsupported sampler object of type ({})'.format(type(input_sampler)))
|
|
68
|
-
if shuffle is
|
|
69
|
-
if num_shards is not None:
|
|
70
|
-
# If shuffle is not specified, sharding enabled, use distributed random sampler
|
|
71
|
-
shuffle = True
|
|
72
|
-
return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
|
|
73
|
-
# If shuffle is not specified, sharding disabled, use random sampler
|
|
74
|
-
if num_samples is not None and num_samples != 0:
|
|
75
|
-
return RandomSampler(replacement=True, num_samples=num_samples)
|
|
76
|
-
return RandomSampler(num_samples=num_samples)
|
|
77
|
-
if shuffle is True:
|
|
122
|
+
if shuffle is not Shuffle.FALSE:
|
|
78
123
|
if num_shards is not None:
|
|
79
124
|
# If shuffle enabled, sharding enabled, use distributed random sampler
|
|
80
125
|
return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
|
|
81
126
|
# If shuffle enabled, sharding disabled, use random sampler
|
|
82
127
|
if num_samples is not None:
|
|
83
|
-
return RandomSampler(replacement=True, num_samples=num_samples)
|
|
84
|
-
return RandomSampler(num_samples=num_samples)
|
|
128
|
+
return RandomSampler(replacement=True, num_samples=num_samples, shuffle=shuffle)
|
|
129
|
+
return RandomSampler(num_samples=num_samples, shuffle=shuffle)
|
|
85
130
|
if num_shards is not None:
|
|
86
131
|
# If shuffle disabled, sharding enabled, use distributed sequential sampler
|
|
87
132
|
return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
|
|
@@ -108,6 +153,10 @@ class BuiltinSampler:
|
|
|
108
153
|
Add a sub-sampler for given sampler. The parent will receive all data from the
|
|
109
154
|
output of sub-sampler sampler and apply its sample logic to return new samples.
|
|
110
155
|
|
|
156
|
+
Note:
|
|
157
|
+
- If a child sampler is added and it has a shuffle option, its value cannot be ``Shuffle.PARTIAL`` .
|
|
158
|
+
Additionally, the parent sampler's shuffle value must be ``Shuffle.GLOBAL`` .
|
|
159
|
+
|
|
111
160
|
Args:
|
|
112
161
|
sampler (Sampler): Object used to choose samples from the dataset. Only builtin
|
|
113
162
|
samplers(:class:`mindspore.dataset.DistributedSampler` ,
|
|
@@ -125,6 +174,15 @@ class BuiltinSampler:
|
|
|
125
174
|
"""
|
|
126
175
|
if self.child_sampler is not None:
|
|
127
176
|
raise RuntimeError("Cannot add child sampler, this sampler already has a child.")
|
|
177
|
+
|
|
178
|
+
if sampler is not None and sampler.get_shuffle_mode() == Shuffle.PARTIAL:
|
|
179
|
+
raise RuntimeError("When multiple samplers are used, ensure that the shuffle of the input sampler "
|
|
180
|
+
"must not be Shuffle.PARTIAL.")
|
|
181
|
+
|
|
182
|
+
if self.get_shuffle_mode() != Shuffle.GLOBAL and self.get_shuffle_mode() != Shuffle.FALSE:
|
|
183
|
+
raise RuntimeError("When multiple samplers are used, ensure that the shuffle of the current sampler "
|
|
184
|
+
"must be Shuffle.FALSE or Shuffle.GLOBAL, but got: {}.".format(self.get_shuffle_mode()))
|
|
185
|
+
|
|
128
186
|
self.child_sampler = sampler
|
|
129
187
|
|
|
130
188
|
def get_child(self):
|
|
@@ -227,6 +285,10 @@ class BuiltinSampler:
|
|
|
227
285
|
|
|
228
286
|
return self.num_samples
|
|
229
287
|
|
|
288
|
+
def get_shuffle_mode(self):
|
|
289
|
+
""" Not implemented. """
|
|
290
|
+
return Shuffle.FALSE
|
|
291
|
+
|
|
230
292
|
|
|
231
293
|
class Sampler(BuiltinSampler):
|
|
232
294
|
"""
|
|
@@ -253,6 +315,9 @@ class Sampler(BuiltinSampler):
|
|
|
253
315
|
self.dataset_size = 0
|
|
254
316
|
self.child_sampler = None
|
|
255
317
|
self.num_samples = num_samples
|
|
318
|
+
if self.num_samples is None and hasattr(self, '__len__'):
|
|
319
|
+
self.num_samples = len(self)
|
|
320
|
+
self.batch_sizes = []
|
|
256
321
|
|
|
257
322
|
def __iter__(self):
|
|
258
323
|
"""
|
|
@@ -268,27 +333,42 @@ class Sampler(BuiltinSampler):
|
|
|
268
333
|
|
|
269
334
|
# Initialization handshake callback
|
|
270
335
|
# Do not override this method!
|
|
271
|
-
def _handshake(self, ds_size
|
|
336
|
+
def _handshake(self, ds_size):
|
|
272
337
|
self.dataset_size = ds_size
|
|
273
|
-
self.num_samples = num_samples
|
|
274
338
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
339
|
+
def get_indices(self):
|
|
340
|
+
"""
|
|
341
|
+
Get the indices of the sampler.
|
|
342
|
+
|
|
343
|
+
Do not override this method!
|
|
344
|
+
"""
|
|
280
345
|
ret = []
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
346
|
+
batch_sizes = []
|
|
347
|
+
for count, idx in enumerate(self):
|
|
348
|
+
# The idx can be either a number (for sampler) or a list (for batch sampler).
|
|
349
|
+
# If number, we convert it to list first. So they can be handled in the same way.
|
|
350
|
+
if isinstance(idx, numbers.Number):
|
|
351
|
+
idx = [idx]
|
|
352
|
+
# normal sampler does not have batch sizes
|
|
353
|
+
batch_sizes.append(0)
|
|
354
|
+
else:
|
|
355
|
+
# Using extend instead of append will flatten the list, so we need to save the
|
|
356
|
+
# batch size information here.
|
|
357
|
+
batch_sizes.append(len(idx))
|
|
358
|
+
ret.extend(idx)
|
|
359
|
+
if self.num_samples is not None and count + 1 >= self.num_samples:
|
|
286
360
|
break
|
|
361
|
+
self.batch_sizes.append(batch_sizes)
|
|
287
362
|
indices = np.array(ret)
|
|
288
363
|
if indices.dtype == object:
|
|
289
364
|
raise RuntimeError("Fetched indices can not be converted to a valid ndarray.")
|
|
290
365
|
return indices
|
|
291
366
|
|
|
367
|
+
def _get_batch_sizes(self):
|
|
368
|
+
if not self.batch_sizes:
|
|
369
|
+
return []
|
|
370
|
+
return self.batch_sizes.pop(0)
|
|
371
|
+
|
|
292
372
|
# Instance fetcher
|
|
293
373
|
# Do not override this method!
|
|
294
374
|
def parse(self):
|
|
@@ -325,20 +405,71 @@ class Sampler(BuiltinSampler):
|
|
|
325
405
|
return self.child_sampler.is_sharded()
|
|
326
406
|
|
|
327
407
|
def get_num_samples(self):
|
|
328
|
-
if self.num_samples is None:
|
|
329
|
-
return
|
|
330
|
-
|
|
408
|
+
if self.num_samples is not None:
|
|
409
|
+
return self.num_samples
|
|
410
|
+
# deepcopy self to avoid changing the random state
|
|
411
|
+
fake_sampler = copy.deepcopy(self)
|
|
412
|
+
fake_sampler.get_indices()
|
|
413
|
+
return len(fake_sampler.batch_sizes[-1])
|
|
331
414
|
|
|
332
415
|
|
|
333
416
|
class DistributedSampler(BuiltinSampler):
|
|
334
417
|
"""
|
|
335
418
|
A sampler that accesses a shard of the dataset, it helps divide dataset into multi-subset for distributed training.
|
|
336
419
|
|
|
420
|
+
Note:
|
|
421
|
+
The shuffling modes supported for different datasets are as follows:
|
|
422
|
+
|
|
423
|
+
.. list-table:: List of support for shuffling mode
|
|
424
|
+
:widths: 50 50 50 50
|
|
425
|
+
:header-rows: 1
|
|
426
|
+
|
|
427
|
+
* - Shuffling Mode
|
|
428
|
+
- MindDataset
|
|
429
|
+
- TFRecordDataset
|
|
430
|
+
- Others
|
|
431
|
+
* - ``Shuffle.ADAPTIVE``
|
|
432
|
+
- Supported
|
|
433
|
+
- Not Supported
|
|
434
|
+
- Not Supported
|
|
435
|
+
* - ``Shuffle.GLOBAL``
|
|
436
|
+
- Supported
|
|
437
|
+
- Supported
|
|
438
|
+
- Supported
|
|
439
|
+
* - ``Shuffle.PARTIAL``
|
|
440
|
+
- Supported
|
|
441
|
+
- Not Supported
|
|
442
|
+
- Not Supported
|
|
443
|
+
* - ``Shuffle.FILES``
|
|
444
|
+
- Supported
|
|
445
|
+
- Supported
|
|
446
|
+
- Not Supported
|
|
447
|
+
* - ``Shuffle.INFILE``
|
|
448
|
+
- Supported
|
|
449
|
+
- Not Supported
|
|
450
|
+
- Not Supported
|
|
451
|
+
|
|
337
452
|
Args:
|
|
338
453
|
num_shards (int): Number of shards to divide the dataset into.
|
|
339
454
|
shard_id (int): Shard ID of the current shard, which should within the range of [0, `num_shards` - 1].
|
|
340
|
-
shuffle (bool, optional):
|
|
341
|
-
Default: ``True
|
|
455
|
+
shuffle (Union[bool, Shuffle], optional): Specify the shuffle mode.
|
|
456
|
+
Default: ``True``, performs ``mindspore.dataset.Shuffle.GLOBAL`` . If `shuffle` is ``False`` ,
|
|
457
|
+
no shuffling will be performed.
|
|
458
|
+
There are several levels of shuffling, desired shuffle enum defined by :class:`mindspore.dataset.Shuffle` .
|
|
459
|
+
|
|
460
|
+
- ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
|
|
461
|
+
``Shuffle.GLOBAL`` is used. When the number of dataset samples is greater than 100
|
|
462
|
+
million, ``Shuffle.PARTIAL`` is used. The shuffle is performed once every 1 million samples.
|
|
463
|
+
|
|
464
|
+
- ``Shuffle.GLOBAL`` : Global shuffle of all rows of data in dataset. The memory usage is large.
|
|
465
|
+
|
|
466
|
+
- ``Shuffle.PARTIAL`` : Partial shuffle of data in dataset for every 1 million samples.
|
|
467
|
+
The memory usage is less than ``Shuffle.GLOBAL`` .
|
|
468
|
+
|
|
469
|
+
- ``Shuffle.FILES`` : Shuffle the file sequence but keep the order of data within each file.
|
|
470
|
+
|
|
471
|
+
- ``Shuffle.INFILE`` : Keep the file sequence the same but shuffle the data within each file.
|
|
472
|
+
|
|
342
473
|
num_samples (int, optional): The number of samples to draw. Default: ``None``, which means sample all elements.
|
|
343
474
|
offset(int, optional): The starting shard ID where the elements in the dataset are sent to, which
|
|
344
475
|
should be no more than `num_shards` . This parameter is only valid when a ConcatDataset takes
|
|
@@ -348,7 +479,7 @@ class DistributedSampler(BuiltinSampler):
|
|
|
348
479
|
Raises:
|
|
349
480
|
TypeError: If `num_shards` is not of type int.
|
|
350
481
|
TypeError: If `shard_id` is not of type int.
|
|
351
|
-
TypeError: If `shuffle` is not of type bool.
|
|
482
|
+
TypeError: If `shuffle` is not of type bool or Shuffle.
|
|
352
483
|
TypeError: If `num_samples` is not of type int.
|
|
353
484
|
TypeError: If `offset` is not of type int.
|
|
354
485
|
ValueError: If `num_samples` is a negative value.
|
|
@@ -372,8 +503,9 @@ class DistributedSampler(BuiltinSampler):
|
|
|
372
503
|
if not isinstance(shard_id, int):
|
|
373
504
|
raise TypeError("shard_id must be integer but was: {}.".format(shard_id))
|
|
374
505
|
|
|
375
|
-
if not isinstance(shuffle, bool)
|
|
376
|
-
|
|
506
|
+
if not isinstance(shuffle, bool) and shuffle not in (Shuffle.FALSE, Shuffle.ADAPTIVE, Shuffle.GLOBAL,
|
|
507
|
+
Shuffle.PARTIAL, Shuffle.FILES, Shuffle.INFILE):
|
|
508
|
+
raise TypeError("shuffle must be a boolean value or valid shuffle mode but was: {}.".format(shuffle))
|
|
377
509
|
|
|
378
510
|
if num_samples is not None:
|
|
379
511
|
if not isinstance(num_samples, int):
|
|
@@ -387,7 +519,11 @@ class DistributedSampler(BuiltinSampler):
|
|
|
387
519
|
|
|
388
520
|
self.num_shards = num_shards
|
|
389
521
|
self.shard_id = shard_id
|
|
522
|
+
|
|
523
|
+
if isinstance(shuffle, bool):
|
|
524
|
+
shuffle = Shuffle.GLOBAL if shuffle is True else Shuffle.FALSE
|
|
390
525
|
self.shuffle = shuffle
|
|
526
|
+
|
|
391
527
|
# get seed in distributed scenario
|
|
392
528
|
# Example 1. if user set seeds by ds.config.set_seed(4321), then seed 4321 is used
|
|
393
529
|
# Example 2. if user does not set the seed, then existing or default seed (like 5489) is used
|
|
@@ -399,11 +535,18 @@ class DistributedSampler(BuiltinSampler):
|
|
|
399
535
|
""" Parse the sampler."""
|
|
400
536
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
401
537
|
shuffle = self.shuffle if self.shuffle is not None else True
|
|
538
|
+
|
|
539
|
+
if isinstance(shuffle, bool):
|
|
540
|
+
shuffle = Shuffle.GLOBAL if shuffle else Shuffle.FALSE
|
|
541
|
+
|
|
542
|
+
if shuffle not in (Shuffle.FALSE, Shuffle.GLOBAL):
|
|
543
|
+
raise RuntimeError("The shuffle mode: {} is not supported with current dataset.".format(self.shuffle))
|
|
544
|
+
|
|
402
545
|
offset = self.offset if self.offset is not None else -1
|
|
403
546
|
# each time user calls create_dict_iterator() (to do repeat) sampler would get a different seed to shuffle
|
|
404
547
|
self.seed += 1
|
|
405
548
|
c_sampler = cde.DistributedSamplerObj(self.num_shards, self.shard_id,
|
|
406
|
-
shuffle, num_samples, self.seed, offset, True)
|
|
549
|
+
shuffle_to_shuffle_mode(shuffle), num_samples, self.seed, offset, True)
|
|
407
550
|
c_child_sampler = self.parse_child()
|
|
408
551
|
c_sampler.add_child(c_child_sampler)
|
|
409
552
|
return c_sampler
|
|
@@ -412,7 +555,14 @@ class DistributedSampler(BuiltinSampler):
|
|
|
412
555
|
""" Parse the sampler for MindRecord."""
|
|
413
556
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
414
557
|
shuffle = self.shuffle if self.shuffle is not None else True
|
|
415
|
-
|
|
558
|
+
|
|
559
|
+
# convert shuffle=True to Shuffle.ADAPTIVE, convert shuffle=False to Shuffle.FALSE
|
|
560
|
+
if isinstance(shuffle, bool):
|
|
561
|
+
if shuffle:
|
|
562
|
+
shuffle = Shuffle.ADAPTIVE
|
|
563
|
+
else:
|
|
564
|
+
shuffle = Shuffle.FALSE
|
|
565
|
+
c_sampler = cde.MindrecordDistributedSampler(self.num_shards, self.shard_id, shuffle_to_shuffle_mode(shuffle),
|
|
416
566
|
self.seed, num_samples, self.offset)
|
|
417
567
|
c_child_sampler = self.parse_child_for_minddataset()
|
|
418
568
|
c_sampler.add_child(c_child_sampler)
|
|
@@ -421,7 +571,9 @@ class DistributedSampler(BuiltinSampler):
|
|
|
421
571
|
|
|
422
572
|
def is_shuffled(self):
|
|
423
573
|
if self.child_sampler is None:
|
|
424
|
-
|
|
574
|
+
if self.shuffle == Shuffle.FALSE:
|
|
575
|
+
return False
|
|
576
|
+
return True
|
|
425
577
|
|
|
426
578
|
return self.child_sampler.is_shuffled()
|
|
427
579
|
|
|
@@ -435,6 +587,10 @@ class DistributedSampler(BuiltinSampler):
|
|
|
435
587
|
self.offset = offset
|
|
436
588
|
return self
|
|
437
589
|
|
|
590
|
+
def get_shuffle_mode(self):
|
|
591
|
+
"""Get the shuffle mode"""
|
|
592
|
+
return self.shuffle
|
|
593
|
+
|
|
438
594
|
|
|
439
595
|
class PKSampler(BuiltinSampler):
|
|
440
596
|
"""
|
|
@@ -523,19 +679,72 @@ class PKSampler(BuiltinSampler):
|
|
|
523
679
|
c_sampler.set_num_samples(num_samples)
|
|
524
680
|
return c_sampler
|
|
525
681
|
|
|
682
|
+
def get_shuffle_mode(self):
|
|
683
|
+
"""Get the shuffle mode"""
|
|
684
|
+
return Shuffle.FALSE
|
|
685
|
+
|
|
526
686
|
|
|
527
687
|
class RandomSampler(BuiltinSampler):
|
|
528
688
|
"""
|
|
529
689
|
Samples the elements randomly.
|
|
530
690
|
|
|
691
|
+
Note:
|
|
692
|
+
The shuffling modes supported for different datasets are as follows:
|
|
693
|
+
|
|
694
|
+
.. list-table:: List of support for shuffling mode
|
|
695
|
+
:widths: 50 50 50 50
|
|
696
|
+
:header-rows: 1
|
|
697
|
+
|
|
698
|
+
* - Shuffling Mode
|
|
699
|
+
- MindDataset
|
|
700
|
+
- TFRecordDataset
|
|
701
|
+
- Others
|
|
702
|
+
* - ``Shuffle.ADAPTIVE``
|
|
703
|
+
- Supported
|
|
704
|
+
- Not Supported
|
|
705
|
+
- Not Supported
|
|
706
|
+
* - ``Shuffle.GLOBAL``
|
|
707
|
+
- Supported
|
|
708
|
+
- Supported
|
|
709
|
+
- Supported
|
|
710
|
+
* - ``Shuffle.PARTIAL``
|
|
711
|
+
- Supported
|
|
712
|
+
- Not Supported
|
|
713
|
+
- Not Supported
|
|
714
|
+
* - ``Shuffle.FILES``
|
|
715
|
+
- Supported
|
|
716
|
+
- Supported
|
|
717
|
+
- Not Supported
|
|
718
|
+
* - ``Shuffle.INFILE``
|
|
719
|
+
- Supported
|
|
720
|
+
- Not Supported
|
|
721
|
+
- Not Supported
|
|
722
|
+
|
|
531
723
|
Args:
|
|
532
724
|
replacement (bool, optional): If True, put the sample ID back for the next draw. Default: ``False``.
|
|
533
725
|
num_samples (int, optional): Number of elements to sample. Default: ``None`` , which means sample all elements.
|
|
726
|
+
shuffle (Shuffle, optional): Specify the shuffle mode.
|
|
727
|
+
Default: ``Shuffle.GLOBAL``, Global shuffle of all rows of data in dataset.
|
|
728
|
+
There are several levels of shuffling, desired shuffle enum defined by :class:`mindspore.dataset.Shuffle` .
|
|
729
|
+
|
|
730
|
+
- ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
|
|
731
|
+
``Shuffle.GLOBAL`` is used. When the number of dataset samples is greater than 100
|
|
732
|
+
million, ``Shuffle.PARTIAL`` is used. The shuffle is performed once every 1 million samples.
|
|
733
|
+
|
|
734
|
+
- ``Shuffle.GLOBAL`` : Global shuffle of all rows of data in dataset. The memory usage is large.
|
|
735
|
+
|
|
736
|
+
- ``Shuffle.PARTIAL`` : Partial shuffle of data in dataset for every 1 million samples.
|
|
737
|
+
The memory usage is less than ``Shuffle.GLOBAL`` .
|
|
738
|
+
|
|
739
|
+
- ``Shuffle.FILES`` : Shuffle the file sequence but keep the order of data within each file.
|
|
740
|
+
|
|
741
|
+
- ``Shuffle.INFILE`` : Keep the file sequence the same but shuffle the data within each file.
|
|
534
742
|
|
|
535
743
|
Raises:
|
|
536
744
|
TypeError: If `replacement` is not of type bool.
|
|
537
745
|
TypeError: If `num_samples` is not of type int.
|
|
538
746
|
ValueError: If `num_samples` is a negative value.
|
|
747
|
+
TypeError: If `shuffle` is not of type Shuffle.
|
|
539
748
|
|
|
540
749
|
Examples:
|
|
541
750
|
>>> import mindspore.dataset as ds
|
|
@@ -546,7 +755,7 @@ class RandomSampler(BuiltinSampler):
|
|
|
546
755
|
... sampler=sampler)
|
|
547
756
|
"""
|
|
548
757
|
|
|
549
|
-
def __init__(self, replacement=False, num_samples=None):
|
|
758
|
+
def __init__(self, replacement=False, num_samples=None, shuffle=Shuffle.GLOBAL):
|
|
550
759
|
if not isinstance(replacement, bool):
|
|
551
760
|
raise TypeError("replacement must be a boolean value but was: {}.".format(replacement))
|
|
552
761
|
|
|
@@ -557,6 +766,10 @@ class RandomSampler(BuiltinSampler):
|
|
|
557
766
|
raise ValueError("num_samples exceeds the boundary between {} and {}(INT64_MAX)!"
|
|
558
767
|
.format(0, validator.INT64_MAX))
|
|
559
768
|
|
|
769
|
+
if shuffle not in (Shuffle.ADAPTIVE, Shuffle.GLOBAL, Shuffle.PARTIAL, Shuffle.FILES, Shuffle.INFILE):
|
|
770
|
+
raise TypeError("shuffle must be valid shuffle mode but was: {}.".format(shuffle))
|
|
771
|
+
self.shuffle = shuffle
|
|
772
|
+
|
|
560
773
|
self.deterministic = False
|
|
561
774
|
self.replacement = replacement
|
|
562
775
|
self.reshuffle_each_epoch = True
|
|
@@ -566,7 +779,11 @@ class RandomSampler(BuiltinSampler):
|
|
|
566
779
|
""" Parse the sampler."""
|
|
567
780
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
568
781
|
replacement = self.replacement if self.replacement is not None else False
|
|
569
|
-
|
|
782
|
+
# convert shuffle=True to Shuffle.GLOBAL, convert shuffle=False to Shuffle.FALSE
|
|
783
|
+
if self.shuffle is not Shuffle.GLOBAL:
|
|
784
|
+
raise RuntimeError("The shuffle mode: {} is not supported with current dataset.".format(self.shuffle))
|
|
785
|
+
c_sampler = cde.RandomSamplerObj(replacement, num_samples, self.reshuffle_each_epoch,
|
|
786
|
+
shuffle_to_shuffle_mode(self.shuffle))
|
|
570
787
|
c_child_sampler = self.parse_child()
|
|
571
788
|
c_sampler.add_child(c_child_sampler)
|
|
572
789
|
return c_sampler
|
|
@@ -574,7 +791,15 @@ class RandomSampler(BuiltinSampler):
|
|
|
574
791
|
def parse_for_minddataset(self):
|
|
575
792
|
"""Parse the sampler for MindRecord."""
|
|
576
793
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
577
|
-
|
|
794
|
+
shuffle = self.shuffle if self.shuffle is not None else True
|
|
795
|
+
# convert shuffle=True to Shuffle.ADAPTIVE, convert shuffle=False to Shuffle.FALSE
|
|
796
|
+
if isinstance(shuffle, bool):
|
|
797
|
+
if shuffle:
|
|
798
|
+
shuffle = Shuffle.ADAPTIVE
|
|
799
|
+
else:
|
|
800
|
+
raise RuntimeError("The shuffle: False is invalid for RandomSampler.")
|
|
801
|
+
c_sampler = cde.MindrecordRandomSampler(num_samples, self.replacement, self.reshuffle_each_epoch,
|
|
802
|
+
shuffle_to_shuffle_mode(shuffle))
|
|
578
803
|
c_child_sampler = self.parse_child_for_minddataset()
|
|
579
804
|
c_sampler.add_child(c_child_sampler)
|
|
580
805
|
c_sampler.set_num_samples(num_samples)
|
|
@@ -589,6 +814,10 @@ class RandomSampler(BuiltinSampler):
|
|
|
589
814
|
|
|
590
815
|
return self.child_sampler.is_sharded()
|
|
591
816
|
|
|
817
|
+
def get_shuffle_mode(self):
|
|
818
|
+
"""Get the shuffle mode"""
|
|
819
|
+
return self.shuffle
|
|
820
|
+
|
|
592
821
|
|
|
593
822
|
class SequentialSampler(BuiltinSampler):
|
|
594
823
|
"""
|
|
@@ -658,6 +887,10 @@ class SequentialSampler(BuiltinSampler):
|
|
|
658
887
|
|
|
659
888
|
return self.child_sampler.is_sharded()
|
|
660
889
|
|
|
890
|
+
def get_shuffle_mode(self):
|
|
891
|
+
"""Get the shuffle mode"""
|
|
892
|
+
return Shuffle.FALSE
|
|
893
|
+
|
|
661
894
|
|
|
662
895
|
class SubsetSampler(BuiltinSampler):
|
|
663
896
|
"""
|
|
@@ -747,6 +980,10 @@ class SubsetSampler(BuiltinSampler):
|
|
|
747
980
|
|
|
748
981
|
return min(len(self.indices), num_samples)
|
|
749
982
|
|
|
983
|
+
def get_shuffle_mode(self):
|
|
984
|
+
"""Get the shuffle mode"""
|
|
985
|
+
return Shuffle.FALSE
|
|
986
|
+
|
|
750
987
|
|
|
751
988
|
class SubsetRandomSampler(SubsetSampler):
|
|
752
989
|
"""
|
|
@@ -789,6 +1026,10 @@ class SubsetRandomSampler(SubsetSampler):
|
|
|
789
1026
|
c_sampler.set_num_samples(self.get_num_samples())
|
|
790
1027
|
return c_sampler
|
|
791
1028
|
|
|
1029
|
+
def get_shuffle_mode(self):
|
|
1030
|
+
"""Get the shuffle mode"""
|
|
1031
|
+
return Shuffle.GLOBAL
|
|
1032
|
+
|
|
792
1033
|
|
|
793
1034
|
class IterSampler(Sampler):
|
|
794
1035
|
"""
|
|
@@ -817,8 +1058,8 @@ class IterSampler(Sampler):
|
|
|
817
1058
|
"""
|
|
818
1059
|
|
|
819
1060
|
def __init__(self, sampler, num_samples=None):
|
|
820
|
-
if num_samples is None:
|
|
821
|
-
num_samples = len(
|
|
1061
|
+
if num_samples is None and hasattr(sampler, '__len__'):
|
|
1062
|
+
num_samples = len(sampler)
|
|
822
1063
|
super().__init__(num_samples=num_samples)
|
|
823
1064
|
self.sampler = sampler
|
|
824
1065
|
|
|
@@ -832,8 +1073,9 @@ class WeightedRandomSampler(BuiltinSampler):
|
|
|
832
1073
|
|
|
833
1074
|
Args:
|
|
834
1075
|
weights (list[float, int]): A sequence of weights, not necessarily summing up to 1.
|
|
835
|
-
num_samples (int, optional): Number of elements to sample. Default: ``None`` ,
|
|
836
|
-
|
|
1076
|
+
num_samples (int, optional): Number of elements to sample. Default: ``None`` ,
|
|
1077
|
+
which means sample all elements.
|
|
1078
|
+
replacement (bool, optional): If ``True``, put the sample ID back for the next draw. Default: ``True``.
|
|
837
1079
|
|
|
838
1080
|
Raises:
|
|
839
1081
|
TypeError: If elements of `weights` are not of type number.
|
|
@@ -893,3 +1135,7 @@ class WeightedRandomSampler(BuiltinSampler):
|
|
|
893
1135
|
return False
|
|
894
1136
|
|
|
895
1137
|
return self.child_sampler.is_sharded()
|
|
1138
|
+
|
|
1139
|
+
def get_shuffle_mode(self):
|
|
1140
|
+
"""Get the shuffle mode"""
|
|
1141
|
+
return Shuffle.GLOBAL
|
|
@@ -63,12 +63,13 @@ def serialize(dataset, json_filepath=""):
|
|
|
63
63
|
|
|
64
64
|
def deserialize(input_dict=None, json_filepath=None):
|
|
65
65
|
"""
|
|
66
|
-
|
|
66
|
+
Deserialize the data processing pipeline, the api accepts a Python dictionary or
|
|
67
|
+
a JSON file generated by :func:`mindspore.dataset.serialize`.
|
|
67
68
|
|
|
68
69
|
Args:
|
|
69
70
|
input_dict (dict): A Python dictionary containing a serialized dataset graph. Default: ``None``.
|
|
70
71
|
json_filepath (str): A path to the JSON file containing dataset graph.
|
|
71
|
-
User can obtain this file by calling API
|
|
72
|
+
User can obtain this file by calling API :func:`mindspore.dataset.serialize` . Default: ``None``.
|
|
72
73
|
|
|
73
74
|
Returns:
|
|
74
75
|
de.Dataset or None if error occurs.
|