You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ml5.js创建图像分类神经网络时出现oneHot错误求助

形状分类模型训练报错:oneHot depth must be >=2 解决方法

问题背景

使用ml5.js 0.6.0版本训练图像分类模型时,出现以下错误:

Uncaught Error: Error in oneHot: depth must be >=2, but it is 1
    at oneHot_ (tf-core.esm.js:17:357944)
    at Object.oneHot (tf-core.esm.js:17:71801)
    at NeuralNetworkData.js:560:38
    at tf-core.esm.js:17:40461
    at t.scopedRun (tf-core.esm.js:17:40603)
    at t.tidy (tf-core.esm.js:17:40355)
    at Object.rn (tf-core.esm.js:17:67569)
    at t.value (NeuralNetworkData.js:550:15)
    at NeuralNetworkData.js:533:33
    at Array.forEach (<anonymous>)

用户的代码如下:

const circles = []

function preload() {
    for(let i = 0; i < 10; i++) {
        let index = nf(i+1, 4, 0);
        circles[i] = loadImage(`/data/circle/circle${index}.png`)
    }
}

let shapeClassifier;

function setup() {
    let options = {
        inputs: [128, 128, 4],
        task: 'imageClassification',
        debug: true
      };
      shapeClassifier = ml5.neuralNetwork(options);
    
      for (let i = 0; i < circles.length; i++) {
        shapeClassifier.addData({ image: circles[i] }, { label: 'circle' });
      }
      shapeClassifier.normalizeData();
      shapeClassifier.train({ epochs: 50 }, () => finishedTraining());
}
    
function finishedTraining() {
    console.log('finished training!');
}

错误原因

图像分类任务要求模型至少能区分2个不同类别,你当前只给模型提供了'circle'这一种类别数据。oneHot(独热编码)是ml5.js处理分类标签的方式,它需要类别数≥2才能生成有效的分类向量,因此触发报错。

解决方法

添加至少一个其他形状的数据集,比如正方形,修改后的代码示例:

const circles = []
const squares = [] // 新增正方形数据集数组

function preload() {
    // 加载圆形图片
    for(let i = 0; i < 10; i++) {
        let index = nf(i+1, 4, 0);
        circles[i] = loadImage(`/data/circle/circle${index}.png`)
    }
    // 加载正方形图片
    for(let i = 0; i < 10; i++) {
        let index = nf(i+1, 4, 0);
        squares[i] = loadImage(`/data/square/square${index}.png`)
    }
}

let shapeClassifier;

function setup() {
    let options = {
        inputs: [128, 128, 4],
        task: 'imageClassification',
        debug: true
      };
      shapeClassifier = ml5.neuralNetwork(options);
    
      // 添加圆形数据
      for (let i = 0; i < circles.length; i++) {
        shapeClassifier.addData({ image: circles[i] }, { label: 'circle' });
      }
      // 添加正方形数据
      for (let i = 0; i < squares.length; i++) {
        shapeClassifier.addData({ image: squares[i] }, { label: 'square' });
      }
      shapeClassifier.normalizeData();
      shapeClassifier.train({ epochs: 50 }, () => finishedTraining());
}
    
function finishedTraining() {
    console.log('finished training!');
}

注意:确保你已经准备好对应类别的图片数据集,路径和文件名要和代码中的一致。

内容的提问来源于stack exchange,提问作者Yosseuf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 20:15:31