Плохая производительность помогает - классификация мути-класса по ANN

Я реализую задачу классификации 7 классов с нормализованными функциями и метками с горячим кодированием. Однако точность обучения и валидации была крайне низкой.

Как показано, я нормализовал функции с помощью метода StandardScaler(), и каждый вектор функций получается массивом из 54 dim. Кроме того, я закодировал метки следующим образом.

Как показано ниже, метки представляют собой (num_y, 7) пустые массивы.

Моя сетевая архитектура:

Здесь показано, как я разработал свою модель. И мне интересно, связан ли плохой результат с выбором функции потерь (я использовал категориальную кросс-энтропию)

Я ценю любой ответ от вас. Большое спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование точности явно неправильно. Код, на который я ссылаюсь, не указан в вашем вопросе, но я могу предположить, что вы сравниваете истинные метки с выходными данными вашей модели. Ваша модель, вероятно, возвращает вектор размерности 7, который представляет собой функцию плотности вероятности по классам (из-за активации softmax в вашем последнем слое), например:

Модель возвращает: (0,7 0 0,02 0,02 0,02 0,04 0,2) -- в сумме они дают 1, поскольку представляют вероятности

А затем вы сравниваете эти числа с: (1 0 0 0 0 0 0)

Вам нужно перевести выходные данные модели в соответствующую предсказанную метку ((0,7 0 0,02 0,02 0,02 0,04 0,2) соответствует (1 0 0 0 0 0 0), потому что первый выходной нейрон имеет большее значение (0,7)). Вы можете сделать это, применив функцию max после вывода вашей модели.

Чтобы убедиться, что это не так с вашей формулировкой проблемы, напечатайте вектор, который вы сравниваете с истинными метками, чтобы получить вашу точность, и проверьте, являются ли они 7 числами, сумма которых равна 1.

Спасибо, @Gaussian_Prior. Проблема была полностью решена.

Friedrich_Cheng94 26.12.2020 17:33

Другие вопросы по теме