Paddle.js icon indicating copy to clipboard operation
Paddle.js copied to clipboard

paddlejs无法加载经paddlejs-converter转换的infer model

Open WilliamZhangZhe opened this issue 2 years ago • 0 comments

步骤:

  1. 从https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.6/EISeg/docs/image.md页下载static_hrnet18_ocr64_cocolvis模型
  2. 使用paddlejs-converter转换下载的模型,成功生成model.json以及相关.dat文件
  3. 修改paddlejs-model/ocr/src/index.ts重的引用模型地址为上步骤生成的模型
  4. 在paddlejs-examples/ocr项目下引用上步骤修改的paddlejs-model/ocr
  5. 本地调试paddlejs-examples/ocr,页面资源加载正常,但是console报错 index.js:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'reduce') at index.js:1:5394 at index.js:1:1583 at Array.forEach () at h (index.js:1:1544) at t.allocateParamsVar (index.js:1:5377) at index.js:1:4315

代码定位在:paddlejs-core/src/loader.ts:134 static allocateParamsVar(vars, allChunksData: Float32Array | ParamObject) { let marker = 0; // 读到哪个位置了 let len; // 当前op长度 const chunkData: number[] = Array.isArray(allChunksData) ? allChunksData : Object.values(allChunksData); traverseVars(vars, item => { 134: len = item.shape.reduce((a, b) => a * b); // 长度为shape的乘积 // 为了减少模型体积,模型转换工具不会导出非persistable的数据,这里只需要读取persistable的数据 if (item.persistable) { item.data = chunkData.slice(marker, marker + len); marker += len; } }); }

WilliamZhangZhe avatar Oct 21 '22 08:10 WilliamZhangZhe