forked from mindspore-Ecosystem/mindspore
add compatiblity
This commit is contained in:
parent
4530532f4a
commit
2be2cb3a96
|
@ -76,7 +76,8 @@ if (PLATFORM_ARM64)
|
||||||
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.so DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.so DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
||||||
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.a DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.a DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
||||||
install(FILES ${TOP_DIR}/mindspore/core/ir/dtype/type_id.h DESTINATION ${INC_DIR}/ir/dtype COMPONENT ${COMPONENT_NAME})
|
install(FILES ${TOP_DIR}/mindspore/core/ir/dtype/type_id.h DESTINATION ${INC_DIR}/ir/dtype COMPONENT ${COMPONENT_NAME})
|
||||||
install(DIRECTORY ${TOP_DIR}/mindspore/lite/build/schema/ DESTINATION ${INC_DIR}/schema COMPONENT ${COMPONENT_NAME} FILES_MATCHING PATTERN "*.h" PATTERN "inner" EXCLUDE)
|
install(FILES ${TOP_DIR}/mindspore/lite/build/schema/model_generated.h DESTINATION ${INC_DIR}/schema COMPONENT ${COMPONENT_NAME})
|
||||||
|
install(FILES ${TOP_DIR}/mindspore/lite/build/schema/ops_generated.h DESTINATION ${INC_DIR}/schema COMPONENT ${COMPONENT_NAME})
|
||||||
install(DIRECTORY ${flatbuffers_INC} DESTINATION ${FLATBF_DIR} COMPONENT ${COMPONENT_NAME})
|
install(DIRECTORY ${flatbuffers_INC} DESTINATION ${FLATBF_DIR} COMPONENT ${COMPONENT_NAME})
|
||||||
if (ENABLE_TOOLS)
|
if (ENABLE_TOOLS)
|
||||||
install(TARGETS benchmark RUNTIME DESTINATION ${MAIN_DIR}-${COMPONENT_NAME}/benchmark COMPONENT ${COMPONENT_NAME})
|
install(TARGETS benchmark RUNTIME DESTINATION ${MAIN_DIR}-${COMPONENT_NAME}/benchmark COMPONENT ${COMPONENT_NAME})
|
||||||
|
@ -90,7 +91,8 @@ elseif (PLATFORM_ARM32)
|
||||||
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.so DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.so DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
||||||
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.a DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
install(FILES ${TOP_DIR}/mindspore/lite/build/src/libmindspore-lite.a DESTINATION ${LIB_DIR} COMPONENT ${COMPONENT_NAME})
|
||||||
install(FILES ${TOP_DIR}/mindspore/core/ir/dtype/type_id.h DESTINATION ${INC_DIR}/ir/dtype COMPONENT ${COMPONENT_NAME})
|
install(FILES ${TOP_DIR}/mindspore/core/ir/dtype/type_id.h DESTINATION ${INC_DIR}/ir/dtype COMPONENT ${COMPONENT_NAME})
|
||||||
install(DIRECTORY ${TOP_DIR}/mindspore/lite/build/schema/ DESTINATION ${INC_DIR}/schema COMPONENT ${COMPONENT_NAME} FILES_MATCHING PATTERN "*.h" PATTERN "inner" EXCLUDE)
|
install(FILES ${TOP_DIR}/mindspore/lite/build/schema/model_generated.h DESTINATION ${INC_DIR}/schema COMPONENT ${COMPONENT_NAME})
|
||||||
|
install(FILES ${TOP_DIR}/mindspore/lite/build/schema/ops_generated.h DESTINATION ${INC_DIR}/schema COMPONENT ${COMPONENT_NAME})
|
||||||
install(DIRECTORY ${flatbuffers_INC} DESTINATION ${FLATBF_DIR} COMPONENT ${COMPONENT_NAME})
|
install(DIRECTORY ${flatbuffers_INC} DESTINATION ${FLATBF_DIR} COMPONENT ${COMPONENT_NAME})
|
||||||
if (ENABLE_TOOLS)
|
if (ENABLE_TOOLS)
|
||||||
install(TARGETS benchmark RUNTIME DESTINATION ${MAIN_DIR}-${COMPONENT_NAME}/benchmark COMPONENT ${COMPONENT_NAME})
|
install(TARGETS benchmark RUNTIME DESTINATION ${MAIN_DIR}-${COMPONENT_NAME}/benchmark COMPONENT ${COMPONENT_NAME})
|
||||||
|
|
|
@ -93,10 +93,7 @@ include(${TOP_DIR}/cmake/dependency_utils.cmake)
|
||||||
include(${TOP_DIR}/cmake/dependency_securec.cmake)
|
include(${TOP_DIR}/cmake/dependency_securec.cmake)
|
||||||
include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake)
|
include(${TOP_DIR}/cmake/external_libs/flatbuffers.cmake)
|
||||||
|
|
||||||
set(FBS_FILES
|
file(GLOB FBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/*.fbs)
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/schema/model.fbs
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/schema/ops.fbs
|
|
||||||
)
|
|
||||||
ms_build_flatbuffers_lite(FBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/ fbs_src ${CMAKE_BINARY_DIR}/schema "")
|
ms_build_flatbuffers_lite(FBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/ fbs_src ${CMAKE_BINARY_DIR}/schema "")
|
||||||
ms_build_flatbuffers_lite(FBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/ fbs_inner_src ${CMAKE_BINARY_DIR}/schema/inner "inner")
|
ms_build_flatbuffers_lite(FBS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/schema/ fbs_inner_src ${CMAKE_BINARY_DIR}/schema/inner "inner")
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,11 @@ include "ops.fbs";
|
||||||
|
|
||||||
namespace mindspore.schema;
|
namespace mindspore.schema;
|
||||||
|
|
||||||
|
// This corresponds to the version.
|
||||||
|
file_identifier "MSL1";
|
||||||
|
// File extension of any written files.
|
||||||
|
file_extension "ms";
|
||||||
|
|
||||||
enum NodeType: int {
|
enum NodeType: int {
|
||||||
ValueNode, // const
|
ValueNode, // const
|
||||||
Parameter, // var
|
Parameter, // var
|
||||||
|
|
|
@ -0,0 +1,282 @@
|
||||||
|
/**
|
||||||
|
* Copyright 2019 Huawei Technologies Co., Ltd
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
include "ops_v0.fbs";
|
||||||
|
|
||||||
|
namespace mindspore.schema.v0;
|
||||||
|
|
||||||
|
enum NodeType: int {
|
||||||
|
ValueNode, // const
|
||||||
|
Parameter, // var
|
||||||
|
CNode // op
|
||||||
|
}
|
||||||
|
|
||||||
|
table QuantParam {
|
||||||
|
scale: double;
|
||||||
|
zeroPoint: int;
|
||||||
|
min: double = 0;
|
||||||
|
max: double = 0;
|
||||||
|
narrowRange: bool = true;
|
||||||
|
numBits: int = 8;
|
||||||
|
inited: bool = false;
|
||||||
|
varCorr: float = 1;
|
||||||
|
meanCorr: float = 0;
|
||||||
|
dstDtype: int = 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
table Tensor {
|
||||||
|
nodeType: NodeType;
|
||||||
|
// data type
|
||||||
|
dataType: int;
|
||||||
|
// shape
|
||||||
|
dims: [int];
|
||||||
|
format: Format;
|
||||||
|
refCount: int;
|
||||||
|
offset: int;
|
||||||
|
data: [ubyte];
|
||||||
|
quantParams: [QuantParam];
|
||||||
|
quantClusters: [float];
|
||||||
|
}
|
||||||
|
|
||||||
|
union PrimitiveType {
|
||||||
|
Concat,
|
||||||
|
SoftMax,
|
||||||
|
Activation,
|
||||||
|
Conv2D,
|
||||||
|
FusedBatchNorm,
|
||||||
|
BatchNorm,
|
||||||
|
BiasAdd,
|
||||||
|
Pooling,
|
||||||
|
ROIPooling,
|
||||||
|
DepthwiseConv2D,
|
||||||
|
DeDepthwiseConv2D,
|
||||||
|
Resize,
|
||||||
|
DetectionPostProcess,
|
||||||
|
FullConnection,
|
||||||
|
Mean,
|
||||||
|
DeConv2D,
|
||||||
|
Scale,
|
||||||
|
Reshape,
|
||||||
|
Eltwise,
|
||||||
|
NetOutput,
|
||||||
|
Add,
|
||||||
|
Sub,
|
||||||
|
MatMul,
|
||||||
|
StridedSlice,
|
||||||
|
Power,
|
||||||
|
Slice,
|
||||||
|
Stack,
|
||||||
|
Mul,
|
||||||
|
RealDiv,
|
||||||
|
Pad,
|
||||||
|
Maximum,
|
||||||
|
Minimum,
|
||||||
|
PReLU,
|
||||||
|
LeakyReLU,
|
||||||
|
ArgMax,
|
||||||
|
ArgMin,
|
||||||
|
Exp,
|
||||||
|
Crop,
|
||||||
|
Range,
|
||||||
|
Rsqrt,
|
||||||
|
ExpandDims,
|
||||||
|
Tile,
|
||||||
|
Cast,
|
||||||
|
Shape,
|
||||||
|
Nchw2Nhwc,
|
||||||
|
Nhwc2Nchw,
|
||||||
|
QuantDTypeCast,
|
||||||
|
Split,
|
||||||
|
Permute,
|
||||||
|
FakeQuantWithMinMaxVars,
|
||||||
|
Equal,
|
||||||
|
Less,
|
||||||
|
Greater,
|
||||||
|
NotEqual,
|
||||||
|
LessEqual,
|
||||||
|
GreaterEqual,
|
||||||
|
Min,
|
||||||
|
Floor,
|
||||||
|
Abs,
|
||||||
|
Neg,
|
||||||
|
Cos,
|
||||||
|
Sin,
|
||||||
|
Sqrt,
|
||||||
|
Square,
|
||||||
|
Constant,
|
||||||
|
Log,
|
||||||
|
Tan,
|
||||||
|
Atan,
|
||||||
|
Asin,
|
||||||
|
Clip,
|
||||||
|
Transpose,
|
||||||
|
Squeeze,
|
||||||
|
Unsqueeze,
|
||||||
|
Upsample,
|
||||||
|
Dropout,
|
||||||
|
Broadcast,
|
||||||
|
BroadcastTo,
|
||||||
|
Lrn,
|
||||||
|
ZerosLike,
|
||||||
|
TopK,
|
||||||
|
SpaceToDepth,
|
||||||
|
SpaceToBatch,
|
||||||
|
SparseToDense,
|
||||||
|
ReverseSequence,
|
||||||
|
Rank,
|
||||||
|
Gather,
|
||||||
|
GatherNd,
|
||||||
|
Fill,
|
||||||
|
Elu,
|
||||||
|
DepthToSpace,
|
||||||
|
BatchToSpace,
|
||||||
|
AddN,
|
||||||
|
Ceil,
|
||||||
|
EmbeddingLookup,
|
||||||
|
EmbeddingLookupSparse,
|
||||||
|
FloorDiv,
|
||||||
|
FloorMod,
|
||||||
|
L2Norm,
|
||||||
|
LocalResponseNormalization,
|
||||||
|
MatrixDiag,
|
||||||
|
Reduce,
|
||||||
|
Reverse,
|
||||||
|
Round,
|
||||||
|
Select,
|
||||||
|
Scatter,
|
||||||
|
ScatterND,
|
||||||
|
ConstantOfShape,
|
||||||
|
Unique,
|
||||||
|
Unstack,
|
||||||
|
LogicalAnd,
|
||||||
|
LogicalOr,
|
||||||
|
LogicalXor,
|
||||||
|
LogicalNot,
|
||||||
|
OnnxInt8Quantize,
|
||||||
|
OnnxInt8Dequantize,
|
||||||
|
FakeQuantWithMinMax,
|
||||||
|
FakeQuantWithMinMaxPerChannel,
|
||||||
|
BatchNormFold,
|
||||||
|
MulFold,
|
||||||
|
AddFold,
|
||||||
|
SquaredDifference,
|
||||||
|
Flatten,
|
||||||
|
FlattenGrad,
|
||||||
|
TupleGetItem,
|
||||||
|
Div,
|
||||||
|
Where,
|
||||||
|
OneHot,
|
||||||
|
Lstm,
|
||||||
|
Conv2DGradFilter,
|
||||||
|
Conv2DGradInput,
|
||||||
|
PoolingGrad,
|
||||||
|
BNGrad,
|
||||||
|
Assign,
|
||||||
|
ApplyMomentum,
|
||||||
|
BiasGrad,
|
||||||
|
SoftmaxCrossEntropy,
|
||||||
|
AddGrad,
|
||||||
|
SubGrad,
|
||||||
|
MulGrad,
|
||||||
|
DivGrad,
|
||||||
|
PowerGrad,
|
||||||
|
ActivationGrad,
|
||||||
|
PriorBox,
|
||||||
|
SpaceToBatchND,
|
||||||
|
Depend,
|
||||||
|
Return,
|
||||||
|
MakeTuple,
|
||||||
|
ToFormat,
|
||||||
|
Proposal,
|
||||||
|
Custom,
|
||||||
|
BlackBox,
|
||||||
|
NegGrad,
|
||||||
|
LogGrad,
|
||||||
|
BatchToSpaceND,
|
||||||
|
LshProjection,
|
||||||
|
HashtableLookup,
|
||||||
|
SkipGram,
|
||||||
|
DeConv2DGradFilter,
|
||||||
|
CustomPredict,
|
||||||
|
CustomNormalize,
|
||||||
|
CustomExtractFeatures,
|
||||||
|
AudioSpectrogram,
|
||||||
|
Mfcc,
|
||||||
|
Rfft,
|
||||||
|
FftReal,
|
||||||
|
FftImag,
|
||||||
|
Sgd,
|
||||||
|
Adam,
|
||||||
|
GroupConv2DGradInput,
|
||||||
|
Loop,
|
||||||
|
NonMaxSuppression,
|
||||||
|
InstanceNorm,
|
||||||
|
Identity,
|
||||||
|
LayerNorm,
|
||||||
|
While,
|
||||||
|
ControlDepend,
|
||||||
|
UnsortedSegmentSum,
|
||||||
|
AssignAdd,
|
||||||
|
OnesLike,
|
||||||
|
BinaryCrossEntropyGrad,
|
||||||
|
BinaryCrossEntropy,
|
||||||
|
LpNormalization,
|
||||||
|
DropoutGrad,
|
||||||
|
MaximumGrad,
|
||||||
|
MinimumGrad
|
||||||
|
}
|
||||||
|
|
||||||
|
enum QuantType: int {
|
||||||
|
QUANT_NONE,
|
||||||
|
AwareTraining,
|
||||||
|
WeightQuant,
|
||||||
|
PostTraining
|
||||||
|
}
|
||||||
|
|
||||||
|
table Primitive {
|
||||||
|
value: PrimitiveType;
|
||||||
|
}
|
||||||
|
|
||||||
|
table CNode {
|
||||||
|
name: string;
|
||||||
|
nodeType: NodeType = CNode;
|
||||||
|
primitive: Primitive;
|
||||||
|
inputIndex: [uint];
|
||||||
|
outputIndex: [uint];
|
||||||
|
quantType: QuantType = QUANT_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
table SubGraph {
|
||||||
|
name:string;
|
||||||
|
inputIndices: [uint];
|
||||||
|
outputIndices: [uint];
|
||||||
|
nodeIndices: [uint];
|
||||||
|
tensorIndices: [uint];
|
||||||
|
}
|
||||||
|
|
||||||
|
table MetaGraph {
|
||||||
|
name: string;
|
||||||
|
version: string;
|
||||||
|
fmkType: int; // 0:tf,1:caffe
|
||||||
|
inputIndex: [uint];
|
||||||
|
outputIndex: [uint];
|
||||||
|
mempoolSize: uint;
|
||||||
|
nodes: [CNode];
|
||||||
|
allTensors: [Tensor]; // weight + input + output
|
||||||
|
subGraph : [SubGraph];
|
||||||
|
}
|
||||||
|
|
||||||
|
root_type MetaGraph;
|
File diff suppressed because it is too large
Load Diff
|
@ -32,7 +32,7 @@ enum CHWK_SHAPE { CHWK_C = 0, CHWK_H = 1, CHWK_W = 2, CHWK_K = 3 };
|
||||||
enum KHWC_SHAPE { KHWC_K = 0, KHWC_H = 1, KHWC_W = 2, KHWC_C = 3 };
|
enum KHWC_SHAPE { KHWC_K = 0, KHWC_H = 1, KHWC_W = 2, KHWC_C = 3 };
|
||||||
enum CHW_SHAPE { CHW_C = 0, CHW_H = 1, CHW_W = 2 };
|
enum CHW_SHAPE { CHW_C = 0, CHW_H = 1, CHW_W = 2 };
|
||||||
enum HWC_SHAPE { HWC_H = 0, HWC_W = 1, HWC_C = 2 };
|
enum HWC_SHAPE { HWC_H = 0, HWC_W = 1, HWC_C = 2 };
|
||||||
enum SCHEMA_VERSION { SCHEMA_CUR = 0 };
|
enum SCHEMA_VERSION { SCHEMA_INVALID = -1, SCHEMA_CUR = 0, SCHEMA_V0 = 1 };
|
||||||
static constexpr int kNCHWDimNumber = 4;
|
static constexpr int kNCHWDimNumber = 4;
|
||||||
static constexpr int kNHWCDimNumber = 4;
|
static constexpr int kNHWCDimNumber = 4;
|
||||||
|
|
||||||
|
|
|
@ -51,14 +51,18 @@ int ConvertSubGraph(const schema::SubGraph &sub_graph, Model *model) {
|
||||||
int VersionVerify(flatbuffers::Verifier *verify) {
|
int VersionVerify(flatbuffers::Verifier *verify) {
|
||||||
if (schema::VerifyMetaGraphBuffer(*verify)) {
|
if (schema::VerifyMetaGraphBuffer(*verify)) {
|
||||||
return SCHEMA_VERSION::SCHEMA_CUR;
|
return SCHEMA_VERSION::SCHEMA_CUR;
|
||||||
|
} else if (schema::v0::VerifyMetaGraphBuffer(*verify)) {
|
||||||
|
return SCHEMA_VERSION::SCHEMA_V0;
|
||||||
}
|
}
|
||||||
return -1;
|
return SCHEMA_VERSION::SCHEMA_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
const void *GetMetaGraphByVerison(const char *buf, const int &schema_version) {
|
const void *GetMetaGraphByVerison(const char *buf, const int &schema_version) {
|
||||||
MS_ASSERT(buf != nullptr);
|
MS_ASSERT(buf != nullptr);
|
||||||
if (schema_version == SCHEMA_VERSION::SCHEMA_CUR) {
|
if (schema_version == SCHEMA_VERSION::SCHEMA_CUR) {
|
||||||
return reinterpret_cast<const void *>(schema::GetMetaGraph(buf));
|
return reinterpret_cast<const void *>(schema::GetMetaGraph(buf));
|
||||||
|
} else if (schema_version == SCHEMA_VERSION::SCHEMA_V0) {
|
||||||
|
return reinterpret_cast<const void *>(schema::v0::GetMetaGraph(buf));
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -69,6 +73,9 @@ int GenerateModelByVersion(const void *meta_graph, Model *model, const int &sche
|
||||||
if (schema_version == SCHEMA_VERSION::SCHEMA_CUR) {
|
if (schema_version == SCHEMA_VERSION::SCHEMA_CUR) {
|
||||||
status = GenerateModel<schema::MetaGraph, schema::CNode>(*reinterpret_cast<const schema::MetaGraph *>(meta_graph),
|
status = GenerateModel<schema::MetaGraph, schema::CNode>(*reinterpret_cast<const schema::MetaGraph *>(meta_graph),
|
||||||
model, schema_version);
|
model, schema_version);
|
||||||
|
} else if (schema_version == SCHEMA_VERSION::SCHEMA_V0) {
|
||||||
|
status = GenerateModel<schema::v0::MetaGraph, schema::v0::CNode>(
|
||||||
|
*reinterpret_cast<const schema::v0::MetaGraph *>(meta_graph), model, schema_version);
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "include/model.h"
|
#include "include/model.h"
|
||||||
#include "include/version.h"
|
#include "include/version.h"
|
||||||
#include "schema/model_generated.h"
|
#include "schema/model_generated.h"
|
||||||
|
#include "schema/model_v0_generated.h"
|
||||||
#include "src/common/common.h"
|
#include "src/common/common.h"
|
||||||
#ifndef PRIMITIVE_WRITEABLE
|
#ifndef PRIMITIVE_WRITEABLE
|
||||||
#include "src/ops/ops_register.h"
|
#include "src/ops/ops_register.h"
|
||||||
|
|
|
@ -28,7 +28,8 @@ TrainModel *TrainModel::Import(const char *model_buf, size_t size) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
flatbuffers::Verifier verify((const uint8_t *)model_buf, size);
|
flatbuffers::Verifier verify((const uint8_t *)model_buf, size);
|
||||||
if (!schema::VerifyMetaGraphBuffer(verify)) {
|
int schema_version = VersionVerify(&verify);
|
||||||
|
if (schema_version == -1) {
|
||||||
MS_LOG(ERROR) << "The buffer is invalid and fail to create graph.";
|
MS_LOG(ERROR) << "The buffer is invalid and fail to create graph.";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -45,49 +46,19 @@ TrainModel *TrainModel::Import(const char *model_buf, size_t size) {
|
||||||
}
|
}
|
||||||
memcpy(model->buf, model_buf, size);
|
memcpy(model->buf, model_buf, size);
|
||||||
model->buf_size_ = size;
|
model->buf_size_ = size;
|
||||||
auto meta_graph = schema::GetMetaGraph(model->buf);
|
const void *meta_graph = GetMetaGraphByVerison(model->buf, schema_version);
|
||||||
if (meta_graph == nullptr) {
|
if (meta_graph == nullptr) {
|
||||||
delete model;
|
|
||||||
MS_LOG(ERROR) << "meta_graph is nullptr!";
|
MS_LOG(ERROR) << "meta_graph is nullptr!";
|
||||||
|
delete (model);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta_graph->name() != nullptr) {
|
int status = GenerateModelByVersion(meta_graph, model, schema_version);
|
||||||
model->name_ = meta_graph->name()->c_str();
|
if (status != RET_OK) {
|
||||||
}
|
delete (model);
|
||||||
if (meta_graph->version() != nullptr) {
|
MS_LOG(ERROR) << "fail to generate model";
|
||||||
model->version_ = meta_graph->version()->c_str();
|
|
||||||
}
|
|
||||||
if (!ConvertNodes(*meta_graph, model)) {
|
|
||||||
delete model;
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ConvertTensors(*meta_graph, model)) {
|
|
||||||
delete model;
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (meta_graph->subGraph() == nullptr) {
|
|
||||||
int ret = MetaGraphMappingSubGraph(*meta_graph, model);
|
|
||||||
if (ret != RET_OK) {
|
|
||||||
MS_LOG(ERROR) << "converter old version model wrong.";
|
|
||||||
delete model;
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
auto sub_graphs = meta_graph->subGraph();
|
|
||||||
auto sub_graph_size = sub_graphs->size();
|
|
||||||
for (size_t i = 0; i < sub_graph_size; i++) {
|
|
||||||
auto sub_graph = sub_graphs->GetAs<schema::SubGraph>(i);
|
|
||||||
int ret = ConvertSubGraph(*sub_graph, model);
|
|
||||||
if (ret != RET_OK) {
|
|
||||||
MS_LOG(ERROR) << "converter subgraph wrong.";
|
|
||||||
delete model;
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -355,6 +355,7 @@ TEST_F(NetworkTest, tuning_layer) {
|
||||||
flatbuffers::FlatBufferBuilder builder(1024);
|
flatbuffers::FlatBufferBuilder builder(1024);
|
||||||
auto offset = schema::MetaGraph::Pack(builder, meta_graph.get());
|
auto offset = schema::MetaGraph::Pack(builder, meta_graph.get());
|
||||||
builder.Finish(offset);
|
builder.Finish(offset);
|
||||||
|
schema::FinishMetaGraphBuffer(builder, offset);
|
||||||
size_t size = builder.GetSize();
|
size_t size = builder.GetSize();
|
||||||
const char *content = reinterpret_cast<char *>(builder.GetBufferPointer());
|
const char *content = reinterpret_cast<char *>(builder.GetBufferPointer());
|
||||||
std::cout << "build fb size= " << size << std::endl;
|
std::cout << "build fb size= " << size << std::endl;
|
||||||
|
|
|
@ -165,6 +165,7 @@ TEST_F(SchedulerTest, TestConstructSubGraphsTwoBranch) {
|
||||||
flatbuffers::FlatBufferBuilder builder(1024);
|
flatbuffers::FlatBufferBuilder builder(1024);
|
||||||
auto offset = mindspore::schema::MetaGraph::Pack(builder, meta_graph.get());
|
auto offset = mindspore::schema::MetaGraph::Pack(builder, meta_graph.get());
|
||||||
builder.Finish(offset);
|
builder.Finish(offset);
|
||||||
|
mindspore::schema::FinishMetaGraphBuffer(builder, offset);
|
||||||
size_t size = builder.GetSize();
|
size_t size = builder.GetSize();
|
||||||
const char *content = reinterpret_cast<char *>(builder.GetBufferPointer());
|
const char *content = reinterpret_cast<char *>(builder.GetBufferPointer());
|
||||||
auto model = mindspore::lite::Model::Import(content, size);
|
auto model = mindspore::lite::Model::Import(content, size);
|
||||||
|
@ -349,6 +350,7 @@ TEST_F(SchedulerTest, TestConstructSubGraphsThreeBranch) {
|
||||||
flatbuffers::FlatBufferBuilder builder(1024);
|
flatbuffers::FlatBufferBuilder builder(1024);
|
||||||
auto offset = mindspore::schema::MetaGraph::Pack(builder, meta_graph.get());
|
auto offset = mindspore::schema::MetaGraph::Pack(builder, meta_graph.get());
|
||||||
builder.Finish(offset);
|
builder.Finish(offset);
|
||||||
|
mindspore::schema::FinishMetaGraphBuffer(builder, offset);
|
||||||
size_t size = builder.GetSize();
|
size_t size = builder.GetSize();
|
||||||
const char *content = reinterpret_cast<char *>(builder.GetBufferPointer());
|
const char *content = reinterpret_cast<char *>(builder.GetBufferPointer());
|
||||||
auto model = mindspore::lite::Model::Import(content, size);
|
auto model = mindspore::lite::Model::Import(content, size);
|
||||||
|
|
|
@ -27,6 +27,7 @@ int Storage::Save(const schema::MetaGraphT &graph, const std::string &outputPath
|
||||||
flatbuffers::FlatBufferBuilder builder(1024);
|
flatbuffers::FlatBufferBuilder builder(1024);
|
||||||
auto offset = schema::MetaGraph::Pack(builder, &graph);
|
auto offset = schema::MetaGraph::Pack(builder, &graph);
|
||||||
builder.Finish(offset);
|
builder.Finish(offset);
|
||||||
|
schema::FinishMetaGraphBuffer(builder, offset);
|
||||||
int size = builder.GetSize();
|
int size = builder.GetSize();
|
||||||
auto content = builder.GetBufferPointer();
|
auto content = builder.GetBufferPointer();
|
||||||
if (content == nullptr) {
|
if (content == nullptr) {
|
||||||
|
|
Loading…
Reference in New Issue