mindspore 2.4.0__cp311-cp311-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 -0
- mindspore/ConcurrencyCheck.dll +0 -0
- mindspore/CppBuildInsights.dll +0 -0
- mindspore/CppCoreCheck.dll +0 -0
- mindspore/EnumIndex.dll +0 -0
- mindspore/EspXEngine.dll +0 -0
- mindspore/HResultCheck.dll +0 -0
- mindspore/KernelTraceControl.dll +0 -0
- mindspore/LocalESPC.dll +0 -0
- mindspore/Microsoft.Diagnostics.Tracing.EventSource.dll +0 -0
- mindspore/Microsoft.VisualStudio.RemoteControl.dll +0 -0
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Microsoft.VisualStudio.Utilities.Internal.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- mindspore/VariantClear.dll +0 -0
- mindspore/__init__.py +53 -0
- mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +106 -0
- mindspore/_checkparam.py +1419 -0
- mindspore/_extends/__init__.py +23 -0
- mindspore/_extends/builtin_operations.py +224 -0
- mindspore/_extends/graph_kernel/__init__.py +17 -0
- mindspore/_extends/graph_kernel/model/__init__.py +19 -0
- mindspore/_extends/graph_kernel/model/graph_parallel.py +311 -0
- mindspore/_extends/graph_kernel/model/graph_split.py +1348 -0
- mindspore/_extends/graph_kernel/model/model.py +553 -0
- mindspore/_extends/graph_kernel/model/model_builder.py +216 -0
- mindspore/_extends/graph_kernel/parallel_estimate.py +60 -0
- mindspore/_extends/graph_kernel/splitter.py +140 -0
- mindspore/_extends/graph_kernel/utils.py +28 -0
- mindspore/_extends/parallel_compile/__init__.py +19 -0
- mindspore/_extends/parallel_compile/akg_compiler/__init__.py +19 -0
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +269 -0
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +529 -0
- mindspore/_extends/parallel_compile/akg_compiler/compiler.py +56 -0
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +96 -0
- mindspore/_extends/parallel_compile/akg_compiler/get_file_path.py +36 -0
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +556 -0
- mindspore/_extends/parallel_compile/akg_compiler/util.py +159 -0
- mindspore/_extends/parse/__init__.py +49 -0
- mindspore/_extends/parse/compile_config.py +299 -0
- mindspore/_extends/parse/namespace.py +136 -0
- mindspore/_extends/parse/parser.py +1448 -0
- mindspore/_extends/parse/resources.py +213 -0
- mindspore/_extends/parse/standard_method.py +4475 -0
- mindspore/_extends/parse/trope.py +97 -0
- mindspore/_extends/pijit/__init__.py +23 -0
- mindspore/_extends/pijit/pijit_func_white_list.py +669 -0
- mindspore/_extends/remote/__init__.py +19 -0
- mindspore/_extends/remote/kernel_build_server.py +199 -0
- mindspore/_extends/remote/kernel_build_server_akg.py +55 -0
- mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
- mindspore/_extends/remote/kernel_build_server_ascend.py +75 -0
- mindspore/_extends/utils.py +68 -0
- mindspore/_install_custom.py +43 -0
- mindspore/_profiler.py +30 -0
- mindspore/amp.py +433 -0
- 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 +42 -0
- mindspore/boost/adasum.py +319 -0
- mindspore/boost/base.py +535 -0
- mindspore/boost/boost.py +400 -0
- mindspore/boost/boost_cell_wrapper.py +790 -0
- mindspore/boost/dim_reduce.py +323 -0
- mindspore/boost/grad_accumulation.py +79 -0
- mindspore/boost/grad_freeze.py +382 -0
- mindspore/boost/group_loss_scale_manager.py +166 -0
- mindspore/boost/less_batch_normalization.py +174 -0
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/cfgpersist.dll +0 -0
- mindspore/clang_rt.asan_dbg_dynamic-x86_64.dll +0 -0
- mindspore/clang_rt.asan_dynamic-x86_64.dll +0 -0
- mindspore/common/__init__.py +86 -0
- mindspore/common/_auto_dynamic.py +68 -0
- mindspore/common/_decorator.py +50 -0
- mindspore/common/_jit_fallback_utils.py +110 -0
- mindspore/common/_monad.py +25 -0
- mindspore/common/_pijit_context.py +190 -0
- mindspore/common/_register_for_adapter.py +74 -0
- mindspore/common/_register_for_recompute.py +48 -0
- mindspore/common/_register_for_tensor.py +46 -0
- mindspore/common/_stub_tensor.py +210 -0
- mindspore/common/_tensor_overload.py +139 -0
- mindspore/common/_utils.py +122 -0
- mindspore/common/api.py +2064 -0
- mindspore/common/auto_dynamic_shape.py +507 -0
- mindspore/common/dtype.py +422 -0
- mindspore/common/dump.py +130 -0
- mindspore/common/file_system.py +48 -0
- mindspore/common/generator.py +254 -0
- mindspore/common/hook_handle.py +143 -0
- mindspore/common/initializer.py +880 -0
- mindspore/common/jit_config.py +98 -0
- mindspore/common/lazy_inline.py +240 -0
- mindspore/common/mindir_util.py +111 -0
- mindspore/common/mutable.py +234 -0
- mindspore/common/no_inline.py +54 -0
- mindspore/common/np_dtype.py +25 -0
- mindspore/common/parameter.py +1081 -0
- mindspore/common/recompute.py +292 -0
- mindspore/common/seed.py +260 -0
- mindspore/common/sparse_tensor.py +1175 -0
- mindspore/common/symbol.py +122 -0
- mindspore/common/tensor.py +5039 -0
- mindspore/communication/__init__.py +37 -0
- mindspore/communication/_comm_helper.py +501 -0
- mindspore/communication/_hccl_management.py +297 -0
- mindspore/communication/comm_func.py +1395 -0
- mindspore/communication/management.py +673 -0
- mindspore/config/op_info.config +533 -0
- mindspore/context.py +2077 -0
- mindspore/d3dcompiler_47.dll +0 -0
- mindspore/dataset/__init__.py +90 -0
- mindspore/dataset/audio/__init__.py +61 -0
- mindspore/dataset/audio/transforms.py +3690 -0
- mindspore/dataset/audio/utils.py +386 -0
- mindspore/dataset/audio/validators.py +1172 -0
- mindspore/dataset/callback/__init__.py +20 -0
- mindspore/dataset/callback/ds_callback.py +368 -0
- mindspore/dataset/callback/validators.py +32 -0
- mindspore/dataset/core/__init__.py +13 -0
- mindspore/dataset/core/config.py +1095 -0
- mindspore/dataset/core/datatypes.py +101 -0
- mindspore/dataset/core/py_util_helpers.py +65 -0
- mindspore/dataset/core/validator_helpers.py +781 -0
- mindspore/dataset/debug/__init__.py +21 -0
- mindspore/dataset/debug/debug_hook.py +97 -0
- mindspore/dataset/debug/pre_defined_hook.py +67 -0
- mindspore/dataset/engine/__init__.py +124 -0
- mindspore/dataset/engine/cache_admin.py +47 -0
- mindspore/dataset/engine/cache_client.py +129 -0
- mindspore/dataset/engine/datasets.py +4582 -0
- mindspore/dataset/engine/datasets_audio.py +911 -0
- mindspore/dataset/engine/datasets_standard_format.py +543 -0
- mindspore/dataset/engine/datasets_text.py +2161 -0
- mindspore/dataset/engine/datasets_user_defined.py +1184 -0
- mindspore/dataset/engine/datasets_vision.py +4816 -0
- mindspore/dataset/engine/iterators.py +371 -0
- mindspore/dataset/engine/obs/__init__.py +23 -0
- mindspore/dataset/engine/obs/config_loader.py +68 -0
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +508 -0
- mindspore/dataset/engine/obs/util.py +482 -0
- mindspore/dataset/engine/offload.py +596 -0
- mindspore/dataset/engine/queue.py +304 -0
- mindspore/dataset/engine/samplers.py +895 -0
- mindspore/dataset/engine/serializer_deserializer.py +159 -0
- mindspore/dataset/engine/validators.py +2895 -0
- mindspore/dataset/text/__init__.py +51 -0
- mindspore/dataset/text/transforms.py +1703 -0
- mindspore/dataset/text/utils.py +715 -0
- mindspore/dataset/text/validators.py +642 -0
- mindspore/dataset/transforms/__init__.py +45 -0
- mindspore/dataset/transforms/c_transforms.py +638 -0
- mindspore/dataset/transforms/py_transforms.py +393 -0
- mindspore/dataset/transforms/py_transforms_util.py +255 -0
- mindspore/dataset/transforms/transforms.py +1260 -0
- mindspore/dataset/transforms/validators.py +410 -0
- mindspore/dataset/utils/__init__.py +19 -0
- mindspore/dataset/utils/browse_dataset.py +190 -0
- mindspore/dataset/utils/line_reader.py +126 -0
- mindspore/dataset/vision/__init__.py +65 -0
- mindspore/dataset/vision/c_transforms.py +2641 -0
- mindspore/dataset/vision/py_transforms.py +2120 -0
- mindspore/dataset/vision/py_transforms_util.py +1660 -0
- mindspore/dataset/vision/transforms.py +7295 -0
- mindspore/dataset/vision/utils.py +863 -0
- mindspore/dataset/vision/validators.py +1483 -0
- mindspore/default_config.py +2 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/__init__.py +20 -0
- mindspore/experimental/es/__init__.py +22 -0
- mindspore/experimental/es/embedding_service.py +883 -0
- mindspore/experimental/es/embedding_service_layer.py +581 -0
- mindspore/experimental/llm_boost/__init__.py +21 -0
- mindspore/experimental/llm_boost/atb/__init__.py +23 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +211 -0
- mindspore/experimental/llm_boost/atb/llama_boost.py +115 -0
- mindspore/experimental/llm_boost/atb/qwen_boost.py +101 -0
- mindspore/experimental/llm_boost/register.py +129 -0
- mindspore/experimental/llm_boost/utils.py +31 -0
- mindspore/experimental/map_parameter.py +309 -0
- mindspore/experimental/optim/__init__.py +40 -0
- mindspore/experimental/optim/adadelta.py +161 -0
- mindspore/experimental/optim/adagrad.py +168 -0
- mindspore/experimental/optim/adam.py +193 -0
- mindspore/experimental/optim/adamax.py +170 -0
- mindspore/experimental/optim/adamw.py +290 -0
- mindspore/experimental/optim/asgd.py +153 -0
- mindspore/experimental/optim/lr_scheduler.py +1371 -0
- mindspore/experimental/optim/nadam.py +157 -0
- mindspore/experimental/optim/optimizer.py +262 -0
- mindspore/experimental/optim/radam.py +194 -0
- mindspore/experimental/optim/rmsprop.py +154 -0
- mindspore/experimental/optim/rprop.py +164 -0
- mindspore/experimental/optim/sgd.py +156 -0
- mindspore/hal/__init__.py +40 -0
- mindspore/hal/_ascend.py +57 -0
- mindspore/hal/_base.py +57 -0
- mindspore/hal/_cpu.py +56 -0
- mindspore/hal/_gpu.py +57 -0
- mindspore/hal/contiguous_tensors_handle.py +175 -0
- mindspore/hal/device.py +356 -0
- mindspore/hal/event.py +179 -0
- mindspore/hal/memory.py +326 -0
- mindspore/hal/stream.py +357 -0
- mindspore/include/OWNERS +7 -0
- mindspore/include/api/allocator.h +97 -0
- mindspore/include/api/callback/callback.h +93 -0
- mindspore/include/api/callback/ckpt_saver.h +41 -0
- mindspore/include/api/callback/loss_monitor.h +33 -0
- mindspore/include/api/callback/lr_scheduler.h +51 -0
- mindspore/include/api/callback/time_monitor.h +34 -0
- mindspore/include/api/callback/train_accuracy.h +37 -0
- mindspore/include/api/cell.h +90 -0
- mindspore/include/api/cfg.h +82 -0
- mindspore/include/api/context.h +602 -0
- mindspore/include/api/data_type.h +47 -0
- mindspore/include/api/delegate.h +178 -0
- mindspore/include/api/delegate_api.h +75 -0
- mindspore/include/api/dual_abi_helper.h +208 -0
- mindspore/include/api/format.h +28 -0
- mindspore/include/api/graph.h +46 -0
- mindspore/include/api/kernel.h +58 -0
- mindspore/include/api/kernel_api.h +168 -0
- mindspore/include/api/metrics/accuracy.h +36 -0
- mindspore/include/api/metrics/metrics.h +41 -0
- mindspore/include/api/model.h +438 -0
- mindspore/include/api/model_group.h +91 -0
- mindspore/include/api/model_parallel_runner.h +168 -0
- mindspore/include/api/serialization.h +185 -0
- mindspore/include/api/status.h +192 -0
- mindspore/include/api/types.h +431 -0
- mindspore/include/api/visible.h +41 -0
- mindspore/include/c_api/context_c.h +179 -0
- mindspore/include/c_api/data_type_c.h +52 -0
- mindspore/include/c_api/format_c.h +46 -0
- mindspore/include/c_api/model_c.h +347 -0
- mindspore/include/c_api/status_c.h +79 -0
- mindspore/include/c_api/tensor_c.h +146 -0
- mindspore/include/c_api/types_c.h +67 -0
- mindspore/include/dataset/config.h +163 -0
- mindspore/include/dataset/constants.h +363 -0
- mindspore/include/dataset/execute.h +196 -0
- mindspore/include/dataset/text.h +1092 -0
- mindspore/include/dataset/transforms.h +638 -0
- mindspore/include/dataset/vision.h +2129 -0
- mindspore/include/dataset/vision_ascend.h +206 -0
- mindspore/include/dataset/vision_lite.h +625 -0
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +633 -0
- mindspore/mindrecord/__init__.py +43 -0
- mindspore/mindrecord/common/__init__.py +17 -0
- mindspore/mindrecord/common/constant.py +20 -0
- mindspore/mindrecord/common/enums.py +44 -0
- mindspore/mindrecord/common/exceptions.py +311 -0
- mindspore/mindrecord/config.py +809 -0
- mindspore/mindrecord/filereader.py +174 -0
- mindspore/mindrecord/filewriter.py +722 -0
- mindspore/mindrecord/mindpage.py +210 -0
- mindspore/mindrecord/shardheader.py +141 -0
- mindspore/mindrecord/shardindexgenerator.py +74 -0
- mindspore/mindrecord/shardreader.py +117 -0
- mindspore/mindrecord/shardsegment.py +128 -0
- mindspore/mindrecord/shardutils.py +185 -0
- mindspore/mindrecord/shardwriter.py +237 -0
- mindspore/mindrecord/tools/__init__.py +17 -0
- mindspore/mindrecord/tools/cifar10.py +140 -0
- mindspore/mindrecord/tools/cifar100.py +153 -0
- mindspore/mindrecord/tools/cifar100_to_mr.py +185 -0
- mindspore/mindrecord/tools/cifar10_to_mr.py +177 -0
- mindspore/mindrecord/tools/csv_to_mr.py +200 -0
- mindspore/mindrecord/tools/imagenet_to_mr.py +206 -0
- mindspore/mindrecord/tools/mnist_to_mr.py +259 -0
- mindspore/mindrecord/tools/tfrecord_to_mr.py +360 -0
- 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_np_dtype.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/mint/__init__.py +1586 -0
- mindspore/mint/distributed/__init__.py +31 -0
- mindspore/mint/distributed/distributed.py +254 -0
- mindspore/mint/linalg/__init__.py +22 -0
- mindspore/mint/nn/__init__.py +757 -0
- mindspore/mint/nn/functional.py +679 -0
- mindspore/mint/nn/layer/__init__.py +39 -0
- mindspore/mint/nn/layer/activation.py +133 -0
- mindspore/mint/nn/layer/normalization.py +477 -0
- mindspore/mint/nn/layer/pooling.py +110 -0
- mindspore/mint/optim/__init__.py +24 -0
- mindspore/mint/optim/adamw.py +206 -0
- mindspore/mint/special/__init__.py +63 -0
- 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.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 +73 -0
- mindspore/nn/__init__.py +47 -0
- mindspore/nn/cell.py +2787 -0
- mindspore/nn/dynamic_lr.py +482 -0
- mindspore/nn/grad/__init__.py +21 -0
- mindspore/nn/grad/cell_grad.py +196 -0
- mindspore/nn/layer/__init__.py +63 -0
- mindspore/nn/layer/activation.py +1822 -0
- mindspore/nn/layer/basic.py +1629 -0
- mindspore/nn/layer/channel_shuffle.py +90 -0
- mindspore/nn/layer/combined.py +248 -0
- mindspore/nn/layer/container.py +734 -0
- mindspore/nn/layer/conv.py +1505 -0
- mindspore/nn/layer/dense.py +204 -0
- mindspore/nn/layer/embedding.py +869 -0
- mindspore/nn/layer/image.py +661 -0
- mindspore/nn/layer/math.py +1069 -0
- mindspore/nn/layer/normalization.py +1273 -0
- mindspore/nn/layer/padding.py +880 -0
- mindspore/nn/layer/pooling.py +2302 -0
- mindspore/nn/layer/rnn_cells.py +388 -0
- mindspore/nn/layer/rnns.py +849 -0
- mindspore/nn/layer/thor_layer.py +963 -0
- mindspore/nn/layer/timedistributed.py +155 -0
- mindspore/nn/layer/transformer.py +823 -0
- mindspore/nn/learning_rate_schedule.py +512 -0
- mindspore/nn/loss/__init__.py +36 -0
- mindspore/nn/loss/loss.py +2924 -0
- mindspore/nn/metrics.py +53 -0
- mindspore/nn/optim/__init__.py +45 -0
- mindspore/nn/optim/_dist_optimizer_registry.py +111 -0
- mindspore/nn/optim/ada_grad.py +217 -0
- mindspore/nn/optim/adadelta.py +206 -0
- mindspore/nn/optim/adafactor.py +448 -0
- mindspore/nn/optim/adam.py +1297 -0
- mindspore/nn/optim/adamax.py +220 -0
- mindspore/nn/optim/adasum.py +548 -0
- mindspore/nn/optim/asgd.py +216 -0
- mindspore/nn/optim/ftrl.py +401 -0
- mindspore/nn/optim/lamb.py +296 -0
- mindspore/nn/optim/lars.py +202 -0
- mindspore/nn/optim/lazyadam.py +533 -0
- mindspore/nn/optim/momentum.py +239 -0
- mindspore/nn/optim/optimizer.py +1034 -0
- mindspore/nn/optim/proximal_ada_grad.py +242 -0
- mindspore/nn/optim/rmsprop.py +264 -0
- mindspore/nn/optim/rprop.py +251 -0
- mindspore/nn/optim/sgd.py +237 -0
- mindspore/nn/optim/tft_wrapper.py +127 -0
- mindspore/nn/optim/thor.py +1310 -0
- mindspore/nn/probability/__init__.py +22 -0
- mindspore/nn/probability/bijector/__init__.py +35 -0
- mindspore/nn/probability/bijector/bijector.py +337 -0
- mindspore/nn/probability/bijector/exp.py +65 -0
- mindspore/nn/probability/bijector/gumbel_cdf.py +144 -0
- mindspore/nn/probability/bijector/invert.py +126 -0
- mindspore/nn/probability/bijector/power_transform.py +196 -0
- mindspore/nn/probability/bijector/scalar_affine.py +167 -0
- mindspore/nn/probability/bijector/softplus.py +189 -0
- mindspore/nn/probability/bnn_layers/__init__.py +29 -0
- mindspore/nn/probability/bnn_layers/_util.py +46 -0
- mindspore/nn/probability/bnn_layers/bnn_cell_wrapper.py +112 -0
- mindspore/nn/probability/bnn_layers/conv_variational.py +267 -0
- mindspore/nn/probability/bnn_layers/dense_variational.py +302 -0
- mindspore/nn/probability/bnn_layers/layer_distribution.py +123 -0
- mindspore/nn/probability/distribution/__init__.py +56 -0
- mindspore/nn/probability/distribution/_utils/__init__.py +34 -0
- mindspore/nn/probability/distribution/_utils/custom_ops.py +96 -0
- mindspore/nn/probability/distribution/_utils/utils.py +362 -0
- mindspore/nn/probability/distribution/bernoulli.py +334 -0
- mindspore/nn/probability/distribution/beta.py +391 -0
- mindspore/nn/probability/distribution/categorical.py +435 -0
- mindspore/nn/probability/distribution/cauchy.py +383 -0
- mindspore/nn/probability/distribution/distribution.py +827 -0
- mindspore/nn/probability/distribution/exponential.py +350 -0
- mindspore/nn/probability/distribution/gamma.py +391 -0
- mindspore/nn/probability/distribution/geometric.py +335 -0
- mindspore/nn/probability/distribution/gumbel.py +257 -0
- mindspore/nn/probability/distribution/half_normal.py +133 -0
- mindspore/nn/probability/distribution/laplace.py +128 -0
- mindspore/nn/probability/distribution/log_normal.py +272 -0
- mindspore/nn/probability/distribution/logistic.py +379 -0
- mindspore/nn/probability/distribution/normal.py +336 -0
- mindspore/nn/probability/distribution/poisson.py +288 -0
- mindspore/nn/probability/distribution/student_t.py +149 -0
- mindspore/nn/probability/distribution/transformed_distribution.py +235 -0
- mindspore/nn/probability/distribution/uniform.py +375 -0
- mindspore/nn/reinforcement/__init__.py +24 -0
- mindspore/nn/reinforcement/_batch_read_write.py +142 -0
- mindspore/nn/reinforcement/_tensors_queue.py +152 -0
- mindspore/nn/reinforcement/tensor_array.py +145 -0
- mindspore/nn/sparse/__init__.py +23 -0
- mindspore/nn/sparse/sparse.py +147 -0
- mindspore/nn/wrap/__init__.py +49 -0
- mindspore/nn/wrap/cell_wrapper.py +968 -0
- mindspore/nn/wrap/grad_reducer.py +608 -0
- mindspore/nn/wrap/loss_scale.py +694 -0
- mindspore/numpy/__init__.py +121 -0
- mindspore/numpy/array_creations.py +2731 -0
- mindspore/numpy/array_ops.py +2629 -0
- mindspore/numpy/dtypes.py +185 -0
- mindspore/numpy/fft.py +966 -0
- mindspore/numpy/logic_ops.py +936 -0
- mindspore/numpy/math_ops.py +5911 -0
- mindspore/numpy/utils.py +214 -0
- mindspore/numpy/utils_const.py +565 -0
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +56 -0
- mindspore/ops/_constants.py +30 -0
- mindspore/ops/_grad_experimental/__init__.py +31 -0
- mindspore/ops/_grad_experimental/grad_array_ops.py +830 -0
- mindspore/ops/_grad_experimental/grad_base.py +143 -0
- mindspore/ops/_grad_experimental/grad_comm_ops.py +714 -0
- mindspore/ops/_grad_experimental/grad_debug_ops.py +31 -0
- mindspore/ops/_grad_experimental/grad_implementations.py +203 -0
- mindspore/ops/_grad_experimental/grad_inner_ops.py +79 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +802 -0
- mindspore/ops/_grad_experimental/grad_nn_ops.py +231 -0
- mindspore/ops/_grad_experimental/grad_quant_ops.py +238 -0
- mindspore/ops/_grad_experimental/grad_sparse.py +342 -0
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +399 -0
- mindspore/ops/_grad_experimental/taylor_rule.py +220 -0
- mindspore/ops/_op_impl/__init__.py +23 -0
- mindspore/ops/_op_impl/_custom_op/__init__.py +39 -0
- mindspore/ops/_op_impl/_custom_op/_basic.py +158 -0
- mindspore/ops/_op_impl/_custom_op/batch_matmul_impl.py +279 -0
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold.py +156 -0
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold2.py +109 -0
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad.py +125 -0
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad_reduce.py +105 -0
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold_grad.py +124 -0
- mindspore/ops/_op_impl/_custom_op/cholesky_trsm_impl.py +116 -0
- mindspore/ops/_op_impl/_custom_op/correction_mul.py +89 -0
- mindspore/ops/_op_impl/_custom_op/correction_mul_grad.py +196 -0
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +366 -0
- mindspore/ops/_op_impl/_custom_op/dsd_impl.py +162 -0
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel.py +136 -0
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad.py +206 -0
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad_reduce.py +88 -0
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer.py +128 -0
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad.py +199 -0
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad_reduce.py +88 -0
- mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel.py +156 -0
- mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel_grad.py +184 -0
- mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer.py +143 -0
- mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer_grad.py +169 -0
- mindspore/ops/_op_impl/_custom_op/fused_abs_max1_impl.py +548 -0
- mindspore/ops/_op_impl/_custom_op/img2col_impl.py +881 -0
- mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_left_impl.py +278 -0
- mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_right_impl.py +200 -0
- mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_left_cast_impl.py +334 -0
- mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_right_mul_impl.py +255 -0
- mindspore/ops/_op_impl/_custom_op/matmul_cube_impl.py +222 -0
- mindspore/ops/_op_impl/_custom_op/matmul_dds_grad_impl.py +644 -0
- mindspore/ops/_op_impl/_custom_op/matmul_dds_impl.py +488 -0
- mindspore/ops/_op_impl/_custom_op/matrix_combine_impl.py +87 -0
- mindspore/ops/_op_impl/_custom_op/minmax_update_perchannel.py +129 -0
- mindspore/ops/_op_impl/_custom_op/minmax_update_perlayer.py +121 -0
- mindspore/ops/_op_impl/_custom_op/transpose02314_impl.py +352 -0
- mindspore/ops/_op_impl/aicpu/__init__.py +441 -0
- mindspore/ops/_op_impl/aicpu/abs.py +36 -0
- mindspore/ops/_op_impl/aicpu/acos.py +32 -0
- mindspore/ops/_op_impl/aicpu/acos_grad.py +33 -0
- mindspore/ops/_op_impl/aicpu/acosh.py +34 -0
- mindspore/ops/_op_impl/aicpu/acosh_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d.py +34 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d_grad.py +34 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d.py +39 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d_grad.py +39 -0
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d.py +37 -0
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d_grad.py +37 -0
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d.py +42 -0
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d_grad.py +152 -0
- mindspore/ops/_op_impl/aicpu/add.py +43 -0
- mindspore/ops/_op_impl/aicpu/add_n.py +41 -0
- mindspore/ops/_op_impl/aicpu/add_v2.py +40 -0
- mindspore/ops/_op_impl/aicpu/addcdiv.py +41 -0
- mindspore/ops/_op_impl/aicpu/addcmul.py +47 -0
- mindspore/ops/_op_impl/aicpu/adjust_contrastv2.py +32 -0
- mindspore/ops/_op_impl/aicpu/adjust_hue.py +31 -0
- mindspore/ops/_op_impl/aicpu/adjust_saturation.py +32 -0
- mindspore/ops/_op_impl/aicpu/affine_grid.py +33 -0
- mindspore/ops/_op_impl/aicpu/affine_grid_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/angle.py +31 -0
- mindspore/ops/_op_impl/aicpu/arg_max.py +75 -0
- mindspore/ops/_op_impl/aicpu/arg_min.py +75 -0
- mindspore/ops/_op_impl/aicpu/argmax_with_value.py +43 -0
- mindspore/ops/_op_impl/aicpu/argmin_with_value.py +43 -0
- mindspore/ops/_op_impl/aicpu/asin.py +32 -0
- mindspore/ops/_op_impl/aicpu/asin_grad.py +33 -0
- mindspore/ops/_op_impl/aicpu/asinh.py +34 -0
- mindspore/ops/_op_impl/aicpu/asinh_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/atanh.py +34 -0
- mindspore/ops/_op_impl/aicpu/avgpool_grad_v1.py +37 -0
- mindspore/ops/_op_impl/aicpu/avgpool_v1.py +36 -0
- mindspore/ops/_op_impl/aicpu/bartlett_window.py +36 -0
- mindspore/ops/_op_impl/aicpu/batch_matmul.py +43 -0
- mindspore/ops/_op_impl/aicpu/batch_norm_grad_grad.py +49 -0
- mindspore/ops/_op_impl/aicpu/bernoulli.py +48 -0
- mindspore/ops/_op_impl/aicpu/bessel_i0.py +31 -0
- mindspore/ops/_op_impl/aicpu/betainc.py +31 -0
- mindspore/ops/_op_impl/aicpu/bias_add.py +44 -0
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +42 -0
- mindspore/ops/_op_impl/aicpu/bincount.py +33 -0
- mindspore/ops/_op_impl/aicpu/blackman_window.py +36 -0
- mindspore/ops/_op_impl/aicpu/broadcast_to.py +58 -0
- mindspore/ops/_op_impl/aicpu/bucketize.py +34 -0
- mindspore/ops/_op_impl/aicpu/cache_swap_table.py +102 -0
- mindspore/ops/_op_impl/aicpu/cast.py +225 -0
- mindspore/ops/_op_impl/aicpu/cauchy.py +33 -0
- mindspore/ops/_op_impl/aicpu/channel_shuffle.py +40 -0
- mindspore/ops/_op_impl/aicpu/check_numerics.py +33 -0
- mindspore/ops/_op_impl/aicpu/cholesky.py +32 -0
- mindspore/ops/_op_impl/aicpu/cholesky_inverse.py +31 -0
- mindspore/ops/_op_impl/aicpu/cholesky_solve.py +33 -0
- mindspore/ops/_op_impl/aicpu/choleskygrad.py +32 -0
- mindspore/ops/_op_impl/aicpu/coalesce.py +37 -0
- mindspore/ops/_op_impl/aicpu/col2im.py +38 -0
- mindspore/ops/_op_impl/aicpu/combined_non_max_suppression.py +42 -0
- mindspore/ops/_op_impl/aicpu/compare_and_bitpack.py +37 -0
- mindspore/ops/_op_impl/aicpu/complex.py +32 -0
- mindspore/ops/_op_impl/aicpu/complex_abs.py +31 -0
- mindspore/ops/_op_impl/aicpu/compute_accidental_hits.py +44 -0
- mindspore/ops/_op_impl/aicpu/concat.py +57 -0
- mindspore/ops/_op_impl/aicpu/concat_offset.py +42 -0
- mindspore/ops/_op_impl/aicpu/concat_offset_v1.py +31 -0
- mindspore/ops/_op_impl/aicpu/conj.py +42 -0
- mindspore/ops/_op_impl/aicpu/conjugate_transpose.py +58 -0
- mindspore/ops/_op_impl/aicpu/cos.py +34 -0
- mindspore/ops/_op_impl/aicpu/cosh.py +34 -0
- mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
- mindspore/ops/_op_impl/aicpu/crop_and_resize.py +69 -0
- mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_boxes.py +68 -0
- mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_image.py +38 -0
- mindspore/ops/_op_impl/aicpu/cross.py +42 -0
- mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_dense.py +48 -0
- mindspore/ops/_op_impl/aicpu/csr_sparse_matrix_to_sparse_tensor.py +51 -0
- mindspore/ops/_op_impl/aicpu/ctc_greedy_decoder.py +35 -0
- mindspore/ops/_op_impl/aicpu/ctc_loss_v2.py +43 -0
- mindspore/ops/_op_impl/aicpu/ctc_loss_v2_grad.py +45 -0
- mindspore/ops/_op_impl/aicpu/ctcloss.py +38 -0
- mindspore/ops/_op_impl/aicpu/cummax.py +41 -0
- mindspore/ops/_op_impl/aicpu/cumprod.py +58 -0
- mindspore/ops/_op_impl/aicpu/cumsum.py +58 -0
- mindspore/ops/_op_impl/aicpu/cumulative_logsumexp.py +36 -0
- mindspore/ops/_op_impl/aicpu/data_format_vec_permute.py +32 -0
- 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/dense_to_csr_sparse_matrix.py +49 -0
- mindspore/ops/_op_impl/aicpu/dense_to_dense_set_operation.py +45 -0
- mindspore/ops/_op_impl/aicpu/dense_to_sparse_set_operation.py +48 -0
- mindspore/ops/_op_impl/aicpu/depth_to_space.py +44 -0
- mindspore/ops/_op_impl/aicpu/diag.py +36 -0
- mindspore/ops/_op_impl/aicpu/diag_part.py +36 -0
- mindspore/ops/_op_impl/aicpu/diagonal.py +35 -0
- mindspore/ops/_op_impl/aicpu/digamma.py +31 -0
- mindspore/ops/_op_impl/aicpu/div.py +41 -0
- mindspore/ops/_op_impl/aicpu/div_no_nan.py +35 -0
- mindspore/ops/_op_impl/aicpu/dropout2d.py +42 -0
- mindspore/ops/_op_impl/aicpu/dropout3d.py +42 -0
- mindspore/ops/_op_impl/aicpu/dropout_genmask.py +41 -0
- mindspore/ops/_op_impl/aicpu/dropout_genmask_v3.py +32 -0
- mindspore/ops/_op_impl/aicpu/dynamic_stitch.py +42 -0
- mindspore/ops/_op_impl/aicpu/edit_distance.py +56 -0
- mindspore/ops/_op_impl/aicpu/eig.py +35 -0
- mindspore/ops/_op_impl/aicpu/embedding_lookup.py +102 -0
- mindspore/ops/_op_impl/aicpu/end_of_sequence.py +30 -0
- mindspore/ops/_op_impl/aicpu/environ_create.py +28 -0
- mindspore/ops/_op_impl/aicpu/environ_destroy_all.py +28 -0
- mindspore/ops/_op_impl/aicpu/environ_get.py +41 -0
- mindspore/ops/_op_impl/aicpu/environ_set.py +40 -0
- mindspore/ops/_op_impl/aicpu/eps.py +32 -0
- mindspore/ops/_op_impl/aicpu/equal.py +41 -0
- mindspore/ops/_op_impl/aicpu/exp.py +37 -0
- mindspore/ops/_op_impl/aicpu/expand.py +45 -0
- mindspore/ops/_op_impl/aicpu/expand_dims.py +42 -0
- mindspore/ops/_op_impl/aicpu/expm1.py +34 -0
- mindspore/ops/_op_impl/aicpu/extract_glimpse.py +35 -0
- mindspore/ops/_op_impl/aicpu/eye.py +44 -0
- mindspore/ops/_op_impl/aicpu/fft_with_size.py +47 -0
- mindspore/ops/_op_impl/aicpu/fill_diagonal.py +39 -0
- mindspore/ops/_op_impl/aicpu/fill_v2.py +58 -0
- mindspore/ops/_op_impl/aicpu/flatten.py +43 -0
- mindspore/ops/_op_impl/aicpu/floor_div.py +38 -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_avg_pool.py +41 -0
- mindspore/ops/_op_impl/aicpu/fractional_avg_pool_grad.py +41 -0
- mindspore/ops/_op_impl/aicpu/fractional_max_pool.py +41 -0
- mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_grad_with_fixed_ksize.py +43 -0
- mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_with_fixed_ksize.py +65 -0
- mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad.py +42 -0
- mindspore/ops/_op_impl/aicpu/fractional_max_pool_grad_with_fixed_ksize.py +42 -0
- mindspore/ops/_op_impl/aicpu/fractional_max_pool_with_fixed_ksize.py +49 -0
- mindspore/ops/_op_impl/aicpu/fse_decode.py +43 -0
- mindspore/ops/_op_impl/aicpu/fused_sparse_adam.py +46 -0
- mindspore/ops/_op_impl/aicpu/fused_sparse_ftrl.py +41 -0
- mindspore/ops/_op_impl/aicpu/fused_sparse_lazy_adam.py +46 -0
- mindspore/ops/_op_impl/aicpu/fused_sparse_proximal_adagrad.py +39 -0
- mindspore/ops/_op_impl/aicpu/gamma.py +38 -0
- mindspore/ops/_op_impl/aicpu/gather.py +46 -0
- mindspore/ops/_op_impl/aicpu/gather_d.py +79 -0
- mindspore/ops/_op_impl/aicpu/gather_d_grad_v2.py +79 -0
- mindspore/ops/_op_impl/aicpu/gather_grad.py +54 -0
- mindspore/ops/_op_impl/aicpu/gather_nd.py +56 -0
- mindspore/ops/_op_impl/aicpu/gcd.py +32 -0
- mindspore/ops/_op_impl/aicpu/generate_eod_mask.py +38 -0
- mindspore/ops/_op_impl/aicpu/geqrf.py +32 -0
- mindspore/ops/_op_impl/aicpu/get_next.py +39 -0
- mindspore/ops/_op_impl/aicpu/glu.py +33 -0
- mindspore/ops/_op_impl/aicpu/glu_grad.py +34 -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/grid_sampler_2d.py +35 -0
- mindspore/ops/_op_impl/aicpu/grid_sampler_2d_grad.py +38 -0
- mindspore/ops/_op_impl/aicpu/grid_sampler_3d.py +34 -0
- mindspore/ops/_op_impl/aicpu/grid_sampler_3d_grad.py +38 -0
- mindspore/ops/_op_impl/aicpu/hamming_window.py +57 -0
- mindspore/ops/_op_impl/aicpu/hard_sigmoid.py +32 -0
- mindspore/ops/_op_impl/aicpu/hard_sigmoid_grad.py +33 -0
- mindspore/ops/_op_impl/aicpu/heaviside.py +40 -0
- mindspore/ops/_op_impl/aicpu/histogram.py +35 -0
- mindspore/ops/_op_impl/aicpu/hsv_to_rgb.py +32 -0
- mindspore/ops/_op_impl/aicpu/hypot.py +32 -0
- mindspore/ops/_op_impl/aicpu/identity.py +42 -0
- mindspore/ops/_op_impl/aicpu/identity_n.py +41 -0
- mindspore/ops/_op_impl/aicpu/igamma.py +30 -0
- mindspore/ops/_op_impl/aicpu/igammac.py +30 -0
- mindspore/ops/_op_impl/aicpu/igammagrada.py +30 -0
- mindspore/ops/_op_impl/aicpu/im2col.py +43 -0
- mindspore/ops/_op_impl/aicpu/imag.py +31 -0
- mindspore/ops/_op_impl/aicpu/index_fill.py +54 -0
- mindspore/ops/_op_impl/aicpu/index_put.py +50 -0
- mindspore/ops/_op_impl/aicpu/init_data_set_queue.py +27 -0
- mindspore/ops/_op_impl/aicpu/inplace_index_add.py +39 -0
- mindspore/ops/_op_impl/aicpu/instance_norm_v2.py +41 -0
- mindspore/ops/_op_impl/aicpu/instance_norm_v2_grad.py +44 -0
- mindspore/ops/_op_impl/aicpu/is_finite.py +40 -0
- mindspore/ops/_op_impl/aicpu/is_inf.py +31 -0
- mindspore/ops/_op_impl/aicpu/is_nan.py +31 -0
- mindspore/ops/_op_impl/aicpu/kldivloss.py +34 -0
- mindspore/ops/_op_impl/aicpu/kldivlossgrad.py +35 -0
- mindspore/ops/_op_impl/aicpu/layer_norm_grad_grad.py +47 -0
- mindspore/ops/_op_impl/aicpu/lcm.py +32 -0
- mindspore/ops/_op_impl/aicpu/left_shift.py +38 -0
- mindspore/ops/_op_impl/aicpu/less.py +41 -0
- mindspore/ops/_op_impl/aicpu/less_equal.py +41 -0
- mindspore/ops/_op_impl/aicpu/lgamma.py +33 -0
- mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +57 -0
- mindspore/ops/_op_impl/aicpu/linspace.py +33 -0
- mindspore/ops/_op_impl/aicpu/list_diff.py +50 -0
- mindspore/ops/_op_impl/aicpu/log.py +37 -0
- mindspore/ops/_op_impl/aicpu/log1p.py +34 -0
- mindspore/ops/_op_impl/aicpu/log_matrix_determinant.py +31 -0
- mindspore/ops/_op_impl/aicpu/log_normal_reverse.py +33 -0
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +37 -0
- mindspore/ops/_op_impl/aicpu/logical_xor.py +30 -0
- mindspore/ops/_op_impl/aicpu/logit.py +33 -0
- mindspore/ops/_op_impl/aicpu/logit_grad.py +34 -0
- mindspore/ops/_op_impl/aicpu/logspace.py +36 -0
- mindspore/ops/_op_impl/aicpu/lower_bound.py +47 -0
- mindspore/ops/_op_impl/aicpu/lstsq.py +34 -0
- mindspore/ops/_op_impl/aicpu/lu.py +39 -0
- mindspore/ops/_op_impl/aicpu/lu_solve.py +32 -0
- mindspore/ops/_op_impl/aicpu/lu_unpack.py +114 -0
- mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +49 -0
- mindspore/ops/_op_impl/aicpu/masked_fill.py +42 -0
- mindspore/ops/_op_impl/aicpu/masked_scatter.py +40 -0
- mindspore/ops/_op_impl/aicpu/masked_select.py +31 -0
- mindspore/ops/_op_impl/aicpu/masked_select_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/matmul.py +39 -0
- mindspore/ops/_op_impl/aicpu/matrix_band_part.py +59 -0
- mindspore/ops/_op_impl/aicpu/matrix_determinant.py +30 -0
- mindspore/ops/_op_impl/aicpu/matrix_diag_part_v3.py +54 -0
- mindspore/ops/_op_impl/aicpu/matrix_diag_v3.py +56 -0
- mindspore/ops/_op_impl/aicpu/matrix_exp.py +34 -0
- mindspore/ops/_op_impl/aicpu/matrix_inverse.py +31 -0
- mindspore/ops/_op_impl/aicpu/matrix_logarithm.py +31 -0
- mindspore/ops/_op_impl/aicpu/matrix_power.py +37 -0
- mindspore/ops/_op_impl/aicpu/matrix_set_diag_v3.py +54 -0
- mindspore/ops/_op_impl/aicpu/matrix_solve.py +35 -0
- mindspore/ops/_op_impl/aicpu/matrix_solve_ls.py +36 -0
- mindspore/ops/_op_impl/aicpu/matrix_triangular_solve.py +36 -0
- mindspore/ops/_op_impl/aicpu/max_pool3d_grad_with_argmax.py +60 -0
- mindspore/ops/_op_impl/aicpu/max_pool3d_with_argmax.py +59 -0
- mindspore/ops/_op_impl/aicpu/max_unpool2d.py +57 -0
- mindspore/ops/_op_impl/aicpu/max_unpool2d_grad.py +58 -0
- mindspore/ops/_op_impl/aicpu/max_unpool3d.py +57 -0
- mindspore/ops/_op_impl/aicpu/max_unpool3d_grad.py +58 -0
- mindspore/ops/_op_impl/aicpu/maximum_grad_grad.py +40 -0
- mindspore/ops/_op_impl/aicpu/maxpool_grad_v1.py +46 -0
- mindspore/ops/_op_impl/aicpu/maxpool_v1.py +42 -0
- mindspore/ops/_op_impl/aicpu/median.py +39 -0
- mindspore/ops/_op_impl/aicpu/median_grad.py +45 -0
- mindspore/ops/_op_impl/aicpu/meshgrid.py +41 -0
- mindspore/ops/_op_impl/aicpu/minimum_grad_grad.py +40 -0
- mindspore/ops/_op_impl/aicpu/mirror_pad.py +50 -0
- mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py +48 -0
- mindspore/ops/_op_impl/aicpu/mul.py +43 -0
- mindspore/ops/_op_impl/aicpu/mul_no_nan.py +42 -0
- mindspore/ops/_op_impl/aicpu/multi_margin_loss.py +37 -0
- mindspore/ops/_op_impl/aicpu/multi_margin_loss_grad.py +41 -0
- mindspore/ops/_op_impl/aicpu/multilabel_margin_loss_grad.py +37 -0
- mindspore/ops/_op_impl/aicpu/multinomial.py +47 -0
- mindspore/ops/_op_impl/aicpu/multinomial_with_replacement.py +35 -0
- mindspore/ops/_op_impl/aicpu/mvlgamma.py +32 -0
- mindspore/ops/_op_impl/aicpu/mvlgamma_grad.py +33 -0
- mindspore/ops/_op_impl/aicpu/nan_to_num.py +34 -0
- mindspore/ops/_op_impl/aicpu/neg.py +36 -0
- mindspore/ops/_op_impl/aicpu/nextafter.py +32 -0
- mindspore/ops/_op_impl/aicpu/nllloss.py +38 -0
- mindspore/ops/_op_impl/aicpu/nllloss_grad.py +39 -0
- mindspore/ops/_op_impl/aicpu/no_repeat_ngram.py +34 -0
- mindspore/ops/_op_impl/aicpu/non_deterministic_ints.py +33 -0
- mindspore/ops/_op_impl/aicpu/non_max_suppression.py +36 -0
- mindspore/ops/_op_impl/aicpu/non_max_suppression_with_overlaps.py +35 -0
- mindspore/ops/_op_impl/aicpu/non_zero.py +43 -0
- mindspore/ops/_op_impl/aicpu/not_equal.py +39 -0
- mindspore/ops/_op_impl/aicpu/nth_element.py +39 -0
- mindspore/ops/_op_impl/aicpu/nuclear_norm.py +33 -0
- mindspore/ops/_op_impl/aicpu/one_hot.py +116 -0
- mindspore/ops/_op_impl/aicpu/ones_like.py +39 -0
- mindspore/ops/_op_impl/aicpu/orgqr.py +34 -0
- mindspore/ops/_op_impl/aicpu/pad_and_shift.py +33 -0
- mindspore/ops/_op_impl/aicpu/pad_v3.py +61 -0
- mindspore/ops/_op_impl/aicpu/pad_v3_grad.py +59 -0
- mindspore/ops/_op_impl/aicpu/padding.py +41 -0
- mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +54 -0
- mindspore/ops/_op_impl/aicpu/pdist_grad.py +33 -0
- mindspore/ops/_op_impl/aicpu/poisson.py +37 -0
- mindspore/ops/_op_impl/aicpu/polar.py +32 -0
- mindspore/ops/_op_impl/aicpu/polygamma.py +34 -0
- mindspore/ops/_op_impl/aicpu/pow.py +39 -0
- mindspore/ops/_op_impl/aicpu/print_tensor.py +39 -0
- mindspore/ops/_op_impl/aicpu/priority_replay_buffer.py +113 -0
- mindspore/ops/_op_impl/aicpu/qr.py +36 -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_range.py +49 -0
- mindspore/ops/_op_impl/aicpu/ragged_tensor_to_sparse.py +73 -0
- mindspore/ops/_op_impl/aicpu/ragged_tensor_to_tensor.py +74 -0
- mindspore/ops/_op_impl/aicpu/random_categorical.py +68 -0
- mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +36 -0
- mindspore/ops/_op_impl/aicpu/random_gamma.py +38 -0
- mindspore/ops/_op_impl/aicpu/random_poisson.py +134 -0
- mindspore/ops/_op_impl/aicpu/random_shuffle.py +47 -0
- mindspore/ops/_op_impl/aicpu/randperm.py +38 -0
- mindspore/ops/_op_impl/aicpu/randperm_v2.py +41 -0
- mindspore/ops/_op_impl/aicpu/range.py +36 -0
- mindspore/ops/_op_impl/aicpu/range_v2.py +35 -0
- mindspore/ops/_op_impl/aicpu/real.py +31 -0
- mindspore/ops/_op_impl/aicpu/real_div.py +40 -0
- mindspore/ops/_op_impl/aicpu/reciprocal.py +34 -0
- mindspore/ops/_op_impl/aicpu/reciprocal_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/reduce_mean.py +57 -0
- mindspore/ops/_op_impl/aicpu/reduce_prod.py +57 -0
- mindspore/ops/_op_impl/aicpu/reduce_sum.py +57 -0
- mindspore/ops/_op_impl/aicpu/relu_grad_v3.py +41 -0
- mindspore/ops/_op_impl/aicpu/relu_v3.py +38 -0
- mindspore/ops/_op_impl/aicpu/reservoir_replay_buffer.py +96 -0
- mindspore/ops/_op_impl/aicpu/reshape.py +42 -0
- mindspore/ops/_op_impl/aicpu/resize_area.py +40 -0
- mindspore/ops/_op_impl/aicpu/resize_bicubic.py +20 -0
- mindspore/ops/_op_impl/aicpu/resize_bicubic_grad.py +19 -0
- mindspore/ops/_op_impl/aicpu/resize_bilinear.py +32 -0
- mindspore/ops/_op_impl/aicpu/resize_bilinear_grad.py +32 -0
- mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2.py +36 -0
- mindspore/ops/_op_impl/aicpu/resize_nearest_neighbor_v2_grad.py +35 -0
- 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/reverse_sequence.py +55 -0
- mindspore/ops/_op_impl/aicpu/reversev2.py +54 -0
- mindspore/ops/_op_impl/aicpu/rgb_to_hsv.py +32 -0
- mindspore/ops/_op_impl/aicpu/right_shift.py +38 -0
- mindspore/ops/_op_impl/aicpu/rnnt_loss.py +35 -0
- mindspore/ops/_op_impl/aicpu/round.py +34 -0
- mindspore/ops/_op_impl/aicpu/rsqrt.py +33 -0
- mindspore/ops/_op_impl/aicpu/rsqrt_grad.py +36 -0
- mindspore/ops/_op_impl/aicpu/sample_distorted_bounding_box_v2.py +49 -0
- mindspore/ops/_op_impl/aicpu/scale_and_translate.py +52 -0
- mindspore/ops/_op_impl/aicpu/scale_and_translate_grad.py +36 -0
- mindspore/ops/_op_impl/aicpu/scatter.py +79 -0
- mindspore/ops/_op_impl/aicpu/scatter_add_with_axis.py +53 -0
- mindspore/ops/_op_impl/aicpu/scatter_elements.py +39 -0
- mindspore/ops/_op_impl/aicpu/scatter_nd.py +59 -0
- mindspore/ops/_op_impl/aicpu/scatter_nd_max.py +54 -0
- mindspore/ops/_op_impl/aicpu/scatter_nd_min.py +54 -0
- mindspore/ops/_op_impl/aicpu/scatter_nd_update.py +59 -0
- mindspore/ops/_op_impl/aicpu/search_sorted.py +44 -0
- mindspore/ops/_op_impl/aicpu/segment_max.py +52 -0
- mindspore/ops/_op_impl/aicpu/segment_mean.py +56 -0
- mindspore/ops/_op_impl/aicpu/segment_min.py +52 -0
- mindspore/ops/_op_impl/aicpu/segment_prod.py +56 -0
- mindspore/ops/_op_impl/aicpu/segment_sum.py +56 -0
- mindspore/ops/_op_impl/aicpu/select.py +45 -0
- mindspore/ops/_op_impl/aicpu/self_adjoint_eig.py +34 -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/sequence_concat.py +40 -0
- mindspore/ops/_op_impl/aicpu/sequence_stack.py +40 -0
- mindspore/ops/_op_impl/aicpu/set_size.py +38 -0
- mindspore/ops/_op_impl/aicpu/sign.py +36 -0
- mindspore/ops/_op_impl/aicpu/sin.py +34 -0
- mindspore/ops/_op_impl/aicpu/sinc.py +43 -0
- mindspore/ops/_op_impl/aicpu/sinh.py +34 -0
- mindspore/ops/_op_impl/aicpu/slice.py +59 -0
- mindspore/ops/_op_impl/aicpu/slice_grad.py +76 -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/sort.py +39 -0
- mindspore/ops/_op_impl/aicpu/space_to_depth.py +44 -0
- mindspore/ops/_op_impl/aicpu/sparse_addmm.py +87 -0
- mindspore/ops/_op_impl/aicpu/sparse_apply_adagrad_da.py +80 -0
- mindspore/ops/_op_impl/aicpu/sparse_apply_centered_rms_prop.py +105 -0
- mindspore/ops/_op_impl/aicpu/sparse_apply_momentum.py +80 -0
- mindspore/ops/_op_impl/aicpu/sparse_apply_proximal_gradient_descent.py +79 -0
- mindspore/ops/_op_impl/aicpu/sparse_concat.py +59 -0
- mindspore/ops/_op_impl/aicpu/sparse_cross.py +42 -0
- mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_add.py +58 -0
- mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_div.py +58 -0
- mindspore/ops/_op_impl/aicpu/sparse_dense_cwise_mul.py +58 -0
- mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows.py +63 -0
- mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows_grad.py +45 -0
- mindspore/ops/_op_impl/aicpu/sparse_matrix_mat_mul.py +56 -0
- mindspore/ops/_op_impl/aicpu/sparse_matrix_nnz.py +81 -0
- mindspore/ops/_op_impl/aicpu/sparse_matrix_transpose.py +116 -0
- mindspore/ops/_op_impl/aicpu/sparse_reorder.py +56 -0
- mindspore/ops/_op_impl/aicpu/sparse_reshape.py +34 -0
- mindspore/ops/_op_impl/aicpu/sparse_segment_mean_grad.py +36 -0
- mindspore/ops/_op_impl/aicpu/sparse_segment_mean_with_num_segments.py +44 -0
- mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n.py +43 -0
- mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_grad.py +38 -0
- mindspore/ops/_op_impl/aicpu/sparse_segment_sqrt_n_with_num_segments.py +44 -0
- mindspore/ops/_op_impl/aicpu/sparse_segment_sum.py +49 -0
- mindspore/ops/_op_impl/aicpu/sparse_segment_sum_with_num_segments.py +68 -0
- mindspore/ops/_op_impl/aicpu/sparse_slice.py +63 -0
- mindspore/ops/_op_impl/aicpu/sparse_slice_grad.py +61 -0
- mindspore/ops/_op_impl/aicpu/sparse_softmax.py +33 -0
- mindspore/ops/_op_impl/aicpu/sparse_softmax_cross_entropy_with_logits_v2.py +35 -0
- mindspore/ops/_op_impl/aicpu/sparse_sparse_maximum.py +53 -0
- mindspore/ops/_op_impl/aicpu/sparse_sparse_minimum.py +53 -0
- mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_add.py +84 -0
- mindspore/ops/_op_impl/aicpu/sparse_tensor_dense_mat_mul.py +190 -0
- mindspore/ops/_op_impl/aicpu/sparse_tensor_to_csr_sparse_matrix.py +51 -0
- mindspore/ops/_op_impl/aicpu/sparse_to_dense_v2.py +73 -0
- mindspore/ops/_op_impl/aicpu/split.py +45 -0
- mindspore/ops/_op_impl/aicpu/sqrt.py +34 -0
- mindspore/ops/_op_impl/aicpu/sqrt_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/square.py +35 -0
- mindspore/ops/_op_impl/aicpu/squared_difference.py +37 -0
- mindspore/ops/_op_impl/aicpu/squeeze.py +42 -0
- mindspore/ops/_op_impl/aicpu/sspaddmm.py +97 -0
- mindspore/ops/_op_impl/aicpu/stack.py +45 -0
- mindspore/ops/_op_impl/aicpu/stack_push_pop.py +87 -0
- mindspore/ops/_op_impl/aicpu/standard_laplace.py +34 -0
- mindspore/ops/_op_impl/aicpu/standard_normal.py +34 -0
- mindspore/ops/_op_impl/aicpu/stateless_dropout_genmask.py +37 -0
- mindspore/ops/_op_impl/aicpu/stft.py +70 -0
- mindspore/ops/_op_impl/aicpu/strided_slice.py +43 -0
- mindspore/ops/_op_impl/aicpu/strided_slice_grad.py +50 -0
- mindspore/ops/_op_impl/aicpu/sub.py +41 -0
- mindspore/ops/_op_impl/aicpu/sub_and_filter.py +36 -0
- mindspore/ops/_op_impl/aicpu/tan.py +34 -0
- mindspore/ops/_op_impl/aicpu/tanh.py +34 -0
- mindspore/ops/_op_impl/aicpu/tanh_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/tensor_scatter_update.py +59 -0
- mindspore/ops/_op_impl/aicpu/tile.py +56 -0
- mindspore/ops/_op_impl/aicpu/topk.py +34 -0
- mindspore/ops/_op_impl/aicpu/trace.py +40 -0
- mindspore/ops/_op_impl/aicpu/tracegrad.py +41 -0
- mindspore/ops/_op_impl/aicpu/trans_data.py +35 -0
- mindspore/ops/_op_impl/aicpu/transpose.py +58 -0
- mindspore/ops/_op_impl/aicpu/tridiagonal_matmul.py +42 -0
- mindspore/ops/_op_impl/aicpu/tridiagonal_solve.py +35 -0
- mindspore/ops/_op_impl/aicpu/tril.py +42 -0
- mindspore/ops/_op_impl/aicpu/tril_indices.py +34 -0
- mindspore/ops/_op_impl/aicpu/triplet_margin_loss.py +62 -0
- mindspore/ops/_op_impl/aicpu/triu.py +43 -0
- mindspore/ops/_op_impl/aicpu/triu_indices.py +34 -0
- mindspore/ops/_op_impl/aicpu/truncated_normal.py +39 -0
- mindspore/ops/_op_impl/aicpu/uniform.py +36 -0
- mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +41 -0
- mindspore/ops/_op_impl/aicpu/uniform_int.py +36 -0
- mindspore/ops/_op_impl/aicpu/uniform_real.py +33 -0
- mindspore/ops/_op_impl/aicpu/unique.py +31 -0
- mindspore/ops/_op_impl/aicpu/unique_consecutive.py +47 -0
- mindspore/ops/_op_impl/aicpu/unique_with_pad.py +32 -0
- mindspore/ops/_op_impl/aicpu/unravel_index.py +32 -0
- mindspore/ops/_op_impl/aicpu/unsorted_segment_prod.py +53 -0
- mindspore/ops/_op_impl/aicpu/unsorted_segment_sum.py +57 -0
- mindspore/ops/_op_impl/aicpu/unstack.py +45 -0
- mindspore/ops/_op_impl/aicpu/update_cache.py +44 -0
- mindspore/ops/_op_impl/aicpu/upper_bound.py +47 -0
- mindspore/ops/_op_impl/aicpu/upsample_nearest_3d.py +42 -0
- mindspore/ops/_op_impl/aicpu/upsample_nearest_3d_grad.py +49 -0
- mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d.py +40 -0
- mindspore/ops/_op_impl/aicpu/upsample_trilinear_3d_grad.py +50 -0
- mindspore/ops/_op_impl/aicpu/xdivy.py +35 -0
- mindspore/ops/_op_impl/aicpu/xlogy.py +33 -0
- mindspore/ops/_op_impl/aicpu/zeros_like.py +42 -0
- mindspore/ops/_op_impl/aicpu/zeta.py +31 -0
- mindspore/ops/_op_impl/akg/__init__.py +19 -0
- mindspore/ops/_op_impl/akg/ascend/__init__.py +48 -0
- mindspore/ops/_op_impl/akg/ascend/abs.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/add.py +42 -0
- mindspore/ops/_op_impl/akg/ascend/add_n.py +37 -0
- mindspore/ops/_op_impl/akg/ascend/batchmatmul.py +33 -0
- mindspore/ops/_op_impl/akg/ascend/cast.py +46 -0
- mindspore/ops/_op_impl/akg/ascend/equal.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/exp.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/expand_dims.py +33 -0
- mindspore/ops/_op_impl/akg/ascend/greater.py +34 -0
- mindspore/ops/_op_impl/akg/ascend/greater_equal.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/less.py +31 -0
- mindspore/ops/_op_impl/akg/ascend/less_equal.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/load_im2col.py +33 -0
- mindspore/ops/_op_impl/akg/ascend/log.py +34 -0
- mindspore/ops/_op_impl/akg/ascend/maximum.py +36 -0
- mindspore/ops/_op_impl/akg/ascend/minimum.py +39 -0
- mindspore/ops/_op_impl/akg/ascend/mul.py +41 -0
- mindspore/ops/_op_impl/akg/ascend/neg.py +37 -0
- mindspore/ops/_op_impl/akg/ascend/pow.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/prod_force_se_a.py +33 -0
- mindspore/ops/_op_impl/akg/ascend/real_div.py +36 -0
- mindspore/ops/_op_impl/akg/ascend/reciprocal.py +32 -0
- mindspore/ops/_op_impl/akg/ascend/reduce_max.py +32 -0
- mindspore/ops/_op_impl/akg/ascend/reduce_min.py +32 -0
- mindspore/ops/_op_impl/akg/ascend/reduce_sum.py +37 -0
- mindspore/ops/_op_impl/akg/ascend/rsqrt.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/select.py +37 -0
- mindspore/ops/_op_impl/akg/ascend/sqrt.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/square.py +35 -0
- mindspore/ops/_op_impl/akg/ascend/sub.py +42 -0
- mindspore/ops/_op_impl/akg/cpu/__init__.py +23 -0
- mindspore/ops/_op_impl/akg/cpu/coo2csr.py +29 -0
- mindspore/ops/_op_impl/akg/cpu/csr2coo.py +29 -0
- mindspore/ops/_op_impl/akg/cpu/csr_gather.py +33 -0
- mindspore/ops/_op_impl/akg/cpu/csr_mm.py +34 -0
- mindspore/ops/_op_impl/akg/cpu/csr_mul.py +33 -0
- mindspore/ops/_op_impl/akg/cpu/csr_mv.py +33 -0
- mindspore/ops/_op_impl/akg/cpu/csr_reduce_sum.py +31 -0
- mindspore/ops/_op_impl/akg/gpu/__init__.py +24 -0
- mindspore/ops/_op_impl/akg/gpu/coo2csr.py +29 -0
- mindspore/ops/_op_impl/akg/gpu/csr2coo.py +29 -0
- mindspore/ops/_op_impl/akg/gpu/csr_div.py +36 -0
- mindspore/ops/_op_impl/akg/gpu/csr_gather.py +33 -0
- mindspore/ops/_op_impl/akg/gpu/csr_mm.py +37 -0
- mindspore/ops/_op_impl/akg/gpu/csr_mul.py +36 -0
- mindspore/ops/_op_impl/akg/gpu/csr_mv.py +36 -0
- mindspore/ops/_op_impl/akg/gpu/csr_reduce_sum.py +33 -0
- mindspore/ops/_op_impl/cpu/__init__.py +78 -0
- mindspore/ops/_op_impl/cpu/adam.py +49 -0
- mindspore/ops/_op_impl/cpu/adam_weight_decay.py +47 -0
- mindspore/ops/_op_impl/cpu/arg_max.py +30 -0
- mindspore/ops/_op_impl/cpu/arg_max_with_value.py +31 -0
- mindspore/ops/_op_impl/cpu/arg_min_with_value.py +31 -0
- mindspore/ops/_op_impl/cpu/buffer_append.py +28 -0
- mindspore/ops/_op_impl/cpu/buffer_get.py +28 -0
- mindspore/ops/_op_impl/cpu/buffer_sample.py +28 -0
- mindspore/ops/_op_impl/cpu/cast.py +171 -0
- mindspore/ops/_op_impl/cpu/concat_offset.py +38 -0
- mindspore/ops/_op_impl/cpu/conv2d.py +30 -0
- mindspore/ops/_op_impl/cpu/conv3d.py +30 -0
- mindspore/ops/_op_impl/cpu/div.py +32 -0
- mindspore/ops/_op_impl/cpu/dropout.py +31 -0
- mindspore/ops/_op_impl/cpu/dropout_grad.py +30 -0
- mindspore/ops/_op_impl/cpu/dynamic_shape.py +42 -0
- mindspore/ops/_op_impl/cpu/dynamic_stitch.py +41 -0
- mindspore/ops/_op_impl/cpu/equal_count.py +30 -0
- mindspore/ops/_op_impl/cpu/gather_d.py +49 -0
- mindspore/ops/_op_impl/cpu/gather_d_grad.py +38 -0
- mindspore/ops/_op_impl/cpu/gather_d_grad_v2.py +40 -0
- mindspore/ops/_op_impl/cpu/gather_v2.py +40 -0
- mindspore/ops/_op_impl/cpu/hsigmoid.py +33 -0
- mindspore/ops/_op_impl/cpu/hsigmoid_grad.py +34 -0
- mindspore/ops/_op_impl/cpu/hswish.py +32 -0
- mindspore/ops/_op_impl/cpu/hswish_grad.py +33 -0
- mindspore/ops/_op_impl/cpu/identity_n.py +40 -0
- mindspore/ops/_op_impl/cpu/is_finite.py +39 -0
- mindspore/ops/_op_impl/cpu/l2loss.py +30 -0
- mindspore/ops/_op_impl/cpu/layer_norm.py +36 -0
- mindspore/ops/_op_impl/cpu/layer_norm_grad.py +38 -0
- mindspore/ops/_op_impl/cpu/maximum.py +35 -0
- mindspore/ops/_op_impl/cpu/maximum_grad.py +47 -0
- mindspore/ops/_op_impl/cpu/minimum.py +40 -0
- mindspore/ops/_op_impl/cpu/minimum_grad.py +51 -0
- mindspore/ops/_op_impl/cpu/mirror_pad.py +36 -0
- mindspore/ops/_op_impl/cpu/mirror_pad_grad.py +36 -0
- mindspore/ops/_op_impl/cpu/mul.py +32 -0
- mindspore/ops/_op_impl/cpu/one_hot.py +31 -0
- mindspore/ops/_op_impl/cpu/pad.py +32 -0
- mindspore/ops/_op_impl/cpu/pow.py +32 -0
- mindspore/ops/_op_impl/cpu/priority_replay_buffer.py +42 -0
- mindspore/ops/_op_impl/cpu/pyexecute.py +29 -0
- mindspore/ops/_op_impl/cpu/pyfunc.py +29 -0
- mindspore/ops/_op_impl/cpu/range.py +34 -0
- mindspore/ops/_op_impl/cpu/real_div.py +33 -0
- mindspore/ops/_op_impl/cpu/reduce_all.py +29 -0
- mindspore/ops/_op_impl/cpu/reduce_any.py +29 -0
- mindspore/ops/_op_impl/cpu/reduce_max.py +32 -0
- mindspore/ops/_op_impl/cpu/reduce_mean.py +40 -0
- mindspore/ops/_op_impl/cpu/reduce_min.py +32 -0
- mindspore/ops/_op_impl/cpu/reduce_prod.py +40 -0
- mindspore/ops/_op_impl/cpu/reduce_std.py +31 -0
- mindspore/ops/_op_impl/cpu/reduce_sum.py +41 -0
- mindspore/ops/_op_impl/cpu/space_to_batch_nd.py +38 -0
- mindspore/ops/_op_impl/cpu/sparse_slice.py +62 -0
- mindspore/ops/_op_impl/cpu/sparse_slice_grad.py +60 -0
- mindspore/ops/_op_impl/cpu/split.py +34 -0
- mindspore/ops/_op_impl/cpu/sspaddmm.py +95 -0
- mindspore/ops/_op_impl/cpu/stack.py +38 -0
- mindspore/ops/_op_impl/cpu/sub.py +32 -0
- mindspore/ops/_op_impl/cpu/tensor_copy_slices.py +41 -0
- mindspore/ops/_op_impl/cpu/tile.py +37 -0
- mindspore/ops/_op_impl/cpu/top_k.py +31 -0
- mindspore/ops/_op_impl/cpu/transpose.py +39 -0
- mindspore/ops/_primitive_cache.py +90 -0
- mindspore/ops/_register_for_op.py +73 -0
- mindspore/ops/_utils/__init__.py +20 -0
- mindspore/ops/_utils/utils.py +147 -0
- mindspore/ops/_vmap/__init__.py +25 -0
- mindspore/ops/_vmap/vmap_array_ops.py +2149 -0
- mindspore/ops/_vmap/vmap_base.py +533 -0
- mindspore/ops/_vmap/vmap_convolution_ops.py +441 -0
- mindspore/ops/_vmap/vmap_debug_ops.py +50 -0
- mindspore/ops/_vmap/vmap_grad_math_ops.py +274 -0
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +806 -0
- mindspore/ops/_vmap/vmap_image_ops.py +194 -0
- mindspore/ops/_vmap/vmap_math_ops.py +993 -0
- mindspore/ops/_vmap/vmap_nn_ops.py +2250 -0
- mindspore/ops/_vmap/vmap_other_ops.py +105 -0
- mindspore/ops/_vmap/vmap_random_ops.py +122 -0
- mindspore/ops/_vmap/vmap_sparse_ops.py +89 -0
- mindspore/ops/auto_generate/__init__.py +31 -0
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +309 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +252 -0
- mindspore/ops/auto_generate/gen_arg_handler.py +197 -0
- mindspore/ops/auto_generate/gen_extend_func.py +1701 -0
- mindspore/ops/auto_generate/gen_ops_def.py +8482 -0
- mindspore/ops/auto_generate/gen_ops_prim.py +16704 -0
- mindspore/ops/auto_generate/pyboost_inner_prim.py +549 -0
- mindspore/ops/composite/__init__.py +71 -0
- mindspore/ops/composite/base.py +1318 -0
- mindspore/ops/composite/env_ops.py +41 -0
- mindspore/ops/composite/math_ops.py +125 -0
- mindspore/ops/composite/multitype_ops/__init__.py +77 -0
- mindspore/ops/composite/multitype_ops/_compile_utils.py +1459 -0
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +897 -0
- mindspore/ops/composite/multitype_ops/add_impl.py +606 -0
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +56 -0
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +56 -0
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +56 -0
- mindspore/ops/composite/multitype_ops/div_impl.py +189 -0
- mindspore/ops/composite/multitype_ops/equal_impl.py +335 -0
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +88 -0
- mindspore/ops/composite/multitype_ops/getitem_impl.py +400 -0
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +109 -0
- mindspore/ops/composite/multitype_ops/greater_impl.py +110 -0
- mindspore/ops/composite/multitype_ops/in_impl.py +196 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +37 -0
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +111 -0
- mindspore/ops/composite/multitype_ops/less_impl.py +112 -0
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +113 -0
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +60 -0
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +61 -0
- mindspore/ops/composite/multitype_ops/mod_impl.py +86 -0
- mindspore/ops/composite/multitype_ops/mul_impl.py +294 -0
- mindspore/ops/composite/multitype_ops/negative_impl.py +79 -0
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +290 -0
- mindspore/ops/composite/multitype_ops/not_in_impl.py +196 -0
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +96 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +87 -0
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +37 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +884 -0
- mindspore/ops/composite/multitype_ops/sub_impl.py +116 -0
- mindspore/ops/composite/multitype_ops/uadd_impl.py +29 -0
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +228 -0
- mindspore/ops/deprecated.py +315 -0
- mindspore/ops/function/__init__.py +782 -0
- mindspore/ops/function/array_func.py +7226 -0
- mindspore/ops/function/clip_func.py +384 -0
- mindspore/ops/function/debug_func.py +181 -0
- mindspore/ops/function/fft_func.py +44 -0
- mindspore/ops/function/grad/__init__.py +34 -0
- mindspore/ops/function/grad/grad_func.py +1425 -0
- mindspore/ops/function/image_func.py +292 -0
- mindspore/ops/function/linalg_func.py +416 -0
- mindspore/ops/function/math_func.py +12228 -0
- mindspore/ops/function/nn_func.py +8609 -0
- mindspore/ops/function/other_func.py +115 -0
- mindspore/ops/function/parameter_func.py +134 -0
- mindspore/ops/function/random_func.py +1715 -0
- mindspore/ops/function/reshard_func.py +104 -0
- mindspore/ops/function/sparse_func.py +884 -0
- mindspore/ops/function/sparse_unary_func.py +2422 -0
- mindspore/ops/function/spectral_func.py +150 -0
- mindspore/ops/function/vmap_func.py +117 -0
- mindspore/ops/functional.py +464 -0
- mindspore/ops/op_info_register.py +1572 -0
- mindspore/ops/operations/__init__.py +722 -0
- mindspore/ops/operations/_csr_ops.py +403 -0
- mindspore/ops/operations/_custom_grad.py +181 -0
- mindspore/ops/operations/_embedding_cache_ops.py +307 -0
- mindspore/ops/operations/_grad_ops.py +2978 -0
- mindspore/ops/operations/_infer_ops.py +19 -0
- mindspore/ops/operations/_inner_ops.py +2544 -0
- mindspore/ops/operations/_map_tensor_ops.py +112 -0
- mindspore/ops/operations/_ms_kernel.py +601 -0
- mindspore/ops/operations/_ocr_ops.py +379 -0
- mindspore/ops/operations/_opaque_predicate_registry.py +41 -0
- mindspore/ops/operations/_pyfunc_registry.py +58 -0
- mindspore/ops/operations/_quant_ops.py +1844 -0
- mindspore/ops/operations/_rl_inner_ops.py +1231 -0
- mindspore/ops/operations/_scalar_ops.py +106 -0
- mindspore/ops/operations/_sequence_ops.py +1155 -0
- mindspore/ops/operations/_sparse_grad_ops.py +56 -0
- mindspore/ops/operations/_tensor_array.py +359 -0
- mindspore/ops/operations/_thor_ops.py +807 -0
- mindspore/ops/operations/array_ops.py +6124 -0
- mindspore/ops/operations/comm_ops.py +1985 -0
- mindspore/ops/operations/control_ops.py +127 -0
- mindspore/ops/operations/custom_ops.py +1129 -0
- mindspore/ops/operations/debug_ops.py +678 -0
- mindspore/ops/operations/image_ops.py +1041 -0
- mindspore/ops/operations/inner_ops.py +697 -0
- mindspore/ops/operations/linalg_ops.py +95 -0
- mindspore/ops/operations/manually_defined/__init__.py +24 -0
- mindspore/ops/operations/manually_defined/_inner.py +73 -0
- mindspore/ops/operations/manually_defined/ops_def.py +2271 -0
- mindspore/ops/operations/math_ops.py +5095 -0
- mindspore/ops/operations/nn_ops.py +9575 -0
- mindspore/ops/operations/other_ops.py +874 -0
- mindspore/ops/operations/random_ops.py +1288 -0
- mindspore/ops/operations/reshard_ops.py +53 -0
- mindspore/ops/operations/rl_ops.py +288 -0
- mindspore/ops/operations/sparse_ops.py +2753 -0
- mindspore/ops/operations/spectral_ops.py +111 -0
- mindspore/ops/primitive.py +1046 -0
- mindspore/ops/signature.py +54 -0
- mindspore/ops/vm_impl_registry.py +91 -0
- mindspore/ops_generate/__init__.py +27 -0
- mindspore/ops_generate/arg_dtype_cast.py +252 -0
- mindspore/ops_generate/arg_handler.py +197 -0
- mindspore/ops_generate/gen_aclnn_implement.py +263 -0
- mindspore/ops_generate/gen_constants.py +36 -0
- mindspore/ops_generate/gen_ops.py +1099 -0
- mindspore/ops_generate/gen_ops_inner_prim.py +131 -0
- mindspore/ops_generate/gen_pyboost_func.py +1052 -0
- mindspore/ops_generate/gen_utils.py +209 -0
- mindspore/ops_generate/op_proto.py +145 -0
- mindspore/ops_generate/pyboost_utils.py +367 -0
- mindspore/ops_generate/template.py +261 -0
- mindspore/parallel/__init__.py +30 -0
- mindspore/parallel/_auto_parallel_context.py +1486 -0
- mindspore/parallel/_cell_wrapper.py +174 -0
- mindspore/parallel/_cost_model_context.py +700 -0
- mindspore/parallel/_dp_allreduce_fusion.py +159 -0
- mindspore/parallel/_offload_context.py +275 -0
- mindspore/parallel/_parallel_serialization.py +561 -0
- mindspore/parallel/_ps_context.py +242 -0
- mindspore/parallel/_recovery_context.py +110 -0
- mindspore/parallel/_tensor.py +730 -0
- mindspore/parallel/_transformer/__init__.py +35 -0
- mindspore/parallel/_transformer/layers.py +765 -0
- mindspore/parallel/_transformer/loss.py +251 -0
- mindspore/parallel/_transformer/moe.py +693 -0
- mindspore/parallel/_transformer/op_parallel_config.py +222 -0
- mindspore/parallel/_transformer/transformer.py +3119 -0
- mindspore/parallel/_utils.py +612 -0
- mindspore/parallel/algo_parameter_config.py +400 -0
- mindspore/parallel/checkpoint_transform.py +650 -0
- mindspore/parallel/cluster/__init__.py +15 -0
- mindspore/parallel/cluster/process_entity/__init__.py +18 -0
- mindspore/parallel/cluster/process_entity/_api.py +352 -0
- mindspore/parallel/cluster/process_entity/_utils.py +101 -0
- mindspore/parallel/cluster/run.py +136 -0
- mindspore/parallel/mpi/__init__.py +14 -0
- mindspore/parallel/mpi/_mpi_config.py +116 -0
- mindspore/parallel/parameter_broadcast.py +151 -0
- mindspore/parallel/shard.py +481 -0
- mindspore/parallel/transform_safetensors.py +993 -0
- mindspore/perf_msvcbuildinsights.dll +0 -0
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +28 -0
- mindspore/profiler/common/__init__.py +14 -0
- mindspore/profiler/common/constant.py +29 -0
- mindspore/profiler/common/exceptions/__init__.py +14 -0
- mindspore/profiler/common/exceptions/error_code.py +83 -0
- mindspore/profiler/common/exceptions/exceptions.py +286 -0
- mindspore/profiler/common/process_pool.py +41 -0
- mindspore/profiler/common/registry.py +47 -0
- mindspore/profiler/common/singleton.py +28 -0
- mindspore/profiler/common/struct_type.py +118 -0
- mindspore/profiler/common/util.py +472 -0
- mindspore/profiler/common/validator/__init__.py +14 -0
- mindspore/profiler/common/validator/validate_path.py +84 -0
- mindspore/profiler/dynamic_profiler.py +694 -0
- mindspore/profiler/envprofiling.py +254 -0
- mindspore/profiler/parser/__init__.py +14 -0
- mindspore/profiler/parser/aicpu_data_parser.py +272 -0
- mindspore/profiler/parser/ascend_analysis/__init__.py +14 -0
- mindspore/profiler/parser/ascend_analysis/constant.py +71 -0
- mindspore/profiler/parser/ascend_analysis/file_manager.py +180 -0
- mindspore/profiler/parser/ascend_analysis/function_event.py +185 -0
- mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +136 -0
- mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +131 -0
- mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +104 -0
- mindspore/profiler/parser/ascend_analysis/path_manager.py +313 -0
- mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +123 -0
- mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +86 -0
- mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +75 -0
- mindspore/profiler/parser/ascend_cluster_generator.py +116 -0
- mindspore/profiler/parser/ascend_communicate_generator.py +314 -0
- mindspore/profiler/parser/ascend_flops_generator.py +116 -0
- mindspore/profiler/parser/ascend_fpbp_generator.py +82 -0
- mindspore/profiler/parser/ascend_hccl_generator.py +271 -0
- mindspore/profiler/parser/ascend_integrate_generator.py +42 -0
- mindspore/profiler/parser/ascend_memory_generator.py +185 -0
- mindspore/profiler/parser/ascend_msprof_exporter.py +282 -0
- mindspore/profiler/parser/ascend_msprof_generator.py +187 -0
- mindspore/profiler/parser/ascend_op_generator.py +334 -0
- mindspore/profiler/parser/ascend_steptrace_generator.py +94 -0
- mindspore/profiler/parser/ascend_timeline_generator.py +545 -0
- mindspore/profiler/parser/base_timeline_generator.py +483 -0
- mindspore/profiler/parser/container.py +229 -0
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +697 -0
- mindspore/profiler/parser/flops_parser.py +531 -0
- mindspore/profiler/parser/framework_enum.py +111 -0
- mindspore/profiler/parser/framework_parser.py +464 -0
- mindspore/profiler/parser/framework_struct.py +61 -0
- mindspore/profiler/parser/gpu_analysis/__init__.py +14 -0
- mindspore/profiler/parser/gpu_analysis/function_event.py +44 -0
- mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +89 -0
- mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +72 -0
- mindspore/profiler/parser/hccl_parser.py +573 -0
- mindspore/profiler/parser/hwts_log_parser.py +122 -0
- mindspore/profiler/parser/integrator.py +526 -0
- mindspore/profiler/parser/memory_usage_parser.py +277 -0
- mindspore/profiler/parser/minddata_analyzer.py +800 -0
- mindspore/profiler/parser/minddata_parser.py +186 -0
- mindspore/profiler/parser/minddata_pipeline_parser.py +299 -0
- mindspore/profiler/parser/op_intermediate_parser.py +149 -0
- mindspore/profiler/parser/optime_parser.py +250 -0
- mindspore/profiler/parser/profiler_info.py +213 -0
- mindspore/profiler/parser/step_trace_parser.py +666 -0
- mindspore/profiler/profiler.py +153 -0
- mindspore/profiler/profiling.py +1922 -0
- mindspore/rewrite/__init__.py +28 -0
- mindspore/rewrite/api/__init__.py +17 -0
- mindspore/rewrite/api/node.py +519 -0
- mindspore/rewrite/api/node_type.py +53 -0
- mindspore/rewrite/api/pattern_engine.py +490 -0
- mindspore/rewrite/api/scoped_value.py +181 -0
- mindspore/rewrite/api/symbol_tree.py +497 -0
- mindspore/rewrite/ast_helpers/__init__.py +25 -0
- mindspore/rewrite/ast_helpers/ast_converter.py +143 -0
- mindspore/rewrite/ast_helpers/ast_finder.py +404 -0
- mindspore/rewrite/ast_helpers/ast_flattener.py +268 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +605 -0
- mindspore/rewrite/ast_helpers/ast_replacer.py +79 -0
- mindspore/rewrite/common/__init__.py +19 -0
- mindspore/rewrite/common/config.py +24 -0
- mindspore/rewrite/common/error_log.py +39 -0
- mindspore/rewrite/common/event.py +28 -0
- mindspore/rewrite/common/namer.py +271 -0
- mindspore/rewrite/common/namespace.py +118 -0
- mindspore/rewrite/common/observable.py +44 -0
- mindspore/rewrite/common/observer.py +54 -0
- mindspore/rewrite/node/__init__.py +22 -0
- mindspore/rewrite/node/call_function.py +95 -0
- mindspore/rewrite/node/cell_container.py +139 -0
- mindspore/rewrite/node/control_flow.py +113 -0
- mindspore/rewrite/node/node.py +1428 -0
- mindspore/rewrite/node/node_manager.py +283 -0
- mindspore/rewrite/node/node_topological_manager.py +223 -0
- mindspore/rewrite/parsers/__init__.py +29 -0
- mindspore/rewrite/parsers/arguments_parser.py +63 -0
- mindspore/rewrite/parsers/assign_parser.py +852 -0
- mindspore/rewrite/parsers/attribute_parser.py +57 -0
- mindspore/rewrite/parsers/class_def_parser.py +289 -0
- mindspore/rewrite/parsers/constant_parser.py +104 -0
- mindspore/rewrite/parsers/container_parser.py +88 -0
- mindspore/rewrite/parsers/expr_parser.py +55 -0
- mindspore/rewrite/parsers/for_parser.py +61 -0
- mindspore/rewrite/parsers/function_def_parser.py +84 -0
- mindspore/rewrite/parsers/if_parser.py +85 -0
- mindspore/rewrite/parsers/module_parser.py +117 -0
- mindspore/rewrite/parsers/parser.py +43 -0
- mindspore/rewrite/parsers/parser_register.py +86 -0
- mindspore/rewrite/parsers/return_parser.py +37 -0
- mindspore/rewrite/parsers/while_parser.py +59 -0
- mindspore/rewrite/sparsify/__init__.py +0 -0
- mindspore/rewrite/sparsify/sparse_transformer.py +457 -0
- mindspore/rewrite/sparsify/sparsify.py +112 -0
- mindspore/rewrite/sparsify/utils.py +179 -0
- mindspore/rewrite/symbol_tree/__init__.py +20 -0
- mindspore/rewrite/symbol_tree/symbol_tree.py +1819 -0
- mindspore/rewrite/symbol_tree/symbol_tree_builder.py +76 -0
- mindspore/rewrite/symbol_tree/symbol_tree_dumper.py +142 -0
- mindspore/run_check/__init__.py +20 -0
- mindspore/run_check/_check_version.py +507 -0
- mindspore/run_check/run_check.py +66 -0
- mindspore/safeguard/__init__.py +18 -0
- mindspore/safeguard/rewrite_obfuscation.py +875 -0
- 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 +48 -0
- mindspore/train/_utils.py +465 -0
- mindspore/train/amp.py +935 -0
- mindspore/train/anf_ir_pb2.py +1517 -0
- mindspore/train/callback/__init__.py +44 -0
- mindspore/train/callback/_backup_and_restore.py +117 -0
- mindspore/train/callback/_callback.py +613 -0
- mindspore/train/callback/_checkpoint.py +814 -0
- mindspore/train/callback/_cluster_monitor.py +201 -0
- mindspore/train/callback/_dataset_graph.py +150 -0
- mindspore/train/callback/_early_stop.py +239 -0
- mindspore/train/callback/_flops_collector.py +239 -0
- mindspore/train/callback/_history.py +92 -0
- mindspore/train/callback/_lambda_callback.py +80 -0
- mindspore/train/callback/_landscape.py +1049 -0
- mindspore/train/callback/_loss_monitor.py +107 -0
- mindspore/train/callback/_lr_scheduler_callback.py +76 -0
- mindspore/train/callback/_on_request_exit.py +298 -0
- mindspore/train/callback/_reduce_lr_on_plateau.py +226 -0
- mindspore/train/callback/_summary_collector.py +1184 -0
- mindspore/train/callback/_tft_register.py +352 -0
- mindspore/train/callback/_time_monitor.py +141 -0
- mindspore/train/checkpoint_pb2.py +233 -0
- mindspore/train/data_sink.py +219 -0
- mindspore/train/dataset_helper.py +692 -0
- mindspore/train/lineage_pb2.py +1260 -0
- mindspore/train/loss_scale_manager.py +213 -0
- mindspore/train/memory_profiling_pb2.py +298 -0
- mindspore/train/metrics/__init__.py +175 -0
- mindspore/train/metrics/accuracy.py +133 -0
- mindspore/train/metrics/auc.py +129 -0
- mindspore/train/metrics/bleu_score.py +170 -0
- mindspore/train/metrics/confusion_matrix.py +700 -0
- mindspore/train/metrics/cosine_similarity.py +109 -0
- mindspore/train/metrics/dice.py +116 -0
- mindspore/train/metrics/error.py +175 -0
- mindspore/train/metrics/fbeta.py +167 -0
- mindspore/train/metrics/hausdorff_distance.py +333 -0
- mindspore/train/metrics/loss.py +97 -0
- mindspore/train/metrics/mean_surface_distance.py +189 -0
- mindspore/train/metrics/metric.py +373 -0
- mindspore/train/metrics/occlusion_sensitivity.py +225 -0
- mindspore/train/metrics/perplexity.py +133 -0
- mindspore/train/metrics/precision.py +160 -0
- mindspore/train/metrics/recall.py +159 -0
- mindspore/train/metrics/roc.py +223 -0
- mindspore/train/metrics/root_mean_square_surface_distance.py +191 -0
- mindspore/train/metrics/topk.py +167 -0
- mindspore/train/mind_ir_pb2.py +1908 -0
- mindspore/train/model.py +2252 -0
- mindspore/train/node_strategy_pb2.py +653 -0
- mindspore/train/print_pb2.py +184 -0
- mindspore/train/profiling_parallel_pb2.py +151 -0
- mindspore/train/serialization.py +3325 -0
- mindspore/train/summary/__init__.py +23 -0
- mindspore/train/summary/_lineage_adapter.py +41 -0
- mindspore/train/summary/_summary_adapter.py +496 -0
- mindspore/train/summary/_writer_pool.py +207 -0
- mindspore/train/summary/enums.py +56 -0
- mindspore/train/summary/summary_record.py +581 -0
- mindspore/train/summary/writer.py +167 -0
- mindspore/train/summary_pb2.py +1165 -0
- mindspore/train/train_thor/__init__.py +20 -0
- mindspore/train/train_thor/convert_utils.py +268 -0
- mindspore/train/train_thor/dataset_helper.py +192 -0
- mindspore/train/train_thor/model_thor.py +257 -0
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +21 -0
- mindspore/utils/utils.py +60 -0
- mindspore/vcmeta.dll +0 -0
- mindspore/vcomp140.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -0
- mindspore-2.4.0.dist-info/METADATA +352 -0
- mindspore-2.4.0.dist-info/RECORD +1406 -0
- mindspore-2.4.0.dist-info/WHEEL +5 -0
- mindspore-2.4.0.dist-info/entry_points.txt +3 -0
- mindspore-2.4.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,1260 @@
|
|
|
1
|
+
# Copyright 2019-2022 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ==============================================================================
|
|
15
|
+
"""
|
|
16
|
+
The module transforms provides common operations, including Compose, OneHot and TypeCast.
|
|
17
|
+
"""
|
|
18
|
+
import json
|
|
19
|
+
from abc import ABC
|
|
20
|
+
import os
|
|
21
|
+
import threading
|
|
22
|
+
|
|
23
|
+
import sys
|
|
24
|
+
from enum import IntEnum
|
|
25
|
+
import numpy as np
|
|
26
|
+
|
|
27
|
+
import mindspore._c_dataengine as cde
|
|
28
|
+
from mindspore._c_expression import typing
|
|
29
|
+
from mindspore.common import dtype as mstype
|
|
30
|
+
import mindspore.dataset.transforms.c_transforms as c_transforms
|
|
31
|
+
import mindspore.dataset.transforms.py_transforms as py_transforms
|
|
32
|
+
import mindspore.dataset.vision.c_transforms as c_vision
|
|
33
|
+
from . import py_transforms_util as util
|
|
34
|
+
from .py_transforms_util import Implementation, FuncWrapper
|
|
35
|
+
from .validators import check_fill_value, check_slice_option, check_slice_op, check_one_hot_op, check_compose_call, \
|
|
36
|
+
check_mask_op_new, check_pad_end, check_concat_type, check_random_transform_ops, check_plugin, check_type_cast
|
|
37
|
+
from ..core.datatypes import mstype_to_detype, nptype_to_detype
|
|
38
|
+
from ..vision.py_transforms_util import is_pil
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# hold all the executor objects when in training procedure
|
|
42
|
+
# key : pid_tid which distinguishes multiple executors by process_id + thread_id
|
|
43
|
+
# value : executor object which lifecycle will always exist during training
|
|
44
|
+
EXECUTORS_LIST = dict()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# the follow case process / thread exit need call the function
|
|
48
|
+
# 1. user defined dataset with process mode
|
|
49
|
+
# 2. user defined dataset with thread mode
|
|
50
|
+
# 3. user defined transform in map op with process mode
|
|
51
|
+
# 4. user defined transform in map op with thread mode
|
|
52
|
+
# 5. batch op with per_batch_map operation in process mode
|
|
53
|
+
# 6. batch op with per_batch_map operation in thread mode
|
|
54
|
+
def clean_unused_executors():
|
|
55
|
+
"""
|
|
56
|
+
clean the unused executor object in UDF or map with PyFunc process / thread mode
|
|
57
|
+
"""
|
|
58
|
+
key = str(os.getpid()) + "_" + str(threading.currentThread().ident)
|
|
59
|
+
if key in EXECUTORS_LIST:
|
|
60
|
+
EXECUTORS_LIST.pop(key)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class TensorOperation:
|
|
64
|
+
"""
|
|
65
|
+
Base class Tensor Ops
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
def __init__(self):
|
|
69
|
+
super().__init__()
|
|
70
|
+
self.implementation = None
|
|
71
|
+
self.device_target = "CPU"
|
|
72
|
+
|
|
73
|
+
def __call__(self, *input_tensor_list):
|
|
74
|
+
"""
|
|
75
|
+
Call method.
|
|
76
|
+
"""
|
|
77
|
+
# Check PIL Image with device_target
|
|
78
|
+
if (len(input_tensor_list) == 1 and is_pil(input_tensor_list[0])) and self.device_target == "Ascend":
|
|
79
|
+
raise TypeError("The input PIL Image cannot be executed on Ascend, "
|
|
80
|
+
"you can convert the input to the numpy ndarray type.")
|
|
81
|
+
|
|
82
|
+
# Check if Python implementation of op, or PIL input
|
|
83
|
+
if (self.implementation == Implementation.PY) or \
|
|
84
|
+
(len(input_tensor_list) == 1 and is_pil(input_tensor_list[0]) and getattr(self, '_execute_py', None)):
|
|
85
|
+
return self._execute_py(*input_tensor_list)
|
|
86
|
+
|
|
87
|
+
tensor_row = []
|
|
88
|
+
for tensor in input_tensor_list:
|
|
89
|
+
try:
|
|
90
|
+
tensor_row.append(cde.Tensor(np.asarray(tensor)))
|
|
91
|
+
except (RuntimeError, TypeError):
|
|
92
|
+
raise TypeError("Invalid user input. Got {}: {}, cannot be converted into tensor." \
|
|
93
|
+
.format(type(tensor), tensor))
|
|
94
|
+
|
|
95
|
+
# get or create the executor from EXECUTORS_LIST
|
|
96
|
+
executor = None
|
|
97
|
+
key = str(os.getpid()) + "_" + str(threading.currentThread().ident)
|
|
98
|
+
if key in EXECUTORS_LIST:
|
|
99
|
+
# get the executor by process id and thread id
|
|
100
|
+
executor = EXECUTORS_LIST[key]
|
|
101
|
+
# remove the old transform which in executor and update the new transform
|
|
102
|
+
executor.UpdateOperation(self.parse())
|
|
103
|
+
else:
|
|
104
|
+
# create a new executor by process id and thread_id
|
|
105
|
+
executor = cde.Execute(self.parse())
|
|
106
|
+
# add the executor the global EXECUTORS_LIST
|
|
107
|
+
EXECUTORS_LIST[key] = executor
|
|
108
|
+
|
|
109
|
+
output_tensor_list = executor(tensor_row)
|
|
110
|
+
output_numpy_list = [x.as_array() for x in output_tensor_list]
|
|
111
|
+
return output_numpy_list[0] if len(output_numpy_list) == 1 else tuple(output_numpy_list)
|
|
112
|
+
|
|
113
|
+
@staticmethod
|
|
114
|
+
def parse():
|
|
115
|
+
"""parse function - not yet implemented"""
|
|
116
|
+
raise NotImplementedError("TensorOperation has to implement parse() method.")
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class PyTensorOperation:
|
|
120
|
+
"""
|
|
121
|
+
Base Python Tensor Operations class
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
def __init__(self):
|
|
125
|
+
self.transforms = []
|
|
126
|
+
self.output_type = None
|
|
127
|
+
|
|
128
|
+
def __call__(self, img):
|
|
129
|
+
"""
|
|
130
|
+
Call method.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
img (PIL Image): Image to be augmented.
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
PIL Image, augmented image.
|
|
137
|
+
"""
|
|
138
|
+
return self._execute_py(img)
|
|
139
|
+
|
|
140
|
+
@classmethod
|
|
141
|
+
def from_json(cls, json_string):
|
|
142
|
+
"""
|
|
143
|
+
Base from_json for Python tensor operations class
|
|
144
|
+
"""
|
|
145
|
+
json_obj = json.loads(json_string)
|
|
146
|
+
new_op = cls.__new__(cls)
|
|
147
|
+
new_op.__dict__ = json_obj
|
|
148
|
+
if "transforms" in json_obj.keys():
|
|
149
|
+
# operations which have transforms as input, need to call _from_json() for each transform to deseriallize
|
|
150
|
+
transforms = []
|
|
151
|
+
for json_op in json_obj["transforms"]:
|
|
152
|
+
transforms.append(getattr(
|
|
153
|
+
sys.modules.get(json_op.get("python_module")),
|
|
154
|
+
json_op["tensor_op_name"]).from_json(json.dumps(json_op["tensor_op_params"])))
|
|
155
|
+
new_op.transforms = transforms
|
|
156
|
+
if "output_type" in json_obj.keys():
|
|
157
|
+
output_type = np.dtype(json_obj["output_type"])
|
|
158
|
+
new_op.output_type = output_type
|
|
159
|
+
return new_op
|
|
160
|
+
|
|
161
|
+
def to_json(self):
|
|
162
|
+
"""
|
|
163
|
+
Base to_json for Python tensor operations class
|
|
164
|
+
"""
|
|
165
|
+
json_obj = {}
|
|
166
|
+
json_trans = {}
|
|
167
|
+
if "transforms" in self.__dict__.keys():
|
|
168
|
+
# operations which have transforms as input, need to call _to_json() for each transform to serialize
|
|
169
|
+
json_list = []
|
|
170
|
+
for transform in self.transforms:
|
|
171
|
+
json_list.append(json.loads(transform.to_json()))
|
|
172
|
+
json_trans["transforms"] = json_list
|
|
173
|
+
self.__dict__.pop("transforms")
|
|
174
|
+
if "output_type" in self.__dict__.keys():
|
|
175
|
+
json_trans["output_type"] = np.dtype(
|
|
176
|
+
self.__dict__["output_type"]).name
|
|
177
|
+
self.__dict__.pop("output_type")
|
|
178
|
+
json_obj["tensor_op_params"] = self.__dict__
|
|
179
|
+
# append transforms to the tensor_op_params of the operation
|
|
180
|
+
json_obj.get("tensor_op_params").update(json_trans)
|
|
181
|
+
json_obj["tensor_op_name"] = self.__class__.__name__
|
|
182
|
+
json_obj["python_module"] = self.__class__.__module__
|
|
183
|
+
return json.dumps(json_obj)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class CompoundOperation(TensorOperation, PyTensorOperation, ABC):
|
|
187
|
+
"""
|
|
188
|
+
Compound Tensor Operations class
|
|
189
|
+
"""
|
|
190
|
+
|
|
191
|
+
def __init__(self, transforms):
|
|
192
|
+
super(CompoundOperation, self).__init__()
|
|
193
|
+
self.transforms = []
|
|
194
|
+
trans_with_imple = []
|
|
195
|
+
for op in transforms:
|
|
196
|
+
if callable(op) and not hasattr(op, "implementation") and \
|
|
197
|
+
not isinstance(op, c_transforms.TensorOperation) and \
|
|
198
|
+
not isinstance(op, py_transforms.PyTensorOperation) and \
|
|
199
|
+
not isinstance(op, c_vision.ImageTensorOperation):
|
|
200
|
+
op = util.FuncWrapper(op)
|
|
201
|
+
if hasattr(op, "implementation"):
|
|
202
|
+
if op.implementation is not None:
|
|
203
|
+
trans_with_imple.append(op)
|
|
204
|
+
else:
|
|
205
|
+
raise RuntimeError("Mixing old legacy c/py_transforms and new unified transforms is not allowed.")
|
|
206
|
+
self.transforms.append(op)
|
|
207
|
+
|
|
208
|
+
if all([t.implementation == Implementation.PY for t in self.transforms]):
|
|
209
|
+
self.implementation = Implementation.PY
|
|
210
|
+
elif all([t.implementation is not None for t in self.transforms]):
|
|
211
|
+
self.implementation = Implementation.C
|
|
212
|
+
elif not trans_with_imple:
|
|
213
|
+
self.implementation = None
|
|
214
|
+
elif all([t.implementation == Implementation.PY for t in trans_with_imple]):
|
|
215
|
+
self.implementation = Implementation.PY
|
|
216
|
+
elif all([t.implementation == Implementation.C for t in trans_with_imple]):
|
|
217
|
+
self.implementation = Implementation.C
|
|
218
|
+
|
|
219
|
+
@staticmethod
|
|
220
|
+
def parse():
|
|
221
|
+
"""parse function - not yet implemented"""
|
|
222
|
+
raise NotImplementedError("CompoundOperation has to implement parse() method.")
|
|
223
|
+
|
|
224
|
+
def parse_transforms(self):
|
|
225
|
+
operations = []
|
|
226
|
+
for op in self.transforms:
|
|
227
|
+
if op and getattr(op, 'parse', None):
|
|
228
|
+
operations.append(op.parse())
|
|
229
|
+
else:
|
|
230
|
+
operations.append(op)
|
|
231
|
+
return operations
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def not_random(function):
|
|
235
|
+
"""
|
|
236
|
+
Specify the function as "not random", i.e., it produces deterministic result.
|
|
237
|
+
A Python function can only be cached after it is specified as "not random".
|
|
238
|
+
"""
|
|
239
|
+
function.random = False
|
|
240
|
+
return function
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
class Compose(CompoundOperation):
|
|
244
|
+
"""
|
|
245
|
+
Compose a list of transforms into a single transform.
|
|
246
|
+
|
|
247
|
+
.. Note::
|
|
248
|
+
Compose takes a list of transformations in `mindspore.dataset.transforms` / `mindspore.dataset.vision`
|
|
249
|
+
and user-defined Python callable objects to combine as single data augmentation.
|
|
250
|
+
For user-defined Python callable objects, the return value is required to be type numpy.ndarray.
|
|
251
|
+
|
|
252
|
+
Args:
|
|
253
|
+
transforms (list): List of transformations to be applied.
|
|
254
|
+
|
|
255
|
+
Raises:
|
|
256
|
+
TypeError: If `transforms` is not of type list.
|
|
257
|
+
ValueError: If `transforms` is empty.
|
|
258
|
+
TypeError: If elements of `transforms` are neither Python callable objects nor data
|
|
259
|
+
processing operations in transforms.py.
|
|
260
|
+
|
|
261
|
+
Supported Platforms:
|
|
262
|
+
``CPU``
|
|
263
|
+
|
|
264
|
+
Examples:
|
|
265
|
+
>>> import numpy as np
|
|
266
|
+
>>> import mindspore.dataset as ds
|
|
267
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
268
|
+
>>> import mindspore.dataset.vision as vision
|
|
269
|
+
>>> from mindspore.dataset.transforms import Relational
|
|
270
|
+
>>>
|
|
271
|
+
>>> # Use the transform in dataset pipeline mode
|
|
272
|
+
>>> # create a dataset that reads all files in dataset_dir with 8 threads
|
|
273
|
+
>>> data = np.random.randint(0, 255, size=(1, 100, 100, 3)).astype(np.uint8)
|
|
274
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["image"])
|
|
275
|
+
>>>
|
|
276
|
+
>>> # create a list of transformations to be applied to the image data
|
|
277
|
+
>>> transform = transforms.Compose([
|
|
278
|
+
... vision.RandomHorizontalFlip(0.5),
|
|
279
|
+
... vision.ToTensor(),
|
|
280
|
+
... vision.Normalize((0.491, 0.482, 0.447), (0.247, 0.243, 0.262), is_hwc=False),
|
|
281
|
+
... vision.RandomErasing()])
|
|
282
|
+
>>> # apply the transform to the dataset through dataset.map function
|
|
283
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transform, input_columns=["image"])
|
|
284
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
285
|
+
... print(item["image"].shape, item["image"].dtype)
|
|
286
|
+
... break
|
|
287
|
+
(3, 100, 100) float32
|
|
288
|
+
>>>
|
|
289
|
+
>>> # Compose is also be invoked implicitly, by just passing in a list of ops
|
|
290
|
+
>>> # the above example then becomes:
|
|
291
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["image"])
|
|
292
|
+
>>> transforms_list = [vision.RandomHorizontalFlip(0.5),
|
|
293
|
+
... vision.ToTensor(),
|
|
294
|
+
... vision.Normalize((0.491, 0.482, 0.447), (0.247, 0.243, 0.262), is_hwc=False),
|
|
295
|
+
... vision.RandomErasing()]
|
|
296
|
+
>>>
|
|
297
|
+
>>> # apply the transform to the dataset through dataset.map()
|
|
298
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms_list, input_columns=["image"])
|
|
299
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
300
|
+
... print(item["image"].shape, item["image"].dtype)
|
|
301
|
+
... break
|
|
302
|
+
(3, 100, 100) float32
|
|
303
|
+
>>>
|
|
304
|
+
>>> # Certain C++ and Python ops can be combined, but not all of them
|
|
305
|
+
>>> # An example of combined operations
|
|
306
|
+
>>> arr = [0, 1]
|
|
307
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(arr, column_names=["cols"], shuffle=False)
|
|
308
|
+
>>> transformed_list = [transforms.OneHot(2),
|
|
309
|
+
... transforms.Mask(transforms.Relational.EQ, 1)]
|
|
310
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transformed_list, input_columns=["cols"])
|
|
311
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
312
|
+
... print(item["cols"].shape, item["cols"].dtype)
|
|
313
|
+
... break
|
|
314
|
+
(2,) bool
|
|
315
|
+
>>>
|
|
316
|
+
>>> # Here is an example of mixing vision ops
|
|
317
|
+
>>> op_list=[vision.Resize((224, 244)),
|
|
318
|
+
... vision.ToPIL(),
|
|
319
|
+
... np.array, # need to convert PIL image to a NumPy array to pass it to C++ operation
|
|
320
|
+
... vision.Resize((24, 24))]
|
|
321
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["image"])
|
|
322
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=op_list, input_columns=["image"])
|
|
323
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
324
|
+
... print(item["image"].shape, item["image"].dtype)
|
|
325
|
+
... break
|
|
326
|
+
(24, 24, 3) uint8
|
|
327
|
+
>>>
|
|
328
|
+
>>> # Use the transform in eager mode
|
|
329
|
+
>>> data = np.array([1, 2, 3])
|
|
330
|
+
>>> output = transforms.Compose([transforms.Fill(10), transforms.Mask(Relational.EQ, 100)])(data)
|
|
331
|
+
>>> print(output.shape, output.dtype)
|
|
332
|
+
(3,) bool
|
|
333
|
+
"""
|
|
334
|
+
|
|
335
|
+
@check_random_transform_ops
|
|
336
|
+
def __init__(self, transforms):
|
|
337
|
+
super().__init__(transforms)
|
|
338
|
+
self.transforms = Compose.decompose(self.transforms)
|
|
339
|
+
if all(hasattr(transform, "random") and not transform.random for transform in self.transforms):
|
|
340
|
+
self.random = False
|
|
341
|
+
|
|
342
|
+
# pylint: disable=missing-docstring
|
|
343
|
+
@staticmethod
|
|
344
|
+
def decompose(operations):
|
|
345
|
+
# Remove all compose operation from the given list of operations.
|
|
346
|
+
#
|
|
347
|
+
# Args:
|
|
348
|
+
# operations (list): list of transforms.
|
|
349
|
+
#
|
|
350
|
+
# Returns:
|
|
351
|
+
# list of operations without compose operations.
|
|
352
|
+
new_operations = []
|
|
353
|
+
for op in operations:
|
|
354
|
+
if isinstance(op, Compose):
|
|
355
|
+
new_operations.extend(Compose.decompose(op.transforms))
|
|
356
|
+
else:
|
|
357
|
+
new_operations.append(op)
|
|
358
|
+
return new_operations
|
|
359
|
+
|
|
360
|
+
# pylint: disable=missing-docstring
|
|
361
|
+
@staticmethod
|
|
362
|
+
def reduce(operations):
|
|
363
|
+
# Wraps adjacent Python operations in a Compose to allow mixing of Python and C++ operations.
|
|
364
|
+
#
|
|
365
|
+
# Args:
|
|
366
|
+
# operations (list): list of tensor operations.
|
|
367
|
+
#
|
|
368
|
+
# Returns:
|
|
369
|
+
# list, the reduced list of operations.
|
|
370
|
+
new_ops, start_ind, end_ind = [], 0, 0
|
|
371
|
+
for i, op in enumerate(operations):
|
|
372
|
+
if op.implementation == Implementation.C and not isinstance(op, FuncWrapper):
|
|
373
|
+
# reset counts
|
|
374
|
+
if start_ind != end_ind:
|
|
375
|
+
if end_ind == start_ind + 1:
|
|
376
|
+
composed_op = operations[start_ind]
|
|
377
|
+
else:
|
|
378
|
+
composed_op = Compose(operations[start_ind:end_ind])
|
|
379
|
+
composed_op.implementation = Implementation.PY
|
|
380
|
+
new_ops.append(composed_op)
|
|
381
|
+
new_ops.append(op)
|
|
382
|
+
start_ind, end_ind = i + 1, i + 1
|
|
383
|
+
else:
|
|
384
|
+
end_ind += 1
|
|
385
|
+
# do additional check in case the last operation is a Python operation
|
|
386
|
+
if start_ind != end_ind:
|
|
387
|
+
if end_ind == start_ind + 1:
|
|
388
|
+
composed_op = operations[start_ind]
|
|
389
|
+
else:
|
|
390
|
+
composed_op = Compose(operations[start_ind:end_ind])
|
|
391
|
+
composed_op.implementation = Implementation.PY
|
|
392
|
+
new_ops.append(composed_op)
|
|
393
|
+
return new_ops
|
|
394
|
+
|
|
395
|
+
def parse(self):
|
|
396
|
+
operations = self.parse_transforms()
|
|
397
|
+
return cde.ComposeOperation(operations)
|
|
398
|
+
|
|
399
|
+
@check_compose_call
|
|
400
|
+
def _execute_py(self, *args):
|
|
401
|
+
"""
|
|
402
|
+
Execute method.
|
|
403
|
+
|
|
404
|
+
Returns:
|
|
405
|
+
lambda function, Lambda function that takes in an args to apply transformations on.
|
|
406
|
+
"""
|
|
407
|
+
return util.compose(self.transforms, *args)
|
|
408
|
+
|
|
409
|
+
def __call__(self, *args):
|
|
410
|
+
'''
|
|
411
|
+
If PY op exists in self.transforms, should use _execute_py to keep the output types unchanged.
|
|
412
|
+
'''
|
|
413
|
+
if any([t.implementation == Implementation.PY for t in self.transforms]):
|
|
414
|
+
self.implementation = Implementation.PY
|
|
415
|
+
return super().__call__(*args)
|
|
416
|
+
|
|
417
|
+
def release_resource(self):
|
|
418
|
+
# release the executor which is used by current thread/process when
|
|
419
|
+
# use transform in eager mode in map op
|
|
420
|
+
# this will be call in MapOp::WorkerEntry
|
|
421
|
+
clean_unused_executors()
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
class Concatenate(TensorOperation):
|
|
425
|
+
"""
|
|
426
|
+
Concatenate data with input array along given axis, only 1D data is supported.
|
|
427
|
+
|
|
428
|
+
Args:
|
|
429
|
+
axis (int, optional): The axis along which the arrays will be concatenated. Default: ``0``.
|
|
430
|
+
prepend (numpy.ndarray, optional): NumPy array to be prepended to the input array.
|
|
431
|
+
Default: ``None``, not to prepend array.
|
|
432
|
+
append (numpy.ndarray, optional): NumPy array to be appended to the input array.
|
|
433
|
+
Default: ``None``, not to append array.
|
|
434
|
+
|
|
435
|
+
Raises:
|
|
436
|
+
TypeError: If `axis` is not of type int.
|
|
437
|
+
TypeError: If `prepend` is not of type numpy.ndarray.
|
|
438
|
+
TypeError: If `append` is not of type numpy.ndarray.
|
|
439
|
+
|
|
440
|
+
Supported Platforms:
|
|
441
|
+
``CPU``
|
|
442
|
+
|
|
443
|
+
Examples:
|
|
444
|
+
>>> import numpy as np
|
|
445
|
+
>>> import mindspore.dataset as ds
|
|
446
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
447
|
+
>>>
|
|
448
|
+
>>> # Use the transform in dataset pipeline mode
|
|
449
|
+
>>> # concatenate string
|
|
450
|
+
>>> prepend_tensor = np.array(["dw", "df"])
|
|
451
|
+
>>> append_tensor = np.array(["dwsdf", "df"])
|
|
452
|
+
>>> concatenate_op = transforms.Concatenate(0, prepend_tensor, append_tensor)
|
|
453
|
+
>>> data = [["This","is","a","string"]]
|
|
454
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data)
|
|
455
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=concatenate_op)
|
|
456
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
457
|
+
... print(item["column_0"].shape, item["column_0"].dtype)
|
|
458
|
+
(8,) <U6
|
|
459
|
+
>>>
|
|
460
|
+
>>> # Use the transform in eager mode
|
|
461
|
+
>>> data = np.array([1, 2, 3])
|
|
462
|
+
>>> prepend_tensor = np.array([10, 20])
|
|
463
|
+
>>> append_tensor = np.array([100])
|
|
464
|
+
>>> output = transforms.Concatenate(0, prepend_tensor, append_tensor)(data)
|
|
465
|
+
>>> print(output.shape, output.dtype)
|
|
466
|
+
(6,) int64
|
|
467
|
+
"""
|
|
468
|
+
|
|
469
|
+
@check_concat_type
|
|
470
|
+
def __init__(self, axis=0, prepend=None, append=None):
|
|
471
|
+
super().__init__()
|
|
472
|
+
self.axis = axis
|
|
473
|
+
self.prepend = cde.Tensor(np.array(prepend)) if prepend is not None else prepend
|
|
474
|
+
self.append = cde.Tensor(np.array(append)) if append is not None else append
|
|
475
|
+
self.implementation = Implementation.C
|
|
476
|
+
|
|
477
|
+
def parse(self):
|
|
478
|
+
return cde.ConcatenateOperation(self.axis, self.prepend, self.append)
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
class Duplicate(TensorOperation):
|
|
482
|
+
"""
|
|
483
|
+
Duplicate the input tensor to output, only support transform one column each time.
|
|
484
|
+
|
|
485
|
+
Raises:
|
|
486
|
+
RuntimeError: If given tensor has two columns.
|
|
487
|
+
|
|
488
|
+
Supported Platforms:
|
|
489
|
+
``CPU``
|
|
490
|
+
|
|
491
|
+
Examples:
|
|
492
|
+
>>> import numpy as np
|
|
493
|
+
>>> import mindspore.dataset as ds
|
|
494
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
495
|
+
>>>
|
|
496
|
+
>>> # Use the transform in dataset pipeline mode
|
|
497
|
+
>>> # Data before
|
|
498
|
+
>>> # | x |
|
|
499
|
+
>>> # +---------+
|
|
500
|
+
>>> # | [1,2,3] |
|
|
501
|
+
>>> # +---------+
|
|
502
|
+
>>> data = [[1,2,3]]
|
|
503
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["x"])
|
|
504
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms.Duplicate(),
|
|
505
|
+
... input_columns=["x"],
|
|
506
|
+
... output_columns=["x", "y"])
|
|
507
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
508
|
+
... print(item["x"].shape, item["x"].dtype)
|
|
509
|
+
... print(item["y"].shape, item["y"].dtype)
|
|
510
|
+
(3,) int64
|
|
511
|
+
(3,) int64
|
|
512
|
+
>>> # Data after
|
|
513
|
+
>>> # | x | y |
|
|
514
|
+
>>> # +---------+---------+
|
|
515
|
+
>>> # | [1,2,3] | [1,2,3] |
|
|
516
|
+
>>> # +---------+---------+
|
|
517
|
+
>>>
|
|
518
|
+
>>> # Use the transform in eager mode
|
|
519
|
+
>>> data = [1, 2, 3]
|
|
520
|
+
>>> output = transforms.Duplicate()(data)
|
|
521
|
+
>>> print(np.array(output).shape, np.array(output).dtype)
|
|
522
|
+
(2, 3) int64
|
|
523
|
+
"""
|
|
524
|
+
|
|
525
|
+
def __init__(self):
|
|
526
|
+
super().__init__()
|
|
527
|
+
self.implementation = Implementation.C
|
|
528
|
+
|
|
529
|
+
def parse(self):
|
|
530
|
+
return cde.DuplicateOperation()
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
class Fill(TensorOperation):
|
|
534
|
+
"""
|
|
535
|
+
Tensor operation to fill all elements in the tensor with the specified value.
|
|
536
|
+
The output tensor will have the same shape and type as the input tensor.
|
|
537
|
+
|
|
538
|
+
Args:
|
|
539
|
+
fill_value (Union[str, bytes, int, float, bool]): scalar value
|
|
540
|
+
to fill the tensor with.
|
|
541
|
+
|
|
542
|
+
Raises:
|
|
543
|
+
TypeError: If `fill_value` is not of type str, float, bool, int or bytes.
|
|
544
|
+
|
|
545
|
+
Supported Platforms:
|
|
546
|
+
``CPU``
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
Examples:
|
|
550
|
+
>>> import numpy as np
|
|
551
|
+
>>> import mindspore.dataset as ds
|
|
552
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
553
|
+
>>>
|
|
554
|
+
>>> # Use the transform in dataset pipeline mode
|
|
555
|
+
>>> # generate a 1D integer numpy array from 0 to 4
|
|
556
|
+
>>> def generator_1d():
|
|
557
|
+
... for i in range(5):
|
|
558
|
+
... yield (np.array([i]),)
|
|
559
|
+
>>> generator_dataset = ds.GeneratorDataset(generator_1d, column_names="col1")
|
|
560
|
+
>>> # [[0], [1], [2], [3], [4]]
|
|
561
|
+
>>> fill_op = transforms.Fill(3)
|
|
562
|
+
>>> generator_dataset = generator_dataset.map(operations=fill_op)
|
|
563
|
+
>>> for item in generator_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
564
|
+
... print(item["col1"].shape, item["col1"].dtype)
|
|
565
|
+
... break
|
|
566
|
+
(1,) int64
|
|
567
|
+
>>>
|
|
568
|
+
>>> # Use the transform in eager mode
|
|
569
|
+
>>> data = np.array([1, 2, 3])
|
|
570
|
+
>>> output = transforms.Fill(100)(data)
|
|
571
|
+
>>> print(output.shape, output.dtype)
|
|
572
|
+
(3,) int64
|
|
573
|
+
"""
|
|
574
|
+
|
|
575
|
+
@check_fill_value
|
|
576
|
+
def __init__(self, fill_value):
|
|
577
|
+
super().__init__()
|
|
578
|
+
self.fill_value = cde.Tensor(np.array(fill_value))
|
|
579
|
+
self.implementation = Implementation.C
|
|
580
|
+
|
|
581
|
+
def parse(self):
|
|
582
|
+
return cde.FillOperation(self.fill_value)
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
class Mask(TensorOperation):
|
|
586
|
+
r"""
|
|
587
|
+
Mask content of the input tensor with the given predicate.
|
|
588
|
+
Any element of the tensor that matches the predicate will be evaluated to True, otherwise False.
|
|
589
|
+
|
|
590
|
+
Args:
|
|
591
|
+
operator (Relational): relational operators, it can be ``Relational.EQ``, ``Relational.NE``, ``Relational.LT``,
|
|
592
|
+
``Relational.GT``, ``Relational.LE``, ``Relational.GE``, take ``Relational.EQ`` as example,
|
|
593
|
+
EQ refers to equal.
|
|
594
|
+
constant (Union[str, int, float, bool]): Constant to be compared to.
|
|
595
|
+
dtype (mindspore.dtype, optional): Type of the generated mask. Default: ``mstype.bool_``.
|
|
596
|
+
|
|
597
|
+
Raises:
|
|
598
|
+
TypeError: `operator` is not of type Relational.
|
|
599
|
+
TypeError: `constant` is not of type string int, float or bool.
|
|
600
|
+
TypeError: `dtype` is not of type mindspore.dtype.
|
|
601
|
+
|
|
602
|
+
Supported Platforms:
|
|
603
|
+
``CPU``
|
|
604
|
+
|
|
605
|
+
Examples:
|
|
606
|
+
>>> import mindspore.dataset as ds
|
|
607
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
608
|
+
>>> from mindspore.dataset.transforms import Relational
|
|
609
|
+
>>>
|
|
610
|
+
>>> # Use the transform in dataset pipeline mode
|
|
611
|
+
>>> # Data before
|
|
612
|
+
>>> # | col |
|
|
613
|
+
>>> # +---------+
|
|
614
|
+
>>> # | [1,2,3] |
|
|
615
|
+
>>> # +---------+
|
|
616
|
+
>>> data = [[1, 2, 3]]
|
|
617
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["col"])
|
|
618
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms.Mask(Relational.EQ, 2))
|
|
619
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
620
|
+
... print(item["col"].shape, item["col"].dtype)
|
|
621
|
+
(3,) bool
|
|
622
|
+
>>> # Data after
|
|
623
|
+
>>> # | col |
|
|
624
|
+
>>> # +--------------------+
|
|
625
|
+
>>> # | [False,True,False] |
|
|
626
|
+
>>> # +--------------------+
|
|
627
|
+
>>>
|
|
628
|
+
>>> # Use the transform in eager mode
|
|
629
|
+
>>> data = [1, 2, 3]
|
|
630
|
+
>>> output = transforms.Mask(Relational.EQ, 2)(data)
|
|
631
|
+
>>> print(output.shape, output.dtype)
|
|
632
|
+
(3,) bool
|
|
633
|
+
"""
|
|
634
|
+
|
|
635
|
+
@check_mask_op_new
|
|
636
|
+
def __init__(self, operator, constant, dtype=mstype.bool_):
|
|
637
|
+
super().__init__()
|
|
638
|
+
self.operator = operator
|
|
639
|
+
self.dtype = mstype_to_detype(dtype)
|
|
640
|
+
self.constant = cde.Tensor(np.array(constant))
|
|
641
|
+
self.implementation = Implementation.C
|
|
642
|
+
|
|
643
|
+
def parse(self):
|
|
644
|
+
return cde.MaskOperation(DE_C_RELATIONAL.get(self.operator), self.constant, self.dtype)
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
class OneHot(TensorOperation):
|
|
648
|
+
r"""
|
|
649
|
+
Apply One-Hot encoding to the input labels.
|
|
650
|
+
|
|
651
|
+
For a 1-D input of shape :math:`(*)`, an output of shape :math:`(*, num\_classes)` will be
|
|
652
|
+
returned, where the elements with index values equal to the input values will be set to 1,
|
|
653
|
+
and the rest will be set to 0. If a label smoothing rate is specified, the element values
|
|
654
|
+
are further smoothed to enhance generalization.
|
|
655
|
+
|
|
656
|
+
Args:
|
|
657
|
+
num_classes (int): Total number of classes. Must be greater than the maximum value
|
|
658
|
+
of the input labels.
|
|
659
|
+
smoothing_rate (float, optional): The amount of label smoothing. Must be between
|
|
660
|
+
[0.0, 1.0]. Default: ``0.0``, no label smoothing.
|
|
661
|
+
|
|
662
|
+
Raises:
|
|
663
|
+
TypeError: If `num_classes` is not of type int.
|
|
664
|
+
TypeError: If `smoothing_rate` is not of type float.
|
|
665
|
+
ValueError: If `smoothing_rate` is not in range of [0.0, 1.0].
|
|
666
|
+
RuntimeError: If input label is not of type int.
|
|
667
|
+
RuntimeError: If the dimension of the input label is not 1.
|
|
668
|
+
|
|
669
|
+
Supported Platforms:
|
|
670
|
+
``CPU``
|
|
671
|
+
|
|
672
|
+
Examples:
|
|
673
|
+
>>> import numpy as np
|
|
674
|
+
>>> import mindspore.dataset as ds
|
|
675
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
676
|
+
>>>
|
|
677
|
+
>>> # Use the transform in dataset pipeline mode
|
|
678
|
+
>>> data = [1, 2, 3, 4, 5, 6, 7, 8]
|
|
679
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["label"])
|
|
680
|
+
>>>
|
|
681
|
+
>>> # Assume that dataset has 10 classes, thus the label ranges from 0 to 9
|
|
682
|
+
>>> onehot_op = transforms.OneHot(num_classes=10)
|
|
683
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=onehot_op, input_columns=["label"])
|
|
684
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
685
|
+
... print(item["label"].shape, item["label"].dtype)
|
|
686
|
+
... break
|
|
687
|
+
(10,) int64
|
|
688
|
+
>>>
|
|
689
|
+
>>> # Use the transform in eager mode
|
|
690
|
+
>>> data = np.array([1, 2, 3])
|
|
691
|
+
>>> output = transforms.OneHot(num_classes=5, smoothing_rate=0)(data)
|
|
692
|
+
>>> print(output.shape, output.dtype)
|
|
693
|
+
(3, 5) int64
|
|
694
|
+
"""
|
|
695
|
+
|
|
696
|
+
@check_one_hot_op
|
|
697
|
+
def __init__(self, num_classes, smoothing_rate=0.0):
|
|
698
|
+
super().__init__()
|
|
699
|
+
self.num_classes = num_classes
|
|
700
|
+
self.random = False
|
|
701
|
+
self.smoothing_rate = smoothing_rate
|
|
702
|
+
|
|
703
|
+
def parse(self):
|
|
704
|
+
return cde.OneHotOperation(self.num_classes, self.smoothing_rate)
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
class PadEnd(TensorOperation):
|
|
708
|
+
"""
|
|
709
|
+
Pad input tensor according to pad_shape, input tensor needs to have same rank.
|
|
710
|
+
|
|
711
|
+
Args:
|
|
712
|
+
pad_shape (list(int)): List of integers representing the shape needed. Dimensions that set to ``None`` will
|
|
713
|
+
not be padded (i.e., original dim will be used). Shorter dimensions will truncate the values.
|
|
714
|
+
pad_value (Union[str, bytes, int, float, bool], optional): Value used to pad. Default: ``None``.
|
|
715
|
+
Default to ``0`` in case of tensors of Numbers, or empty string in case of tensors of strings.
|
|
716
|
+
|
|
717
|
+
Raises:
|
|
718
|
+
TypeError: If `pad_shape` is not of type list.
|
|
719
|
+
TypeError: If `pad_value` is not of type str, float, bool, int or bytes.
|
|
720
|
+
TypeError: If elements of `pad_shape` is not of type int.
|
|
721
|
+
ValueError: If elements of `pad_shape` is not of positive.
|
|
722
|
+
|
|
723
|
+
Supported Platforms:
|
|
724
|
+
``CPU``
|
|
725
|
+
|
|
726
|
+
Examples:
|
|
727
|
+
>>> import mindspore.dataset as ds
|
|
728
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
729
|
+
>>>
|
|
730
|
+
>>> # Use the transform in dataset pipeline mode
|
|
731
|
+
>>> # Data before
|
|
732
|
+
>>> # | col |
|
|
733
|
+
>>> # +---------+
|
|
734
|
+
>>> # | [1,2,3] |
|
|
735
|
+
>>> # +---------|
|
|
736
|
+
>>> data = [[1, 2, 3]]
|
|
737
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["col"])
|
|
738
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms.PadEnd(pad_shape=[4], pad_value=10))
|
|
739
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
740
|
+
... print(item["col"].shape, item["col"].dtype)
|
|
741
|
+
... break
|
|
742
|
+
(4,) int64
|
|
743
|
+
>>> # Data after
|
|
744
|
+
>>> # | col |
|
|
745
|
+
>>> # +------------+
|
|
746
|
+
>>> # | [1,2,3,10] |
|
|
747
|
+
>>> # +------------|
|
|
748
|
+
>>>
|
|
749
|
+
>>> # Use the transform in eager mode
|
|
750
|
+
>>> data = [1, 2, 3]
|
|
751
|
+
>>> output = transforms.PadEnd(pad_shape=[4], pad_value=10)(data)
|
|
752
|
+
>>> print(output.shape, output.dtype)
|
|
753
|
+
(4,) int64
|
|
754
|
+
"""
|
|
755
|
+
|
|
756
|
+
@check_pad_end
|
|
757
|
+
def __init__(self, pad_shape, pad_value=None):
|
|
758
|
+
super().__init__()
|
|
759
|
+
self.pad_shape = cde.TensorShape(pad_shape)
|
|
760
|
+
self.pad_value = cde.Tensor(np.array(pad_value)) if pad_value is not None else pad_value
|
|
761
|
+
self.implementation = Implementation.C
|
|
762
|
+
|
|
763
|
+
def parse(self):
|
|
764
|
+
return cde.PadEndOperation(self.pad_shape, self.pad_value)
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
class Plugin(TensorOperation):
|
|
768
|
+
"""
|
|
769
|
+
Plugin support for MindData. Use this class to dynamically load a .so file (shared library) and execute its symbols.
|
|
770
|
+
|
|
771
|
+
Args:
|
|
772
|
+
lib_path (str): Path to .so file which is compiled to support MindData plugin.
|
|
773
|
+
func_name (str): Name of the function to load from the .so file.
|
|
774
|
+
user_args (str, optional): Serialized args to pass to the plugin. Only needed if "func_name" requires one.
|
|
775
|
+
|
|
776
|
+
Raises:
|
|
777
|
+
TypeError: If `lib_path` is not of type string.
|
|
778
|
+
TypeError: If `func_name` is not of type string.
|
|
779
|
+
TypeError: If `user_args` is not of type string.
|
|
780
|
+
|
|
781
|
+
Supported Platforms:
|
|
782
|
+
``CPU``
|
|
783
|
+
|
|
784
|
+
Examples:
|
|
785
|
+
>>> import mindspore.dataset as ds
|
|
786
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
787
|
+
>>>
|
|
788
|
+
>>> plugin = transforms.Plugin("pluginlib.so", "PluginDecode")
|
|
789
|
+
>>> image_folder_dataset = ds.ImageFolderDataset("/path/to/image_folder_dataset_directory")
|
|
790
|
+
>>> image_folder_dataset = image_folder_dataset.map(operations=plugin)
|
|
791
|
+
"""
|
|
792
|
+
|
|
793
|
+
@check_plugin
|
|
794
|
+
def __init__(self, lib_path, func_name, user_args=None):
|
|
795
|
+
super().__init__()
|
|
796
|
+
self.lib_path = lib_path
|
|
797
|
+
self.func_name = func_name
|
|
798
|
+
self.user_args = str() if (user_args is None) else user_args
|
|
799
|
+
self.implementation = Implementation.C
|
|
800
|
+
|
|
801
|
+
def parse(self):
|
|
802
|
+
return cde.PluginOperation(self.lib_path, self.func_name, self.user_args)
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
class RandomApply(CompoundOperation):
|
|
806
|
+
"""
|
|
807
|
+
Randomly perform a series of transforms with a given probability.
|
|
808
|
+
|
|
809
|
+
Args:
|
|
810
|
+
transforms (list): List of transformations to be applied.
|
|
811
|
+
prob (float, optional): The probability to apply the transformation list. Default: ``0.5``.
|
|
812
|
+
|
|
813
|
+
Raises:
|
|
814
|
+
TypeError: If `transforms` is not of type list.
|
|
815
|
+
ValueError: If `transforms` is empty.
|
|
816
|
+
TypeError: If elements of `transforms` are neither Python callable objects nor data
|
|
817
|
+
processing operations in transforms.py.
|
|
818
|
+
TypeError: If `prob` is not of type float.
|
|
819
|
+
ValueError: If `prob` is not in range [0.0, 1.0].
|
|
820
|
+
|
|
821
|
+
Supported Platforms:
|
|
822
|
+
``CPU``
|
|
823
|
+
|
|
824
|
+
Examples:
|
|
825
|
+
>>> import numpy as np
|
|
826
|
+
>>> import mindspore.dataset as ds
|
|
827
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
828
|
+
>>> import mindspore.dataset.vision as vision
|
|
829
|
+
>>> from mindspore.dataset.transforms import Compose
|
|
830
|
+
>>>
|
|
831
|
+
>>> # Use the transform in dataset pipeline mode
|
|
832
|
+
>>> seed = ds.config.get_seed()
|
|
833
|
+
>>> ds.config.set_seed(12345)
|
|
834
|
+
>>> transforms_list = [vision.RandomHorizontalFlip(0.5),
|
|
835
|
+
... vision.Normalize((0.491, 0.482, 0.447), (0.247, 0.243, 0.262)),
|
|
836
|
+
... vision.RandomErasing()]
|
|
837
|
+
>>> composed_transform = Compose([transforms.RandomApply(transforms_list, prob=0.6),
|
|
838
|
+
... vision.ToTensor()])
|
|
839
|
+
>>>
|
|
840
|
+
>>> data = np.random.randint(0, 255, size=(1, 100, 100, 3)).astype(np.uint8)
|
|
841
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["image"])
|
|
842
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=composed_transform, input_columns=["image"])
|
|
843
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
844
|
+
... print(item["image"].shape, item["image"].dtype)
|
|
845
|
+
... break
|
|
846
|
+
(3, 100, 100) float32
|
|
847
|
+
>>>
|
|
848
|
+
>>> # Use the transform in eager mode
|
|
849
|
+
>>> data = np.random.randint(0, 255, size=(100, 100, 3)).astype(np.uint8)
|
|
850
|
+
>>> transform = [vision.HsvToRgb(is_hwc=True), vision.Crop((0, 0), 10), vision.ToTensor()]
|
|
851
|
+
>>> output = transforms.RandomApply(transform, prob=1.0)(data)
|
|
852
|
+
>>> print(output.shape, output.dtype)
|
|
853
|
+
(3, 10, 10) float32
|
|
854
|
+
>>> ds.config.set_seed(seed)
|
|
855
|
+
"""
|
|
856
|
+
|
|
857
|
+
@check_random_transform_ops
|
|
858
|
+
def __init__(self, transforms, prob=0.5):
|
|
859
|
+
super().__init__(transforms)
|
|
860
|
+
self.prob = prob
|
|
861
|
+
|
|
862
|
+
def parse(self):
|
|
863
|
+
operations = self.parse_transforms()
|
|
864
|
+
return cde.RandomApplyOperation(self.prob, operations)
|
|
865
|
+
|
|
866
|
+
def _execute_py(self, img):
|
|
867
|
+
"""
|
|
868
|
+
Execute method.
|
|
869
|
+
|
|
870
|
+
Args:
|
|
871
|
+
img (PIL image): Image to be randomly applied a list transformations.
|
|
872
|
+
|
|
873
|
+
Returns:
|
|
874
|
+
img (PIL image), Transformed image.
|
|
875
|
+
"""
|
|
876
|
+
return util.random_apply(img, self.transforms, self.prob)
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
class RandomChoice(CompoundOperation):
|
|
880
|
+
"""
|
|
881
|
+
Randomly select one transform from a list to apply.
|
|
882
|
+
|
|
883
|
+
Args:
|
|
884
|
+
transforms (list): List of transforms to be selected from.
|
|
885
|
+
|
|
886
|
+
Raises:
|
|
887
|
+
TypeError: If `transforms` is not of type list.
|
|
888
|
+
ValueError: If `transforms` is empty.
|
|
889
|
+
TypeError: If elements of `transforms` are neither Python callable objects nor data
|
|
890
|
+
processing operations in transforms.py.
|
|
891
|
+
|
|
892
|
+
Supported Platforms:
|
|
893
|
+
``CPU``
|
|
894
|
+
|
|
895
|
+
Examples:
|
|
896
|
+
>>> import numpy as np
|
|
897
|
+
>>> import mindspore.dataset as ds
|
|
898
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
899
|
+
>>> import mindspore.dataset.vision as vision
|
|
900
|
+
>>> from mindspore.dataset.transforms import Compose
|
|
901
|
+
>>>
|
|
902
|
+
>>> # Use the transform in dataset pipeline mode
|
|
903
|
+
>>> seed = ds.config.get_seed()
|
|
904
|
+
>>> ds.config.set_seed(12345)
|
|
905
|
+
>>> transforms_list = [vision.RandomHorizontalFlip(0.5),
|
|
906
|
+
... vision.Normalize((0.491, 0.482, 0.447), (0.247, 0.243, 0.262)),
|
|
907
|
+
... vision.RandomErasing()]
|
|
908
|
+
>>> composed_transform = Compose([transforms.RandomChoice(transforms_list),
|
|
909
|
+
... vision.ToTensor()])
|
|
910
|
+
>>>
|
|
911
|
+
>>> data = np.random.randint(0, 255, size=(1, 100, 100, 3)).astype(np.uint8)
|
|
912
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["image"])
|
|
913
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=composed_transform, input_columns=["image"])
|
|
914
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
915
|
+
... print(item["image"].shape, item["image"].dtype)
|
|
916
|
+
... break
|
|
917
|
+
(3, 100, 100) float32
|
|
918
|
+
>>>
|
|
919
|
+
>>> # Use the transform in eager mode
|
|
920
|
+
>>> data = np.array([1, 2, 3])
|
|
921
|
+
>>> output = transforms.RandomChoice([transforms.Fill(100)])(data)
|
|
922
|
+
>>> print(output.shape, output.dtype)
|
|
923
|
+
(3,) int64
|
|
924
|
+
>>> ds.config.set_seed(seed)
|
|
925
|
+
"""
|
|
926
|
+
|
|
927
|
+
@check_random_transform_ops
|
|
928
|
+
def __init__(self, transforms):
|
|
929
|
+
super().__init__(transforms)
|
|
930
|
+
|
|
931
|
+
def parse(self):
|
|
932
|
+
operations = self.parse_transforms()
|
|
933
|
+
return cde.RandomChoiceOperation(operations)
|
|
934
|
+
|
|
935
|
+
def _execute_py(self, img):
|
|
936
|
+
"""
|
|
937
|
+
Execute method.
|
|
938
|
+
|
|
939
|
+
Args:
|
|
940
|
+
img (PIL image): Image to be applied transformation.
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
Returns:
|
|
944
|
+
img (PIL image), Transformed image.
|
|
945
|
+
"""
|
|
946
|
+
return util.random_choice(img, self.transforms)
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
class RandomOrder(PyTensorOperation):
|
|
950
|
+
"""
|
|
951
|
+
Perform a series of transforms to the input image in a random order.
|
|
952
|
+
|
|
953
|
+
Args:
|
|
954
|
+
transforms (list): List of the transformations to apply.
|
|
955
|
+
|
|
956
|
+
Raises:
|
|
957
|
+
TypeError: If `transforms` is not of type list.
|
|
958
|
+
TypeError: If elements of `transforms` are neither Python callable objects nor data
|
|
959
|
+
processing operations in mindspore.dataset.transforms.transforms.
|
|
960
|
+
ValueError: If `transforms` is empty.
|
|
961
|
+
|
|
962
|
+
Supported Platforms:
|
|
963
|
+
``CPU``
|
|
964
|
+
|
|
965
|
+
Examples:
|
|
966
|
+
>>> import numpy as np
|
|
967
|
+
>>> import mindspore.dataset as ds
|
|
968
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
969
|
+
>>> import mindspore.dataset.vision as vision
|
|
970
|
+
>>> from mindspore.dataset.transforms import Compose, Relational
|
|
971
|
+
>>>
|
|
972
|
+
>>> # Use the transform in dataset pipeline mode
|
|
973
|
+
>>> seed = ds.config.get_seed()
|
|
974
|
+
>>> ds.config.set_seed(12345)
|
|
975
|
+
>>> transforms_list = [vision.RandomHorizontalFlip(0.5),
|
|
976
|
+
... vision.Normalize((0.491, 0.482, 0.447), (0.247, 0.243, 0.262)),
|
|
977
|
+
... vision.RandomErasing()]
|
|
978
|
+
>>> composed_transform = Compose([transforms.RandomOrder(transforms_list),
|
|
979
|
+
... vision.ToTensor()])
|
|
980
|
+
>>>
|
|
981
|
+
>>> data = np.random.randint(0, 255, size=(1, 100, 100, 3)).astype(np.uint8)
|
|
982
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["image"])
|
|
983
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=composed_transform, input_columns=["image"])
|
|
984
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
985
|
+
... print(item["image"].shape, item["image"].dtype)
|
|
986
|
+
... break
|
|
987
|
+
(3, 100, 100) float32
|
|
988
|
+
>>>
|
|
989
|
+
>>> # Use the transform in eager mode
|
|
990
|
+
>>> data = np.array([1, 2, 3])
|
|
991
|
+
>>> output = transforms.RandomOrder([transforms.Mask(Relational.EQ, 100)])(data)
|
|
992
|
+
>>> print(output.shape, output.dtype)
|
|
993
|
+
(3,) bool
|
|
994
|
+
>>> ds.config.set_seed(seed)
|
|
995
|
+
"""
|
|
996
|
+
|
|
997
|
+
@check_random_transform_ops
|
|
998
|
+
def __init__(self, transforms):
|
|
999
|
+
super().__init__()
|
|
1000
|
+
self.transforms = transforms
|
|
1001
|
+
self.implementation = Implementation.PY
|
|
1002
|
+
|
|
1003
|
+
def _execute_py(self, img):
|
|
1004
|
+
"""
|
|
1005
|
+
Execute method.
|
|
1006
|
+
|
|
1007
|
+
Args:
|
|
1008
|
+
img (PIL image): Image to apply transformations in a random order.
|
|
1009
|
+
|
|
1010
|
+
Returns:
|
|
1011
|
+
img (PIL image), Transformed image.
|
|
1012
|
+
"""
|
|
1013
|
+
return util.random_order(img, self.transforms)
|
|
1014
|
+
|
|
1015
|
+
|
|
1016
|
+
class Relational(IntEnum):
|
|
1017
|
+
"""
|
|
1018
|
+
Relational operator.
|
|
1019
|
+
|
|
1020
|
+
Available values are as follows:
|
|
1021
|
+
|
|
1022
|
+
- ``Relational.EQ``: Equal to.
|
|
1023
|
+
- ``Relational.NE``: Not equal to.
|
|
1024
|
+
- ``Relational.GT``: Greater than.
|
|
1025
|
+
- ``Relational.GE``: Greater than or equal to.
|
|
1026
|
+
- ``Relational.LT``: Less than.
|
|
1027
|
+
- ``Relational.LE``: Less than or equal to.
|
|
1028
|
+
"""
|
|
1029
|
+
EQ = 0
|
|
1030
|
+
NE = 1
|
|
1031
|
+
GT = 2
|
|
1032
|
+
GE = 3
|
|
1033
|
+
LT = 4
|
|
1034
|
+
LE = 5
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
DE_C_RELATIONAL = {Relational.EQ: cde.RelationalOp.EQ,
|
|
1038
|
+
Relational.NE: cde.RelationalOp.NE,
|
|
1039
|
+
Relational.GT: cde.RelationalOp.GT,
|
|
1040
|
+
Relational.GE: cde.RelationalOp.GE,
|
|
1041
|
+
Relational.LT: cde.RelationalOp.LT,
|
|
1042
|
+
Relational.LE: cde.RelationalOp.LE}
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
class _SliceOption(cde.SliceOption):
|
|
1046
|
+
"""
|
|
1047
|
+
Internal class SliceOption to be used with SliceOperation
|
|
1048
|
+
|
|
1049
|
+
Args:
|
|
1050
|
+
_SliceOption(Union[int, list(int), slice, None, Ellipsis, bool, _SliceOption]):
|
|
1051
|
+
|
|
1052
|
+
1. :py:obj:`int`: Slice this index only along the dimension. Negative index is supported.
|
|
1053
|
+
2. :py:obj:`list(int)`: Slice these indices along the dimension. Negative indices are supported.
|
|
1054
|
+
3. :py:obj:`slice`: Slice the generated indices from the slice object along the dimension.
|
|
1055
|
+
4. :py:obj:`None`: Slice the whole dimension. Similar to :py:obj:`:` in Python indexing.
|
|
1056
|
+
5. :py:obj:`Ellipsis`: Slice the whole dimension. Similar to :py:obj:`:` in Python indexing.
|
|
1057
|
+
6. :py:obj:`boolean`: Slice the whole dimension. Similar to :py:obj:`:` in Python indexing.
|
|
1058
|
+
"""
|
|
1059
|
+
|
|
1060
|
+
@check_slice_option
|
|
1061
|
+
def __init__(self, slice_option):
|
|
1062
|
+
if isinstance(slice_option, int) and not isinstance(slice_option, bool):
|
|
1063
|
+
slice_option = [slice_option]
|
|
1064
|
+
elif slice_option is Ellipsis:
|
|
1065
|
+
slice_option = True
|
|
1066
|
+
elif slice_option is None:
|
|
1067
|
+
slice_option = True
|
|
1068
|
+
super().__init__(slice_option)
|
|
1069
|
+
|
|
1070
|
+
|
|
1071
|
+
class Slice(TensorOperation):
|
|
1072
|
+
"""
|
|
1073
|
+
Extract a slice from the input.
|
|
1074
|
+
|
|
1075
|
+
Currently, only 1-D input is supported.
|
|
1076
|
+
|
|
1077
|
+
Args:
|
|
1078
|
+
slices (Union[int, list[int], slice, Ellipsis]): The desired slice.
|
|
1079
|
+
|
|
1080
|
+
- If the input type is int, it will slice the element with the specified index value.
|
|
1081
|
+
Negative index is also supported.
|
|
1082
|
+
- If the input type is list[int], it will slice all the elements with the specified index values.
|
|
1083
|
+
Negative index is also supported.
|
|
1084
|
+
- If the input type is `slice <https://docs.python.org/3.7/library/functions.html#slice>`_ ,
|
|
1085
|
+
it will slice according to its specified start position, stop position and step size.
|
|
1086
|
+
- If the input type is `Ellipsis <https://docs.python.org/3.7/library/constants.html#Ellipsis>`_ ,
|
|
1087
|
+
all elements will be sliced.
|
|
1088
|
+
- If the input is None, all elements will be sliced.
|
|
1089
|
+
|
|
1090
|
+
Raises:
|
|
1091
|
+
TypeError: If `slices` is not of type Union[int, list[int], slice, Ellipsis].
|
|
1092
|
+
|
|
1093
|
+
Supported Platforms:
|
|
1094
|
+
``CPU``
|
|
1095
|
+
|
|
1096
|
+
Examples:
|
|
1097
|
+
>>> import numpy as np
|
|
1098
|
+
>>> import mindspore.dataset as ds
|
|
1099
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
1100
|
+
>>>
|
|
1101
|
+
>>> # Use the transform in dataset pipeline mode
|
|
1102
|
+
>>> # Data before
|
|
1103
|
+
>>> # | col |
|
|
1104
|
+
>>> # +---------+
|
|
1105
|
+
>>> # | [1,2,3] |
|
|
1106
|
+
>>> # +---------|
|
|
1107
|
+
>>> data = [[1, 2, 3]]
|
|
1108
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["col"])
|
|
1109
|
+
>>> # slice indices 1 and 2 only
|
|
1110
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms.Slice(slice(1,3)))
|
|
1111
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
1112
|
+
... print(item["col"].shape, item["col"].dtype)
|
|
1113
|
+
... break
|
|
1114
|
+
(2,) int64
|
|
1115
|
+
>>> # Data after
|
|
1116
|
+
>>> # | col |
|
|
1117
|
+
>>> # +---------+
|
|
1118
|
+
>>> # | [2,3] |
|
|
1119
|
+
>>> # +---------|
|
|
1120
|
+
>>>
|
|
1121
|
+
>>> # Use the transform in eager mode
|
|
1122
|
+
>>> data = np.array([1, 2, 3])
|
|
1123
|
+
>>> output = transforms.Slice(slice(1, 3))(data)
|
|
1124
|
+
>>> print(output.shape, output.dtype)
|
|
1125
|
+
(2,) int64
|
|
1126
|
+
"""
|
|
1127
|
+
|
|
1128
|
+
@check_slice_op
|
|
1129
|
+
def __init__(self, *slices):
|
|
1130
|
+
super().__init__()
|
|
1131
|
+
slice_input_ = list(slices)
|
|
1132
|
+
slice_input_ = [_SliceOption(slice_dim) for slice_dim in slice_input_]
|
|
1133
|
+
self.slice_input_ = slice_input_
|
|
1134
|
+
self.implementation = Implementation.C
|
|
1135
|
+
|
|
1136
|
+
def parse(self):
|
|
1137
|
+
return cde.SliceOperation(self.slice_input_)
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
class TypeCast(TensorOperation):
|
|
1141
|
+
"""
|
|
1142
|
+
Tensor operation to cast to a given MindSpore data type or NumPy data type.
|
|
1143
|
+
|
|
1144
|
+
Note:
|
|
1145
|
+
This operation is executed on the CPU by default, but it is also supported
|
|
1146
|
+
to be executed on the GPU or Ascend via heterogeneous acceleration.
|
|
1147
|
+
|
|
1148
|
+
Args:
|
|
1149
|
+
data_type (Union[mindspore.dtype, numpy.dtype]): mindspore.dtype or numpy.dtype (e.g. `numpy.float32`)
|
|
1150
|
+
to be cast to.
|
|
1151
|
+
|
|
1152
|
+
Raises:
|
|
1153
|
+
TypeError: If `data_type` is not of MindSpore data type bool, int, float, string or type :class:`numpy.dtype` .
|
|
1154
|
+
|
|
1155
|
+
Supported Platforms:
|
|
1156
|
+
``CPU`` ``GPU`` ``Ascend``
|
|
1157
|
+
|
|
1158
|
+
Examples:
|
|
1159
|
+
>>> import numpy as np
|
|
1160
|
+
>>> import mindspore.dataset as ds
|
|
1161
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
1162
|
+
>>> from mindspore import dtype as mstype
|
|
1163
|
+
>>>
|
|
1164
|
+
>>> # Use the transform in dataset pipeline mode
|
|
1165
|
+
>>> # Generate 1d int numpy array from 0 - 63
|
|
1166
|
+
>>> def generator_1d():
|
|
1167
|
+
... for i in range(64):
|
|
1168
|
+
... yield (np.array([i]),)
|
|
1169
|
+
>>>
|
|
1170
|
+
>>> generator_dataset = ds.GeneratorDataset(generator_1d, column_names='col')
|
|
1171
|
+
>>> type_cast_op = transforms.TypeCast(mstype.int32)
|
|
1172
|
+
>>> generator_dataset = generator_dataset.map(operations=type_cast_op)
|
|
1173
|
+
>>> for item in generator_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
1174
|
+
... print(item["col"].shape, item["col"].dtype)
|
|
1175
|
+
... break
|
|
1176
|
+
(1,) int32
|
|
1177
|
+
>>>
|
|
1178
|
+
>>> # Use the transform in eager mode
|
|
1179
|
+
>>> data = np.array([2.71606445312564e-03, 6.3476562564e-03]).astype(np.float64)
|
|
1180
|
+
>>> output = transforms.TypeCast(np.float16)(data)
|
|
1181
|
+
>>> print(output.shape, output.dtype)
|
|
1182
|
+
(2,) float16
|
|
1183
|
+
"""
|
|
1184
|
+
|
|
1185
|
+
@check_type_cast
|
|
1186
|
+
def __init__(self, data_type):
|
|
1187
|
+
super().__init__()
|
|
1188
|
+
if isinstance(data_type, typing.Type):
|
|
1189
|
+
data_type = mstype_to_detype(data_type)
|
|
1190
|
+
else:
|
|
1191
|
+
data_type = nptype_to_detype(data_type)
|
|
1192
|
+
self.data_type = str(data_type)
|
|
1193
|
+
self.implementation = Implementation.C
|
|
1194
|
+
|
|
1195
|
+
def parse(self):
|
|
1196
|
+
return cde.TypeCastOperation(self.data_type)
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
class Unique(TensorOperation):
|
|
1200
|
+
"""
|
|
1201
|
+
Perform the unique operation on the input tensor, only support transform one column each time.
|
|
1202
|
+
|
|
1203
|
+
Return 3 tensor: unique output tensor, index tensor, count tensor.
|
|
1204
|
+
|
|
1205
|
+
- Output tensor contains all the unique elements of the input tensor
|
|
1206
|
+
in the same order that they occur in the input tensor.
|
|
1207
|
+
- Index tensor that contains the index of each element of the input tensor in the unique output tensor.
|
|
1208
|
+
- Count tensor that contains the count of each element of the output tensor in the input tensor.
|
|
1209
|
+
|
|
1210
|
+
Note:
|
|
1211
|
+
Call batch op before calling this function.
|
|
1212
|
+
|
|
1213
|
+
Raises:
|
|
1214
|
+
RuntimeError: If given Tensor has two columns.
|
|
1215
|
+
|
|
1216
|
+
Supported Platforms:
|
|
1217
|
+
``CPU``
|
|
1218
|
+
|
|
1219
|
+
Examples:
|
|
1220
|
+
>>> import numpy as np
|
|
1221
|
+
>>> import mindspore.dataset as ds
|
|
1222
|
+
>>> import mindspore.dataset.transforms as transforms
|
|
1223
|
+
>>>
|
|
1224
|
+
>>> # Use the transform in dataset pipeline mode
|
|
1225
|
+
>>> # Data before
|
|
1226
|
+
>>> # | x |
|
|
1227
|
+
>>> # +--------------------+
|
|
1228
|
+
>>> # | [[0,1,2], [1,2,3]] |
|
|
1229
|
+
>>> # +--------------------+
|
|
1230
|
+
>>> data = [[[0,1,2], [1,2,3]]]
|
|
1231
|
+
>>> numpy_slices_dataset = ds.NumpySlicesDataset(data, ["x"])
|
|
1232
|
+
>>> numpy_slices_dataset = numpy_slices_dataset.map(operations=transforms.Unique(),
|
|
1233
|
+
... input_columns=["x"],
|
|
1234
|
+
... output_columns=["x", "y", "z"])
|
|
1235
|
+
>>> for item in numpy_slices_dataset.create_dict_iterator(num_epochs=1, output_numpy=True):
|
|
1236
|
+
... print(item["x"].shape, item["y"].shape, item["z"].shape)
|
|
1237
|
+
... print(item["x"].dtype, item["y"].dtype, item["z"].dtype)
|
|
1238
|
+
(4,) (6,) (4,)
|
|
1239
|
+
int64 int32 int32
|
|
1240
|
+
>>> # Data after
|
|
1241
|
+
>>> # | x | y |z |
|
|
1242
|
+
>>> # +---------+-----------------+---------+
|
|
1243
|
+
>>> # | [0,1,2,3] | [0,1,2,1,2,3] | [1,2,2,1]
|
|
1244
|
+
>>> # +---------+-----------------+---------+
|
|
1245
|
+
>>>
|
|
1246
|
+
>>> # Use the transform in eager mode
|
|
1247
|
+
>>> data = [[0, -1, -2, -1, 2], [2, -0, 2, 1, -3]]
|
|
1248
|
+
>>> output = transforms.Unique()(data)
|
|
1249
|
+
>>> print(output[0].shape, output[1].shape, output[2].shape)
|
|
1250
|
+
(6,) (10,) (6,)
|
|
1251
|
+
>>> print(output[0].dtype, output[1].dtype, output[2].dtype)
|
|
1252
|
+
int64 int32 int32
|
|
1253
|
+
"""
|
|
1254
|
+
|
|
1255
|
+
def __init__(self):
|
|
1256
|
+
super().__init__()
|
|
1257
|
+
self.implementation = Implementation.C
|
|
1258
|
+
|
|
1259
|
+
def parse(self):
|
|
1260
|
+
return cde.UniqueOperation()
|