Created by: DannyIsFunny
#3530 的修改版本 【修改说明】 因为 #3530 存在兼容性问题: #3530 修改模型格式后,无法加载之前版本的naive格式模型,需要使用最新版本的opt转化后才能运行, 针对模型的兼容性问题,已提交PR #3642 修复中(暂时未完成)。 本PR暂时先将naive_buffer部分的修改撤销,使opt 转化的protobuf 有shape&precision信息,满足paddlejs业务需求。opt转化的 naive_buffer模型仍然没有 shape&precision ,没有兼容性问题。---后续兼容性问题需要解决,使naive_buffer恢复 shape&precision信息。 @DannyIsFunny
【问题描述】Paddle-Lite opt转化后的模型中,丢失了 变量的 数据类型 (precision)和shape信息 【本PR工作】
- 使 opt优化出的模型有
precision
和shape
信息- Naive_buffer & protobuf
- 发现问题: opt 转化后的模型会重复保存var_desc信息,导致转化后的model文件变大,本PR修复
以mobilenet_v1为例转化出的naive_buffer格式模型。
- 本PR之前转化后的体积: 17407383 byte
- 本PR修改后体积:17322487 byte
- (体积减少约 0.08M)
【实现方法】 (1) cpp_desc、naive_buffer desc、pb desc 中都实现并对齐 Set&GetDataType() 、Set&GetShape方法
- 修改前: cpp_desc、naive_buffer desc、pb desc 中均有部分实现并未对齐
(2) 修改naive_buffer中var_desc 定义,补充 Tensor_desc成员
【效果】 输出的pb模型与PaddlePaddle输出的模型的信息格式一致,naive_buffer格式的模型中不缺失 shape&precision 信息 【风险】 不向前兼容 合入后不能加载之前opt转化出的模型,会提示缺少shape&precision 信息