Ошибка в oneHot: глубина должна быть>= 2, но она равна 1

#javascript #p5.js #ml5

#javascript #p5.js #ml5.js

Вопрос:

Итак, я работал с ml5 в js над простой нейронной сетью, которая должна была обучаться изображениями с использованием библиотеки p5 js, чтобы получить изображения в массив, а затем обучить их через ml5, но я столкнулся с серьезной проблемой, из-за которой я потратил часы на поиск ответа на эту ошибку, ноне могу найти его нигде. Использование библиотек p5, p5.sound,sketch, ml5

Js-файл

 let RustImage = [];

function preload() {
    for (let i = 0; i < 5; i  ) {
        RustImage[i] = loadImage(`RustPhotos/2020-12-08 (${i 7}).png`);

    }
}
let NodeClassifier;

function setup() {
    createCanvas(440, 440);
    // background(0);
    // image(RustImage[0], 0, 0, width, height);

    let options = {
        inputs: [128, 128, 4],
        task: "imageClassification",
        debug: true,
    };

    NodeClassifier = ml5.neuralNetwork(options);

    for (let i = 0; i < RustImage.length; i  ) {
        NodeClassifier.addData({ image: RustImage[i] }, { label: "SulfurNode" });
    }
    NodeClassifier.normalizeData();
    NodeClassifier.train({ epochs: 5 }, finishedTraining);

}

function finishedTraining() {
    console.log("Finished Training!");
}
 

HTML

 <!DOCTYPE html>
<html lang="en">

<head>
    <title>Getting Started with ml5.js</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js"></script>
    <script src="p5.js"></script>
    <script src="p5.sound.js"></script>
    <script src="sketch.js"></script>
    <script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
</head>

<body>
    <script src="improring.js"></script>
</body>

</html>
 

Если кто-нибудь может помочь и знает ответ на эту ошибку или простое исправление, пожалуйста, прокомментируйте.

ПОЛНАЯ ОШИБКА

 Uncaught Error: Error in oneHot: depth must be >=2, but it is 1
node_modules/@tensorflow/tfjs-core/dist/tf-core.esm.js:17
oneHot_ @ c:UsersmattdDesktopXamphtdocsJs Importing Libnode_modules@tensorflowtfjs-coredisttf-core.esm.js:17:357944
oneHot @ c:UsersmattdDesktopXamphtdocsJs Importing Libnode_modules@tensorflowtfjs-coredisttf-core.esm.js:17:71801
◀ load ▶
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:65707:28Promise.then ▶
_main.default.loadImage @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:65671:30
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48748:67
preload @ C:UsersmattdDesktopXamphtdocsJs Importing Libimproring.js:5:24
_start @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48706:19
p5 @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:49057:22
_globalInit @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48197:17Promise.then51.../core/main @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48222:71
o @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:34:19
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:38:22
38../color/color_conversion @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:41211:11
o @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:34:19
r @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:51:9
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:55:7
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:18:12
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:20:3
 

Комментарии:

1. Было бы целесообразно добавить полную трассировку стека ошибки, которую вы получаете, чтобы мы могли иметь представление о том, какая строка вызывает проблему, иначе не так много людей смогут вам помочь.

Ответ №1:

Не уверен, что это одно и то же, но в моем случае некоторые обучающие наборы данных имели только 1 единственный результат метки вывода, поэтому модель не будет обучаться.

Кажется, это каким-то образом совпадает с сообщением «глубина должна быть> = 2, но это 1».

Чтобы быть уверенным, я просто добавляю другой результат вручную в набор данных и перезапускаю