ml5.js 给出:无法读取 featureExtractor.regression.train 上未定义的 属性 'shape' 视频 (ML5.JS)

ml5.js gives: Cannot read property 'shape' of undefined on featureExtractor.regression.train for video (ML5.JS)

使用 javascript 我正在尝试使用 ml5.js 版本 0.5.0 来检测我是在视频的开头、中间还是结尾。是的,我知道我可以通过其他方式做到这一点,但我想使用 ML 来做到这一点。因此,例如,我在 0 处添加了一个起始图像,在 duration/2 处添加了一个中间图像,在持续时间处添加了一个结束图像。添加这些图像似乎有效,即添加图像的回调未返回错误。我一直 运行 遇到的问题是,当我尝试使用 MobileNet 模型作为基础使用这些添加的图像进行训练()时,我得到以下堆栈跟踪:

`backend_webgl.ts:918 Uncaught (in promise) TypeError: Cannot read property 'shape' of undefined
    at t.fusedBatchMatMul (backend_webgl.ts:918)
    at tf-core.esm.js:17
    at engine.ts:462
    at t.scopedRun (engine.ts:404)
    at t.runKernel (engine.ts:459)
    at matMul_ (tf-core.esm.js:17)
    at Object.matMul (tf-core.esm.js:17)
    at bt (tf-layers.esm.js:17)
    at tf-layers.esm.js:17
    at engine.ts:393`

我在配置 ml5 时没有做任何令人印象深刻的事情:

加载模型并创建回归:

`this["mlsExtractor"] = ml5["featureExtractor"]('MobileNet', this.extractorLoaded.bind(this));`
`extractorLoaded() {
        var video = getVideo();
        console.log("extractor loaded...");
          this["regressor"] = this["mlsExtractor"].regression(video, function () {
            console.log("ml5 regressor loaded...");
            this["mlsloaded"] = true;
        }.bind(this));
    }`

添加视频中的图像。 Res 正在返回一些东西。想提一下,如果我不将视频传递给 addImage,我会收到有关图像大小不正确的错误消息。不确定这是否相关。

`var video = this.getVideo();

        if (this["mlsloaded"] && this["regressor"]) {
            this["regressor"].addImage(video, 'finish', function (err, res) {
                if(err){
                    console.log("error", err);
                    return;
                }
                console.log("res", res)
            });
        }else{
            console.log("ml5 not loaded yet...")
        }`

添加至少 3 张或更多图片后,我点击了训练按钮。我注意到少于 2 个也会出错,所以我尝试训练最多 30 个,但仍然没有快乐。

`this["regressor"].train(function (loss) {
                console.log("training", loss);
            });`

这是我看到堆栈跟踪的地方。我是 ml、tensorflow.js 和 ml5js 的新手。我一直在查看执行此类任务的类似示例 (https://www.openprocessing.org/sketch/565628),但我发现缺少相关文档。 ml5js.org 似乎是 WIP。

感谢任何帮助!!

忘记说了。击中火车并看到该堆栈跟踪后,我可以保存模型。不确定它是否对某人有任何帮助,只是把它放在那里。火车会失败但仍会创建模型似乎很奇怪。

好的,我知道这里发生了什么。我已将最新的 ml5.js 和 tensorflow.js 加载到我的 UI 中。事实证明 tensorflow.js 的最新版本导致与 ml5.js 中的某些函数调用发生冲突。对此的修复是将 tensorflow.js 降级到版本 1.0.0。希望有一天这对其他人有所帮助:)