首页 > 解决方案 > 导入 keras-js 会破坏相关功能和组件的单元测试

问题描述

我正在使用 keras-js ( https://github.com/transcranial/keras-js ) 对前端的用户摘要进行一些情绪分析。它可以很好地预测结果。但是当我运行“纱线测试”时,由于 keras-js 使用了 WebGL2 库,一些测试用例被破坏了。

我试图搜索类似的问题,但只发现:

它位于 node_modules/gl/webgl.js 中。

function checkObject (object) { return typeof object === 'object' || !object } 我所做的只是将 void 检查从 object === void 0 放松到 !object。现在它运行了,至少它可以创建一个 gl 上下文。

当我在 keras-js webgl 文件中更改上述代码时,所有测试都通过了。

import KerasJS from 'keras-js';
let model = new KerasJS.Model({
      filepath: 'imdb_bidirectional_lstm.bin',
      gpu: false
    });
await processPredict(modelArr, caseData, model);

即使将 keras-js 导入我的应用程序,测试用例也应该通过。但现在,它显示如下错误消息:

类型错误:gl.getExtension 不是函数

   8 |       filepath: 'imdb_bidirectional_lstm.bin',
   9 |       gpu: false
> 10 |     });
     |                  ^
  11 |     await processPredict(modelArr, caseData, model);
  12 |     // for (let k = 0; k < caseData.notes.length; k++) {
  13 |     //   let model = new KerasJS.Model({

  at new WebGL2 (node_modules/keras-js/lib/WebGL2.js:22:12)
  at Object.<anonymous> (node_modules/keras-js/lib/WebGL2.js:320:16)
  at Object.<anonymous> (node_modules/keras-js/lib/Layer.js:8:14)
  at Object.<anonymous> (node_modules/keras-js/lib/layers/InputLayer.js:10:37)
  at Object.<anonymous> (node_modules/keras-js/lib/layers/index.js:16:42)
  at Object.<anonymous> (node_modules/keras-js/lib/Model.js:28:38)
  at Object.<anonymous> (node_modules/keras-js/lib/index.js:22:37)
  at Object.<anonymous> (src/utils/getSentimentAnalysis.ts:10:39)
  at Object.<anonymous> (src/redux/actions/anomalyDataActions.ts:12:29)
  at Object.<anonymous> (src/redux/actions/anomalyDataActions.test.js:11:50)

标签: reactjsreduxkerasjasminejestjs

解决方案


我使用了由 Keras 训练的网络模型。而且我还在使用它支持使用加载 keras 模型的 Tensorflow.js。请查看。:)


推荐阅读