From c4fe1da194cbb60e3d750a406dbe910fde8ac206 Mon Sep 17 00:00:00 2001 From: xiaying Date: Thu, 12 Mar 2020 09:45:16 +0800 Subject: [PATCH] [Python:Refractor] Add Image train Demo and move dirs --- pymnn/INSTALL.md | 10 ++ .../examples/MNNTrain/Image/mobilenetCls4.py | 85 +++++++++++++ pymnn/examples/MNNTrain/Image/quanByMSE.py | 65 ++++++++++ pymnn/examples/MNNTrain/Mnist/learn.py | 84 ++++++------- pymnn/pip_package/MNN/__init__.py | 4 + pymnn/pip_package/MNN/tools/__init__.py | 3 + .../{MNNTools => MNN/tools}/mnn.py | 0 .../tools/mnn_fb}/ACCESS_TYPE.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/ArgMax.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/AsString.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Attribute.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Axis.py | 0 .../tools/mnn_fb}/BatchMatMulParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/BatchNorm.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/BinaryOp.py | 0 .../tools/mnn_fb}/BinaryOpOperation.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Blob.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/CastParam.py | 0 .../tools/mnn_fb}/Convolution2D.py | 0 .../tools/mnn_fb}/Convolution2DCommon.py | 0 .../tools/mnn_fb}/Convolution3D.py | 0 .../tools/mnn_fb}/Convolution3DCommon.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Crop.py | 0 .../tools/mnn_fb}/CropAndResize.py | 0 .../tools/mnn_fb}/CropAndResizeMethod.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/DataType.py | 0 .../tools/mnn_fb}/DepthSpaceParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Dequantize.py | 0 .../tools/mnn_fb}/DetectionOutput.py | 0 .../mnn_fb}/DetectionPostProcessParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/ELU.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Eltwise.py | 0 .../tools/mnn_fb}/EltwiseInt8.py | 0 .../tools/mnn_fb}/EltwiseType.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/ExpandDims.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Extra.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Fill.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Flatten.py | 0 .../tools/mnn_fb}/ForwardType.py | 0 .../tools/mnn_fb}/FusedActivation.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Gather.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/GatherV2.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/GpuBuffer.py | 0 .../tools/mnn_fb}/GpuFunction.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/GpuLibrary.py | 0 .../tools/mnn_fb}/GpuPipeline.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/GpuStage.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/IDSTQuan.py | 0 .../tools/mnn_fb}/InnerProduct.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Input.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Interp.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/LRN.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/LSTM.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/ListValue.py | 0 .../tools/mnn_fb}/MNN_DATA_FORMAT.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/MatMul.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/ModeFormat.py | 0 .../tools/mnn_fb}/MomentsParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Net.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/NetSource.py | 0 .../tools/mnn_fb}/NonMaxSuppressionV2.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Normalize.py | 0 .../tools/mnn_fb}/OneHotParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Op.py | 0 .../tools/mnn_fb}/OpParameter.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/OpType.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/PRelu.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/PackParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/PadMode.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/PadParam.py | 0 .../tools/mnn_fb}/PadValueMode.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Permute.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Plugin.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Pool.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Pool3D.py | 0 .../tools/mnn_fb}/PoolPadType.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/PoolType.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/PriorBox.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Proposal.py | 0 .../tools/mnn_fb}/QuantizeMaxMin.py | 0 .../tools/mnn_fb}/QuantizeMode.py | 0 .../tools/mnn_fb}/QuantizeRoundMode.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/QuantizeV2.py | 0 .../tools/mnn_fb}/QuantizedAdd.py | 0 .../tools/mnn_fb}/QuantizedAvgPool.py | 0 .../tools/mnn_fb}/QuantizedBiasAdd.py | 0 .../tools/mnn_fb}/QuantizedConcat.py | 0 .../tools/mnn_fb}/QuantizedFloatParam.py | 0 .../tools/mnn_fb}/QuantizedLogistic.py | 0 .../tools/mnn_fb}/QuantizedMatMul.py | 0 .../tools/mnn_fb}/QuantizedMaxPool.py | 0 .../tools/mnn_fb}/QuantizedParam.py | 0 .../tools/mnn_fb}/QuantizedRelu.py | 0 .../tools/mnn_fb}/QuantizedRelu6.py | 0 .../tools/mnn_fb}/QuantizedReshape.py | 0 .../tools/mnn_fb}/QuantizedSoftmax.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/RNNParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Range.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Rank.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/ReduceJoin.py | 0 .../tools/mnn_fb}/ReductionParam.py | 0 .../tools/mnn_fb}/ReductionType.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Relu.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Relu6.py | 0 .../tools/mnn_fb}/RequantizationRange.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Requantize.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Reshape.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Resize.py | 0 .../tools/mnn_fb}/ReverseSequenceParam.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/RoiPooling.py | 0 .../tools/mnn_fb}/STORAGE_TYPE.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Scale.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Selu.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Size.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Slice.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/SliceTf.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/SpaceBatch.py | 0 .../tools/mnn_fb}/SqueezeParam.py | 0 .../tools/mnn_fb}/StridedSliceParam.py | 0 .../tools/mnn_fb}/TensorConvertInfo.py | 0 .../tools/mnn_fb}/TensorDescribe.py | 0 .../tools/mnn_fb}/TfQuantizedConv2D.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/TopKV2.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Transpose.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/UnaryOp.py | 0 .../tools/mnn_fb}/UnaryOpOperation.py | 0 .../MNN_FB => MNN/tools/mnn_fb}/Usage.py | 0 .../pip_package/MNN/tools/mnn_fb/__init__.py | 1 + .../{MNNTools => MNN/tools}/mnnconvert.py | 2 +- .../{MNNTools => MNN/tools}/mnnops.py | 2 +- .../{MNNTools => MNN/tools}/mnnquant.py | 2 +- .../{MNNTools => MNN/tools}/mnnvisual.py | 15 +-- pymnn/pip_package/MNN/tools/utils/__init__.py | 1 + .../GetKey.py => MNN/tools/utils/getkey.py} | 0 .../OpName.py => MNN/tools/utils/opname.py} | 4 +- .../{MNNPy/train/Module.py => MNN/train.py} | 7 +- pymnn/pip_package/MNN/var.py | 12 ++ pymnn/pip_package/MNNPy/__init__.py | 0 pymnn/pip_package/MNNPy/train/__init__.py | 1 - pymnn/pip_package/MNNTools/MNN_FB/__init__.py | 0 pymnn/pip_package/MNNTools/Utils/__init__.py | 0 pymnn/pip_package/MNNTools/__init__.py | 0 pymnn/pip_package/setup.py | 20 +-- tools/train/source/demo/quanMnist.cpp | 114 ------------------ 144 files changed, 243 insertions(+), 189 deletions(-) create mode 100644 pymnn/INSTALL.md create mode 100644 pymnn/examples/MNNTrain/Image/mobilenetCls4.py create mode 100644 pymnn/examples/MNNTrain/Image/quanByMSE.py create mode 100644 pymnn/pip_package/MNN/__init__.py create mode 100644 pymnn/pip_package/MNN/tools/__init__.py rename pymnn/pip_package/{MNNTools => MNN/tools}/mnn.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ACCESS_TYPE.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ArgMax.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/AsString.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Attribute.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Axis.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/BatchMatMulParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/BatchNorm.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/BinaryOp.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/BinaryOpOperation.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Blob.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/CastParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Convolution2D.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Convolution2DCommon.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Convolution3D.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Convolution3DCommon.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Crop.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/CropAndResize.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/CropAndResizeMethod.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/DataType.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/DepthSpaceParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Dequantize.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/DetectionOutput.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/DetectionPostProcessParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ELU.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Eltwise.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/EltwiseInt8.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/EltwiseType.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ExpandDims.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Extra.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Fill.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Flatten.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ForwardType.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/FusedActivation.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Gather.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/GatherV2.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/GpuBuffer.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/GpuFunction.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/GpuLibrary.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/GpuPipeline.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/GpuStage.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/IDSTQuan.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/InnerProduct.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Input.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Interp.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/LRN.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/LSTM.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ListValue.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/MNN_DATA_FORMAT.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/MatMul.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ModeFormat.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/MomentsParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Net.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/NetSource.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/NonMaxSuppressionV2.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Normalize.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/OneHotParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Op.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/OpParameter.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/OpType.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PRelu.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PackParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PadMode.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PadParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PadValueMode.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Permute.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Plugin.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Pool.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Pool3D.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PoolPadType.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PoolType.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/PriorBox.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Proposal.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizeMaxMin.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizeMode.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizeRoundMode.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizeV2.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedAdd.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedAvgPool.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedBiasAdd.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedConcat.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedFloatParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedLogistic.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedMatMul.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedMaxPool.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedRelu.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedRelu6.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedReshape.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/QuantizedSoftmax.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/RNNParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Range.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Rank.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ReduceJoin.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ReductionParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ReductionType.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Relu.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Relu6.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/RequantizationRange.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Requantize.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Reshape.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Resize.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/ReverseSequenceParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/RoiPooling.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/STORAGE_TYPE.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Scale.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Selu.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Size.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Slice.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/SliceTf.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/SpaceBatch.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/SqueezeParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/StridedSliceParam.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/TensorConvertInfo.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/TensorDescribe.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/TfQuantizedConv2D.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/TopKV2.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Transpose.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/UnaryOp.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/UnaryOpOperation.py (100%) rename pymnn/pip_package/{MNNTools/MNN_FB => MNN/tools/mnn_fb}/Usage.py (100%) create mode 100644 pymnn/pip_package/MNN/tools/mnn_fb/__init__.py rename pymnn/pip_package/{MNNTools => MNN/tools}/mnnconvert.py (99%) rename pymnn/pip_package/{MNNTools => MNN/tools}/mnnops.py (92%) rename pymnn/pip_package/{MNNTools => MNN/tools}/mnnquant.py (97%) rename pymnn/pip_package/{MNNTools => MNN/tools}/mnnvisual.py (92%) create mode 100644 pymnn/pip_package/MNN/tools/utils/__init__.py rename pymnn/pip_package/{MNNTools/Utils/GetKey.py => MNN/tools/utils/getkey.py} (100%) rename pymnn/pip_package/{MNNTools/Utils/OpName.py => MNN/tools/utils/opname.py} (74%) rename pymnn/pip_package/{MNNPy/train/Module.py => MNN/train.py} (92%) create mode 100644 pymnn/pip_package/MNN/var.py delete mode 100644 pymnn/pip_package/MNNPy/__init__.py delete mode 100644 pymnn/pip_package/MNNPy/train/__init__.py delete mode 100644 pymnn/pip_package/MNNTools/MNN_FB/__init__.py delete mode 100644 pymnn/pip_package/MNNTools/Utils/__init__.py delete mode 100644 pymnn/pip_package/MNNTools/__init__.py delete mode 100644 tools/train/source/demo/quanMnist.cpp diff --git a/pymnn/INSTALL.md b/pymnn/INSTALL.md new file mode 100644 index 00000000..697e94cc --- /dev/null +++ b/pymnn/INSTALL.md @@ -0,0 +1,10 @@ +# PC 上安装 +仅支持python3 + +1、进入pymnn/pip_package 目录 +2、python3 build_deps.py +3、sudo python3 setup.py install + +# 示例 +1、v2接口/推理:pymnn/examples/MNNEngineDemo +2、训练/ 压缩:pymnn/examples/MNNTrain diff --git a/pymnn/examples/MNNTrain/Image/mobilenetCls4.py b/pymnn/examples/MNNTrain/Image/mobilenetCls4.py new file mode 100644 index 00000000..1f18bd8c --- /dev/null +++ b/pymnn/examples/MNNTrain/Image/mobilenetCls4.py @@ -0,0 +1,85 @@ +import MNN +import MNN.var as var +c_train = MNN.c_train +nn = c_train.cnn +F = MNN.expr +data = c_train.data +import time + +import sys +class Net(MNN.train.Module): + def __init__(self): + super(Net, self).__init__() + modelFile = sys.argv[1] + print(modelFile) + varMap = F.load_dict(modelFile) + inputVar = varMap['input'] + outputVar = varMap['MobilenetV2/Logits/AvgPool'] + self.net = c_train.load_module([inputVar], [outputVar], True) + self.fc = nn.conv(1280, 4, [1, 1]) + def forward(self, x): + x = self.net(x) + x = self.fc(x) + x = F.softmax(F.reshape(F.convert(x, F.NCHW), [0, -1])) + return x + +scale = [0.00784314, 0.00784314, 0.00784314, 0.00784314] +mean = [127.5, 127.5, 127.5, 0] + +imageConfig = data.image.config(MNN.cv.BGR, 224, 224, scale, mean, [1.0, 1.0], False) +picturePath = sys.argv[2] +print(picturePath) +txtPath = sys.argv[3] +imageDataset = data.image.image_label(picturePath, txtPath, imageConfig, False) +imageLoader = imageDataset.create_loader(10, True, True, 0) + +def trainFunc(loader, net, opt): + loader.reset() + net.train(True) + t0 = time.time() + iter_number = loader.iter_number() + for i in range(0, iter_number): + example = loader.next()[0] + data = example[0][0] + label = F.reshape(example[1][0], [-1]) + data = F.convert(data, F.NC4HW4) + predict = net(data) + target = F.one_hot(F.cast(label, F.int), var.int(4), var.float(1.0), var.float(0.0)) + loss = c_train.loss.CrossEntropy(predict, target) + if i % 10 == 0: + print(i, loss.read(), iter_number) + opt.step(loss) + t1 = time.time() + cost = t1 - t0 + print("Epoch cost: %.3f" %cost) + F.save(net.parameters(), "cache/temp.snapshot") + +def testFunc(loader, net): + loader.reset() + net.train(False) + iter_number = loader.iter_number() + correct = 0 + for i in range(0, iter_number): + example = loader.next()[0] + data = example[0][0] + label = F.reshape(example[1][0], [-1]) + data = F.convert(data, F.NC4HW4) + predict = net(data) + predict = F.argmax(predict, 1) + accu = F.reduce_sum(F.equal(predict, F.cast(label, F.int)), [], False) + correct += accu.read()[0] + print("Accu: ", correct * 100.0 / loader.size(), "%") + +net = Net() +net.loadParameters(F.load("cache/temp.snapshot")) +opt = c_train.SGD(0.0001, 0.9); +opt.append(net.parameters()) +F.setThreadNumber(4) +testTxt = sys.argv[4] +testDataset = data.image.image_label(picturePath, testTxt, imageConfig, False) +testLoader = testDataset.create_loader(10, True, False, 0) + +for epoch in range(0, 10): + testFunc(testLoader, net) + trainFunc(imageLoader, net, opt) + diff --git a/pymnn/examples/MNNTrain/Image/quanByMSE.py b/pymnn/examples/MNNTrain/Image/quanByMSE.py new file mode 100644 index 00000000..e16f4fe6 --- /dev/null +++ b/pymnn/examples/MNNTrain/Image/quanByMSE.py @@ -0,0 +1,65 @@ +import MNN +import MNN.var as var +c_train = MNN.c_train +nn = c_train.cnn +F = MNN.expr +data = c_train.data +import time + +import sys +modelFile = sys.argv[1] +print(modelFile) + +varMap = F.load_dict(modelFile) +inputVar = varMap['sub_7'] +outputVar = varMap['ResizeBilinear_3'] +net = c_train.load_module([inputVar], [outputVar], True) +c_train.compress.quantize(net, 8, c_train.compress.PerChannel, c_train.compress.MovingAverage) +checkNet = c_train.load_module([inputVar], [outputVar], False) + +scale = [0.00784314, 0.00784314, 0.00784314, 0.00784314] +mean = [127.5, 127.5, 127.5, 0] + +imageConfig = data.image.config(MNN.cv.BGR, 257, 257, scale, mean, [1.0, 1.0], False) +picturePath = sys.argv[2] +print(picturePath) +imageDataset = data.image.image_no_label(picturePath, imageConfig) +imageLoader = imageDataset.create_loader(5, True, True, 0) + +def trainFunc(loader, net, checkNet, opt): + loader.reset() + net.train(True) + t0 = time.time() + iter_number = loader.iter_number() + for i in range(0, iter_number): + example = loader.next()[0] + data = example[0][0] + data = F.convert(data, F.NC4HW4) + p0 = net(data) + p1 = checkNet(data) + p0 = F.reshape(F.convert(p0, F.NCHW), [0, -1]) + p1 = F.reshape(F.convert(p1, F.NCHW), [0, -1]) + loss = c_train.loss.MSE(p0, p1) + opt.step(loss) + if i % 10 == 0: + print(loss.read()) + t1 = time.time() + cost = t1 - t0 + print("Epoch cost: %.3f" %cost) + F.save(net.parameters(), "cache/temp.snapshot") + + +opt = c_train.SGD(0.000000000, 0.9); +opt.append(net.parameters()) + +for epoch in range(0, 1): + trainFunc(imageLoader, net, checkNet, opt) + +net.train(False) +testInput = F.placeholder([1, 3, 257, 257], F.NC4HW4) +testInput.set_name("data") +testOutput = net(testInput) +testOutput.set_name("prob"); +quanName = "temp.quan.mnn" +print("Save to " + quanName) +F.save([testOutput], quanName) diff --git a/pymnn/examples/MNNTrain/Mnist/learn.py b/pymnn/examples/MNNTrain/Mnist/learn.py index a8b57301..5a221780 100644 --- a/pymnn/examples/MNNTrain/Mnist/learn.py +++ b/pymnn/examples/MNNTrain/Mnist/learn.py @@ -1,74 +1,65 @@ -import MNN.train as train -import MNNPy.train -import MNN.train.cnn as nn -import MNN.expr as F +import MNN +import MNN.var as var +c_train = MNN.c_train +nn = c_train.cnn +F = MNN.expr +data = c_train.data import time -import MNN.train.data as data -class Net(MNNPy.train.Module): +class Net(MNN.train.Module): def __init__(self): super(Net, self).__init__() - self.conv1 = nn.Conv(1, 20, [5, 5]) - self.conv2 = nn.Conv(20, 50, [5, 5]) - self.fc1 = nn.Linear(800, 500) - self.fc2 = nn.Linear(500, 10) + self.conv1 = nn.conv(1, 20, [5, 5]) + self.conv2 = nn.conv(20, 50, [5, 5]) + self.fc1 = nn.linear(800, 500) + self.fc2 = nn.linear(500, 10) def forward(self, x): - x = F.Relu(self.conv1(x)) - x = F.MaxPool(x, [2, 2], [2, 2]) - x = F.Relu(self.conv2(x)) - x = F.MaxPool(x, [2, 2], [2, 2]) - x = F.Convert(x, F.NCHW) - x = F.Reshape(x, [0, -1]) - x = F.Relu(self.fc1(x)) + x = F.relu(self.conv1(x)) + x = F.max_pool(x, [2, 2], [2, 2]) + x = F.relu(self.conv2(x)) + x = F.max_pool(x, [2, 2], [2, 2]) + x = F.convert(x, F.NCHW) + x = F.reshape(x, [0, -1]) + x = F.relu(self.fc1(x)) x = self.fc2(x) - x = F.Softmax(x, 1) + x = F.softmax(x, 1) return x -def initFloat(value): - res = F.Input([], F.NCHW, F.float) - res.write([value]) - res.fix(F.Const) - return res -def initInt(value): - res = F.Input([], F.NCHW, F.int) - res.write([value]) - res.fix(F.Const) - return res def testFunc(loader, net): loader.reset() net.train(False) - iterNumber = loader.iterNumber() + iter_number = loader.iter_number() correct = 0 - for i in range(0, iterNumber): + for i in range(0, iter_number): example = loader.next()[0] data = example[0][0] label = example[1][0] - data = F.Multiply(F.Cast(data, F.float), initFloat(1.0/255.0)) + data = F.cast(data, F.float) * var.float(1.0/255.0) predict = net(data) - predict = F.ArgMax(predict, 1) - accu = F.ReduceSum(F.Equal(predict, F.Cast(label, F.int)), [], False) + predict = F.argmax(predict, 1) + accu = F.reduce_sum(F.equal(predict, F.cast(label, F.int)), [], False) correct += accu.read()[0] - print(correct * 1.0 / loader.size()) + print("Accu: ", correct * 100.0 / loader.size(), "%") def trainFunc(loader, net, opt): loader.reset() net.train() t0 = time.time() - iterNumber = loader.iterNumber() - for i in range(0, iterNumber): + iter_number = loader.iter_number() + for i in range(0, iter_number): example = loader.next()[0] data = example[0][0] label = example[1][0] - data = F.Multiply(F.Cast(data, F.float), initFloat(1.0/255.0)) + data = F.cast(data, F.float) * var.float(1.0/255.0) predict = net(data) - target = F.OneHot(F.Cast(label, F.int), initInt(10), initFloat(1.0), initFloat(0.0)) - loss = train.loss.CrossEntropy(predict, target) + target = F.one_hot(F.cast(label, F.int), var.int(10), var.float(1.0), var.float(0.0)) + loss = c_train.loss.CrossEntropy(predict, target) opt.step(loss) if i % 100 == 0: print(loss.read()) @@ -79,14 +70,17 @@ def trainFunc(loader, net, opt): net = Net() -opt = train.SGD(0.01, 0.9) +opt = c_train.SGD(0.01, 0.9) net.loadParameters(F.load("cache/temp.snapshot")) opt.append(net.parameters()) -mnistDataset = data.mnist.create("/Users/jiangxiaotang/data/mnist", data.mnist.Train) -trainLoader = mnistDataset.createLoader(64, True, True, 0) -testmnistDataset = data.mnist.create("/Users/jiangxiaotang/data/mnist", data.mnist.Test) -testLoader = mnistDataset.createLoader(10, True, False, 0) +import sys +mnistDataPath = sys.argv[1] + +mnistDataset = data.mnist.create(mnistDataPath, data.mnist.Train) +trainLoader = mnistDataset.create_loader(64, True, True, 0) +testmnistDataset = data.mnist.create(mnistDataPath, data.mnist.Test) +testLoader = mnistDataset.create_loader(10, True, False, 0) F.setThreadNumber(4) for epoch in range(0, 10): @@ -94,7 +88,7 @@ for epoch in range(0, 10): # Save Model fileName = 'cache/%d.mnist.mnn' %epoch net.train(False) - predict = net.forward(F.Input([1, 1, 28, 28], F.NC4HW4)) + predict = net.forward(F.placeholder([1, 1, 28, 28], F.NC4HW4)) print("Save to " + fileName) F.save([predict], fileName) testFunc(testLoader, net) diff --git a/pymnn/pip_package/MNN/__init__.py b/pymnn/pip_package/MNN/__init__.py new file mode 100644 index 00000000..c5a6cf1e --- /dev/null +++ b/pymnn/pip_package/MNN/__init__.py @@ -0,0 +1,4 @@ +from _mnncengine import * +from . import train +from . import tools + diff --git a/pymnn/pip_package/MNN/tools/__init__.py b/pymnn/pip_package/MNN/tools/__init__.py new file mode 100644 index 00000000..e85278c0 --- /dev/null +++ b/pymnn/pip_package/MNN/tools/__init__.py @@ -0,0 +1,3 @@ +from . import mnn, mnnops, mnnquant, mnnvisual, mnnconvert +from . import utils +from . import mnn_fb diff --git a/pymnn/pip_package/MNNTools/mnn.py b/pymnn/pip_package/MNN/tools/mnn.py similarity index 100% rename from pymnn/pip_package/MNNTools/mnn.py rename to pymnn/pip_package/MNN/tools/mnn.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ACCESS_TYPE.py b/pymnn/pip_package/MNN/tools/mnn_fb/ACCESS_TYPE.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ACCESS_TYPE.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ACCESS_TYPE.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ArgMax.py b/pymnn/pip_package/MNN/tools/mnn_fb/ArgMax.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ArgMax.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ArgMax.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/AsString.py b/pymnn/pip_package/MNN/tools/mnn_fb/AsString.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/AsString.py rename to pymnn/pip_package/MNN/tools/mnn_fb/AsString.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Attribute.py b/pymnn/pip_package/MNN/tools/mnn_fb/Attribute.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Attribute.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Attribute.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Axis.py b/pymnn/pip_package/MNN/tools/mnn_fb/Axis.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Axis.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Axis.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/BatchMatMulParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/BatchMatMulParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/BatchMatMulParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/BatchMatMulParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/BatchNorm.py b/pymnn/pip_package/MNN/tools/mnn_fb/BatchNorm.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/BatchNorm.py rename to pymnn/pip_package/MNN/tools/mnn_fb/BatchNorm.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/BinaryOp.py b/pymnn/pip_package/MNN/tools/mnn_fb/BinaryOp.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/BinaryOp.py rename to pymnn/pip_package/MNN/tools/mnn_fb/BinaryOp.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/BinaryOpOperation.py b/pymnn/pip_package/MNN/tools/mnn_fb/BinaryOpOperation.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/BinaryOpOperation.py rename to pymnn/pip_package/MNN/tools/mnn_fb/BinaryOpOperation.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Blob.py b/pymnn/pip_package/MNN/tools/mnn_fb/Blob.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Blob.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Blob.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/CastParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/CastParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/CastParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/CastParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Convolution2D.py b/pymnn/pip_package/MNN/tools/mnn_fb/Convolution2D.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Convolution2D.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Convolution2D.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Convolution2DCommon.py b/pymnn/pip_package/MNN/tools/mnn_fb/Convolution2DCommon.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Convolution2DCommon.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Convolution2DCommon.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Convolution3D.py b/pymnn/pip_package/MNN/tools/mnn_fb/Convolution3D.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Convolution3D.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Convolution3D.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Convolution3DCommon.py b/pymnn/pip_package/MNN/tools/mnn_fb/Convolution3DCommon.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Convolution3DCommon.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Convolution3DCommon.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Crop.py b/pymnn/pip_package/MNN/tools/mnn_fb/Crop.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Crop.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Crop.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/CropAndResize.py b/pymnn/pip_package/MNN/tools/mnn_fb/CropAndResize.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/CropAndResize.py rename to pymnn/pip_package/MNN/tools/mnn_fb/CropAndResize.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/CropAndResizeMethod.py b/pymnn/pip_package/MNN/tools/mnn_fb/CropAndResizeMethod.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/CropAndResizeMethod.py rename to pymnn/pip_package/MNN/tools/mnn_fb/CropAndResizeMethod.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/DataType.py b/pymnn/pip_package/MNN/tools/mnn_fb/DataType.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/DataType.py rename to pymnn/pip_package/MNN/tools/mnn_fb/DataType.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/DepthSpaceParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/DepthSpaceParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/DepthSpaceParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/DepthSpaceParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Dequantize.py b/pymnn/pip_package/MNN/tools/mnn_fb/Dequantize.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Dequantize.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Dequantize.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/DetectionOutput.py b/pymnn/pip_package/MNN/tools/mnn_fb/DetectionOutput.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/DetectionOutput.py rename to pymnn/pip_package/MNN/tools/mnn_fb/DetectionOutput.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/DetectionPostProcessParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/DetectionPostProcessParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/DetectionPostProcessParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/DetectionPostProcessParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ELU.py b/pymnn/pip_package/MNN/tools/mnn_fb/ELU.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ELU.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ELU.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Eltwise.py b/pymnn/pip_package/MNN/tools/mnn_fb/Eltwise.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Eltwise.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Eltwise.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/EltwiseInt8.py b/pymnn/pip_package/MNN/tools/mnn_fb/EltwiseInt8.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/EltwiseInt8.py rename to pymnn/pip_package/MNN/tools/mnn_fb/EltwiseInt8.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/EltwiseType.py b/pymnn/pip_package/MNN/tools/mnn_fb/EltwiseType.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/EltwiseType.py rename to pymnn/pip_package/MNN/tools/mnn_fb/EltwiseType.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ExpandDims.py b/pymnn/pip_package/MNN/tools/mnn_fb/ExpandDims.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ExpandDims.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ExpandDims.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Extra.py b/pymnn/pip_package/MNN/tools/mnn_fb/Extra.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Extra.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Extra.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Fill.py b/pymnn/pip_package/MNN/tools/mnn_fb/Fill.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Fill.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Fill.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Flatten.py b/pymnn/pip_package/MNN/tools/mnn_fb/Flatten.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Flatten.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Flatten.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ForwardType.py b/pymnn/pip_package/MNN/tools/mnn_fb/ForwardType.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ForwardType.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ForwardType.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/FusedActivation.py b/pymnn/pip_package/MNN/tools/mnn_fb/FusedActivation.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/FusedActivation.py rename to pymnn/pip_package/MNN/tools/mnn_fb/FusedActivation.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Gather.py b/pymnn/pip_package/MNN/tools/mnn_fb/Gather.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Gather.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Gather.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/GatherV2.py b/pymnn/pip_package/MNN/tools/mnn_fb/GatherV2.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/GatherV2.py rename to pymnn/pip_package/MNN/tools/mnn_fb/GatherV2.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/GpuBuffer.py b/pymnn/pip_package/MNN/tools/mnn_fb/GpuBuffer.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/GpuBuffer.py rename to pymnn/pip_package/MNN/tools/mnn_fb/GpuBuffer.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/GpuFunction.py b/pymnn/pip_package/MNN/tools/mnn_fb/GpuFunction.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/GpuFunction.py rename to pymnn/pip_package/MNN/tools/mnn_fb/GpuFunction.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/GpuLibrary.py b/pymnn/pip_package/MNN/tools/mnn_fb/GpuLibrary.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/GpuLibrary.py rename to pymnn/pip_package/MNN/tools/mnn_fb/GpuLibrary.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/GpuPipeline.py b/pymnn/pip_package/MNN/tools/mnn_fb/GpuPipeline.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/GpuPipeline.py rename to pymnn/pip_package/MNN/tools/mnn_fb/GpuPipeline.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/GpuStage.py b/pymnn/pip_package/MNN/tools/mnn_fb/GpuStage.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/GpuStage.py rename to pymnn/pip_package/MNN/tools/mnn_fb/GpuStage.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/IDSTQuan.py b/pymnn/pip_package/MNN/tools/mnn_fb/IDSTQuan.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/IDSTQuan.py rename to pymnn/pip_package/MNN/tools/mnn_fb/IDSTQuan.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/InnerProduct.py b/pymnn/pip_package/MNN/tools/mnn_fb/InnerProduct.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/InnerProduct.py rename to pymnn/pip_package/MNN/tools/mnn_fb/InnerProduct.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Input.py b/pymnn/pip_package/MNN/tools/mnn_fb/Input.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Input.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Input.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Interp.py b/pymnn/pip_package/MNN/tools/mnn_fb/Interp.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Interp.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Interp.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/LRN.py b/pymnn/pip_package/MNN/tools/mnn_fb/LRN.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/LRN.py rename to pymnn/pip_package/MNN/tools/mnn_fb/LRN.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/LSTM.py b/pymnn/pip_package/MNN/tools/mnn_fb/LSTM.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/LSTM.py rename to pymnn/pip_package/MNN/tools/mnn_fb/LSTM.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ListValue.py b/pymnn/pip_package/MNN/tools/mnn_fb/ListValue.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ListValue.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ListValue.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/MNN_DATA_FORMAT.py b/pymnn/pip_package/MNN/tools/mnn_fb/MNN_DATA_FORMAT.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/MNN_DATA_FORMAT.py rename to pymnn/pip_package/MNN/tools/mnn_fb/MNN_DATA_FORMAT.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/MatMul.py b/pymnn/pip_package/MNN/tools/mnn_fb/MatMul.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/MatMul.py rename to pymnn/pip_package/MNN/tools/mnn_fb/MatMul.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ModeFormat.py b/pymnn/pip_package/MNN/tools/mnn_fb/ModeFormat.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ModeFormat.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ModeFormat.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/MomentsParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/MomentsParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/MomentsParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/MomentsParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Net.py b/pymnn/pip_package/MNN/tools/mnn_fb/Net.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Net.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Net.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/NetSource.py b/pymnn/pip_package/MNN/tools/mnn_fb/NetSource.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/NetSource.py rename to pymnn/pip_package/MNN/tools/mnn_fb/NetSource.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/NonMaxSuppressionV2.py b/pymnn/pip_package/MNN/tools/mnn_fb/NonMaxSuppressionV2.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/NonMaxSuppressionV2.py rename to pymnn/pip_package/MNN/tools/mnn_fb/NonMaxSuppressionV2.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Normalize.py b/pymnn/pip_package/MNN/tools/mnn_fb/Normalize.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Normalize.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Normalize.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/OneHotParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/OneHotParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/OneHotParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/OneHotParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Op.py b/pymnn/pip_package/MNN/tools/mnn_fb/Op.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Op.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Op.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/OpParameter.py b/pymnn/pip_package/MNN/tools/mnn_fb/OpParameter.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/OpParameter.py rename to pymnn/pip_package/MNN/tools/mnn_fb/OpParameter.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/OpType.py b/pymnn/pip_package/MNN/tools/mnn_fb/OpType.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/OpType.py rename to pymnn/pip_package/MNN/tools/mnn_fb/OpType.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PRelu.py b/pymnn/pip_package/MNN/tools/mnn_fb/PRelu.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PRelu.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PRelu.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PackParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/PackParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PackParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PackParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PadMode.py b/pymnn/pip_package/MNN/tools/mnn_fb/PadMode.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PadMode.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PadMode.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PadParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/PadParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PadParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PadParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PadValueMode.py b/pymnn/pip_package/MNN/tools/mnn_fb/PadValueMode.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PadValueMode.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PadValueMode.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Permute.py b/pymnn/pip_package/MNN/tools/mnn_fb/Permute.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Permute.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Permute.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Plugin.py b/pymnn/pip_package/MNN/tools/mnn_fb/Plugin.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Plugin.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Plugin.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Pool.py b/pymnn/pip_package/MNN/tools/mnn_fb/Pool.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Pool.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Pool.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Pool3D.py b/pymnn/pip_package/MNN/tools/mnn_fb/Pool3D.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Pool3D.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Pool3D.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PoolPadType.py b/pymnn/pip_package/MNN/tools/mnn_fb/PoolPadType.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PoolPadType.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PoolPadType.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PoolType.py b/pymnn/pip_package/MNN/tools/mnn_fb/PoolType.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PoolType.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PoolType.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/PriorBox.py b/pymnn/pip_package/MNN/tools/mnn_fb/PriorBox.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/PriorBox.py rename to pymnn/pip_package/MNN/tools/mnn_fb/PriorBox.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Proposal.py b/pymnn/pip_package/MNN/tools/mnn_fb/Proposal.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Proposal.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Proposal.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizeMaxMin.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizeMaxMin.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizeMaxMin.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizeMaxMin.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizeMode.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizeMode.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizeMode.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizeMode.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizeRoundMode.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizeRoundMode.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizeRoundMode.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizeRoundMode.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizeV2.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizeV2.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizeV2.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizeV2.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedAdd.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedAdd.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedAdd.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedAdd.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedAvgPool.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedAvgPool.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedAvgPool.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedAvgPool.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedBiasAdd.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedBiasAdd.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedBiasAdd.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedBiasAdd.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedConcat.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedConcat.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedConcat.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedConcat.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedFloatParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedFloatParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedFloatParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedFloatParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedLogistic.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedLogistic.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedLogistic.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedLogistic.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedMatMul.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedMatMul.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedMatMul.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedMatMul.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedMaxPool.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedMaxPool.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedMaxPool.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedMaxPool.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedRelu.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedRelu.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedRelu.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedRelu.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedRelu6.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedRelu6.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedRelu6.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedRelu6.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedReshape.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedReshape.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedReshape.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedReshape.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/QuantizedSoftmax.py b/pymnn/pip_package/MNN/tools/mnn_fb/QuantizedSoftmax.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/QuantizedSoftmax.py rename to pymnn/pip_package/MNN/tools/mnn_fb/QuantizedSoftmax.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/RNNParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/RNNParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/RNNParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/RNNParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Range.py b/pymnn/pip_package/MNN/tools/mnn_fb/Range.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Range.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Range.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Rank.py b/pymnn/pip_package/MNN/tools/mnn_fb/Rank.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Rank.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Rank.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ReduceJoin.py b/pymnn/pip_package/MNN/tools/mnn_fb/ReduceJoin.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ReduceJoin.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ReduceJoin.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ReductionParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/ReductionParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ReductionParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ReductionParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ReductionType.py b/pymnn/pip_package/MNN/tools/mnn_fb/ReductionType.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ReductionType.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ReductionType.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Relu.py b/pymnn/pip_package/MNN/tools/mnn_fb/Relu.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Relu.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Relu.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Relu6.py b/pymnn/pip_package/MNN/tools/mnn_fb/Relu6.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Relu6.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Relu6.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/RequantizationRange.py b/pymnn/pip_package/MNN/tools/mnn_fb/RequantizationRange.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/RequantizationRange.py rename to pymnn/pip_package/MNN/tools/mnn_fb/RequantizationRange.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Requantize.py b/pymnn/pip_package/MNN/tools/mnn_fb/Requantize.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Requantize.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Requantize.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Reshape.py b/pymnn/pip_package/MNN/tools/mnn_fb/Reshape.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Reshape.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Reshape.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Resize.py b/pymnn/pip_package/MNN/tools/mnn_fb/Resize.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Resize.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Resize.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/ReverseSequenceParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/ReverseSequenceParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/ReverseSequenceParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/ReverseSequenceParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/RoiPooling.py b/pymnn/pip_package/MNN/tools/mnn_fb/RoiPooling.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/RoiPooling.py rename to pymnn/pip_package/MNN/tools/mnn_fb/RoiPooling.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/STORAGE_TYPE.py b/pymnn/pip_package/MNN/tools/mnn_fb/STORAGE_TYPE.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/STORAGE_TYPE.py rename to pymnn/pip_package/MNN/tools/mnn_fb/STORAGE_TYPE.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Scale.py b/pymnn/pip_package/MNN/tools/mnn_fb/Scale.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Scale.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Scale.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Selu.py b/pymnn/pip_package/MNN/tools/mnn_fb/Selu.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Selu.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Selu.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Size.py b/pymnn/pip_package/MNN/tools/mnn_fb/Size.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Size.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Size.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Slice.py b/pymnn/pip_package/MNN/tools/mnn_fb/Slice.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Slice.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Slice.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/SliceTf.py b/pymnn/pip_package/MNN/tools/mnn_fb/SliceTf.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/SliceTf.py rename to pymnn/pip_package/MNN/tools/mnn_fb/SliceTf.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/SpaceBatch.py b/pymnn/pip_package/MNN/tools/mnn_fb/SpaceBatch.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/SpaceBatch.py rename to pymnn/pip_package/MNN/tools/mnn_fb/SpaceBatch.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/SqueezeParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/SqueezeParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/SqueezeParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/SqueezeParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/StridedSliceParam.py b/pymnn/pip_package/MNN/tools/mnn_fb/StridedSliceParam.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/StridedSliceParam.py rename to pymnn/pip_package/MNN/tools/mnn_fb/StridedSliceParam.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/TensorConvertInfo.py b/pymnn/pip_package/MNN/tools/mnn_fb/TensorConvertInfo.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/TensorConvertInfo.py rename to pymnn/pip_package/MNN/tools/mnn_fb/TensorConvertInfo.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/TensorDescribe.py b/pymnn/pip_package/MNN/tools/mnn_fb/TensorDescribe.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/TensorDescribe.py rename to pymnn/pip_package/MNN/tools/mnn_fb/TensorDescribe.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/TfQuantizedConv2D.py b/pymnn/pip_package/MNN/tools/mnn_fb/TfQuantizedConv2D.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/TfQuantizedConv2D.py rename to pymnn/pip_package/MNN/tools/mnn_fb/TfQuantizedConv2D.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/TopKV2.py b/pymnn/pip_package/MNN/tools/mnn_fb/TopKV2.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/TopKV2.py rename to pymnn/pip_package/MNN/tools/mnn_fb/TopKV2.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Transpose.py b/pymnn/pip_package/MNN/tools/mnn_fb/Transpose.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Transpose.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Transpose.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/UnaryOp.py b/pymnn/pip_package/MNN/tools/mnn_fb/UnaryOp.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/UnaryOp.py rename to pymnn/pip_package/MNN/tools/mnn_fb/UnaryOp.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/UnaryOpOperation.py b/pymnn/pip_package/MNN/tools/mnn_fb/UnaryOpOperation.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/UnaryOpOperation.py rename to pymnn/pip_package/MNN/tools/mnn_fb/UnaryOpOperation.py diff --git a/pymnn/pip_package/MNNTools/MNN_FB/Usage.py b/pymnn/pip_package/MNN/tools/mnn_fb/Usage.py similarity index 100% rename from pymnn/pip_package/MNNTools/MNN_FB/Usage.py rename to pymnn/pip_package/MNN/tools/mnn_fb/Usage.py diff --git a/pymnn/pip_package/MNN/tools/mnn_fb/__init__.py b/pymnn/pip_package/MNN/tools/mnn_fb/__init__.py new file mode 100644 index 00000000..b6e690fd --- /dev/null +++ b/pymnn/pip_package/MNN/tools/mnn_fb/__init__.py @@ -0,0 +1 @@ +from . import * diff --git a/pymnn/pip_package/MNNTools/mnnconvert.py b/pymnn/pip_package/MNN/tools/mnnconvert.py similarity index 99% rename from pymnn/pip_package/MNNTools/mnnconvert.py rename to pymnn/pip_package/MNN/tools/mnnconvert.py index 2ef84f7f..24b17c22 100644 --- a/pymnn/pip_package/MNNTools/mnnconvert.py +++ b/pymnn/pip_package/MNN/tools/mnnconvert.py @@ -4,7 +4,7 @@ from __future__ import print_function import os import argparse -import Tools +import _tools as Tools def usage(): """ print usage info """ diff --git a/pymnn/pip_package/MNNTools/mnnops.py b/pymnn/pip_package/MNN/tools/mnnops.py similarity index 92% rename from pymnn/pip_package/MNNTools/mnnops.py rename to pymnn/pip_package/MNN/tools/mnnops.py index 72f3c21f..eaa0bd79 100644 --- a/pymnn/pip_package/MNNTools/mnnops.py +++ b/pymnn/pip_package/MNN/tools/mnnops.py @@ -4,7 +4,7 @@ from __future__ import print_function import os import sys -import MNNTools.MNN_FB.OpType as OpType +from .mnn_fb import OpType def main(): """ main function """ print("mnn supported ops:") diff --git a/pymnn/pip_package/MNNTools/mnnquant.py b/pymnn/pip_package/MNN/tools/mnnquant.py similarity index 97% rename from pymnn/pip_package/MNNTools/mnnquant.py rename to pymnn/pip_package/MNN/tools/mnnquant.py index 7148ee0e..668713ad 100644 --- a/pymnn/pip_package/MNNTools/mnnquant.py +++ b/pymnn/pip_package/MNN/tools/mnnquant.py @@ -5,7 +5,7 @@ from __future__ import print_function import os import sys import argparse -import Tools +import _tools as Tools def main(): """ main function """ parser = argparse.ArgumentParser() diff --git a/pymnn/pip_package/MNNTools/mnnvisual.py b/pymnn/pip_package/MNN/tools/mnnvisual.py similarity index 92% rename from pymnn/pip_package/MNNTools/mnnvisual.py rename to pymnn/pip_package/MNN/tools/mnnvisual.py index a2eb0f7e..fd2179fc 100644 --- a/pymnn/pip_package/MNNTools/mnnvisual.py +++ b/pymnn/pip_package/MNN/tools/mnnvisual.py @@ -5,16 +5,11 @@ from __future__ import print_function import os import sys import argparse -import MNNTools.MNN_FB.Net as Net -import MNNTools.MNN_FB.Op as Op -import MNNTools.MNN_FB.Blob as Blob -import MNNTools.MNN_FB.TensorDescribe as TensorDescribe -import MNNTools.MNN_FB.OpType as OpType -import MNNTools.MNN_FB.Convolution2DCommon as Convolution2DCommon -import MNNTools.MNN_FB.Convolution2D as Convolution2D -import MNNTools.MNN_FB.OpParameter as OpParameter -import MNNTools.Utils.OpName as OpName - +from .mnn_fb import Net, Op, Blob +from .mnn_fb import TensorDescribe, OpType +from .mnn_fb import Convolution2DCommon, Convolution2D +from .mnn_fb import OpParameter +from .utils import opname as OpName try: # pydot-ng is a fork of pydot that is better maintained. import pydot_ng as pydot diff --git a/pymnn/pip_package/MNN/tools/utils/__init__.py b/pymnn/pip_package/MNN/tools/utils/__init__.py new file mode 100644 index 00000000..b6e690fd --- /dev/null +++ b/pymnn/pip_package/MNN/tools/utils/__init__.py @@ -0,0 +1 @@ +from . import * diff --git a/pymnn/pip_package/MNNTools/Utils/GetKey.py b/pymnn/pip_package/MNN/tools/utils/getkey.py similarity index 100% rename from pymnn/pip_package/MNNTools/Utils/GetKey.py rename to pymnn/pip_package/MNN/tools/utils/getkey.py diff --git a/pymnn/pip_package/MNNTools/Utils/OpName.py b/pymnn/pip_package/MNN/tools/utils/opname.py similarity index 74% rename from pymnn/pip_package/MNNTools/Utils/OpName.py rename to pymnn/pip_package/MNN/tools/utils/opname.py index cb1a5afc..a867c206 100644 --- a/pymnn/pip_package/MNNTools/Utils/OpName.py +++ b/pymnn/pip_package/MNN/tools/utils/opname.py @@ -1,8 +1,8 @@ # Copyright @ 2019 Alibaba. All rights reserved. # Created by ruhuan on 2019.09.09 """ python OP API """ -import MNNTools.MNN_FB.OpType as OpType -import MNNTools.Utils.GetKey as GetKey +import MNN.tools.mnn_fb.OpType as OpType +import MNN.tools.utils.getkey as GetKey def optype_to_name(op_type): """convert from op type to op name """ return GetKey.get_key(OpType.OpType.__dict__, op_type) diff --git a/pymnn/pip_package/MNNPy/train/Module.py b/pymnn/pip_package/MNN/train.py similarity index 92% rename from pymnn/pip_package/MNNPy/train/Module.py rename to pymnn/pip_package/MNN/train.py index afcbabae..2325d0d5 100644 --- a/pymnn/pip_package/MNNPy/train/Module.py +++ b/pymnn/pip_package/MNN/train.py @@ -1,5 +1,4 @@ -import MNN.expr -import MNN.train +import MNN class Module(object): def __init__(self): self.training = True @@ -48,12 +47,12 @@ class Module(object): def remove_from(dicts): if name in dicts: del d[name] - if isinstance(value, MNN.expr.VARP): + if isinstance(value, MNN.expr.Var): remove_from(self._parameters) value.setName(name) self._parameters[name] = value return - if isinstance(value, Module) or isinstance(value, MNN.train.CppModule): + if isinstance(value, Module) or isinstance(value, MNN.c_train.CppModule): remove_from(self._children) value.setName(name) self._children[name] = value diff --git a/pymnn/pip_package/MNN/var.py b/pymnn/pip_package/MNN/var.py new file mode 100644 index 00000000..acf86d00 --- /dev/null +++ b/pymnn/pip_package/MNN/var.py @@ -0,0 +1,12 @@ +import MNN.expr as F +def float(value): + res = F.placeholder([], F.NCHW, F.float) + res.write([value]) + res.fix(F.Const) + return res +def int(value): + res = F.placeholder([], F.NCHW, F.int) + res.write([value]) + res.fix(F.Const) + return res + diff --git a/pymnn/pip_package/MNNPy/__init__.py b/pymnn/pip_package/MNNPy/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pymnn/pip_package/MNNPy/train/__init__.py b/pymnn/pip_package/MNNPy/train/__init__.py deleted file mode 100644 index 9007fdad..00000000 --- a/pymnn/pip_package/MNNPy/train/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from Module import * diff --git a/pymnn/pip_package/MNNTools/MNN_FB/__init__.py b/pymnn/pip_package/MNNTools/MNN_FB/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pymnn/pip_package/MNNTools/Utils/__init__.py b/pymnn/pip_package/MNNTools/Utils/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pymnn/pip_package/MNNTools/__init__.py b/pymnn/pip_package/MNNTools/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/pymnn/pip_package/setup.py b/pymnn/pip_package/setup.py index 59098a47..3814e8e5 100644 --- a/pymnn/pip_package/setup.py +++ b/pymnn/pip_package/setup.py @@ -84,7 +84,7 @@ def configure_extension_build(): if check_env_flag('WERROR'): extra_compile_args.append('-Werror') root_dir = os.getenv('PROJECT_ROOT', os.path.dirname(os.path.dirname(os.getcwd()))) - engine_compile_args = [] + engine_compile_args = ['-DBUILD_OPTYPE', '-DBUILD_TRAIN'] engine_libraries = [] engine_library_dirs = [os.path.join(root_dir, BUILD_DIR)] engine_library_dirs += [os.path.join(root_dir, BUILD_DIR, "tools", "train")] @@ -202,7 +202,7 @@ def configure_extension_build(): ################################################################################ extensions = [] packages = find_packages() - MNN = Extension("MNN",\ + engine = Extension("_mnncengine",\ libraries=engine_libraries,\ sources=engine_sources,\ language='c++',\ @@ -211,8 +211,8 @@ def configure_extension_build(): library_dirs=engine_library_dirs,\ extra_link_args=engine_extra_link_args + engine_link_args\ + [make_relative_rpath('lib')]) - extensions.append(MNN) - Tools = Extension("Tools",\ + extensions.append(engine) + tools = Extension("_tools",\ libraries=tools_libraries,\ sources=tools_sources,\ language='c++',\ @@ -221,18 +221,18 @@ def configure_extension_build(): library_dirs=tools_library_dirs,\ extra_link_args=tools_extra_link_args +tools_link_args\ + [make_relative_rpath('lib')]) - extensions.append(Tools) + extensions.append(tools) # These extensions are built by cmake and copied manually in build_extensions() # inside the build_ext implementaiton cmdclass = {} entry_points = { 'console_scripts': [ - 'mnnconvert = MNNTools.mnnconvert:main', - 'mnnquant = MNNTools.mnnquant:main', - 'mnnvisual = MNNTools.mnnvisual:main', - 'mnnops = MNNTools.mnnops:main', - 'mnn = MNNTools.mnn:main' + 'mnnconvert = MNN.tools.mnnconvert:main', + 'mnnquant = MNN.tools.mnnquant:main', + 'mnnvisual = MNN.tools.mnnvisual:main', + 'mnnops = MNN.tools.mnnops:main', + 'mnn = MNN.tools.mnn:main' ] } diff --git a/tools/train/source/demo/quanMnist.cpp b/tools/train/source/demo/quanMnist.cpp deleted file mode 100644 index 67158a94..00000000 --- a/tools/train/source/demo/quanMnist.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// -// quanMnist.cpp -// MNN -// -// Created by MNN on 2020/01/08. -// Copyright © 2018, Alibaba Group Holding Limited -// - -#include -#include -#include -#include -#include -#include "DemoUnit.hpp" -#include "FixModule.hpp" -#include "NN.hpp" -#include "PipelineModule.hpp" -#define MNN_OPEN_TIME_TRACE -#include -#include -#include "MNN_generated.h" -#include "MnistUtils.hpp" -#include "RandomGenerator.hpp" - -using namespace MNN; -using namespace MNN::Express; -using namespace MNN::Train; - -class QuanMnist : public DemoUnit { -public: - virtual int run(int argc, const char* argv[]) override { - if (argc < 3) { - MNN_PRINT("usage: ./runTrainDemo.out QuanMnist /path/to/mnistModel /path/to/unzipped/mnist/data/ [bits]\n"); - return 0; - } - std::string root = argv[2]; - auto varMap = Variable::loadMap(argv[1]); - if (varMap.empty()) { - MNN_ERROR("Can not load model %s\n", argv[1]); - return 0; - } - int bits = 8; - if (argc > 3) { - std::istringstream is(argv[3]); - is >> bits; - } - if (1 > bits || bits > 8) { - MNN_ERROR("bits must be 2-8, use 8 default\n"); - bits = 8; - } - FUNC_PRINT(bits); - auto inputOutputs = Variable::getInputAndOutput(varMap); - auto inputs = Variable::mapToSequence(inputOutputs.first); - auto outputs = Variable::mapToSequence(inputOutputs.second); - std::function, std::shared_ptr>(EXPRP)> transformFunction = - [bits](EXPRP source) { - if (source->get() == nullptr) { - return std::make_pair(std::vector{}, std::shared_ptr(nullptr)); - } - auto convExtracted = NN::Utils::ExtractConvolution(source); - if (convExtracted.weight == nullptr) { - return std::make_pair(std::vector{}, std::shared_ptr(nullptr)); - } - std::shared_ptr module(NN::ConvInt8(convExtracted, - bits)); - return std::make_pair(std::vector{0}, module); - }; - std::shared_ptr model(new PipelineModule(inputs, outputs, transformFunction)); - - MnistUtils::train(model, root); - return 0; - } -}; -DemoUnitSetRegister(QuanMnist, "QuanMnist"); - -class OctaveMnist : public DemoUnit { -public: - virtual int run(int argc, const char* argv[]) override { - if (argc < 3) { - MNN_PRINT("usage: ./runTrainDemo.out OctaveMnist /path/to/mnistModel /path/to/unzipped/mnist/data/ \n"); - return 0; - } - std::string root = argv[2]; - auto varMap = Variable::loadMap(argv[1]); - if (varMap.empty()) { - MNN_ERROR("Can not load model %s\n", argv[1]); - return 0; - } - auto inputOutputs = Variable::getInputAndOutput(varMap); - auto inputs = Variable::mapToSequence(inputOutputs.first); - auto outputs = Variable::mapToSequence(inputOutputs.second); - std::function, std::shared_ptr>(EXPRP)> transformFunction = - [](EXPRP source) { - if (source->get() == nullptr) { - return std::make_pair(std::vector{}, std::shared_ptr(nullptr)); - } - auto convExtracted = NN::Utils::ExtractConvolution(source); - if (convExtracted.weight == nullptr) { - return std::make_pair(std::vector{}, std::shared_ptr(nullptr)); - } - if (convExtracted.option.channel[0] <= 4 || convExtracted.option.channel[1] <= 4) { - return std::make_pair(std::vector{}, std::shared_ptr(nullptr)); - } - std::shared_ptr module(NN::ConvOctave(convExtracted, - 0.5f, 0.5f)); - return std::make_pair(std::vector{0}, module); - }; - std::shared_ptr model(new PipelineModule(inputs, outputs, transformFunction)); - - MnistUtils::train(model, root); - return 0; - } -}; -DemoUnitSetRegister(OctaveMnist, "OctaveMnist");