Я работаю с проблемой многослойной классификации, использую Keras, scikit-learn и т. Д. *
Мой массив данных содержит 4000 микроскопических образцов масла, с изображениями и 13 различными метками, для которых проблема находится в этих образцах.
На самом деле я конвертирую все изображения и метки в массив numpy.
Пример одного помеченного изображения:
[0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0,0.0, 0.0, 1.0, 0.0, 0.0, 0.0]
В этой метке, если позиция равна 1, это означает, что у текущего образца есть особая проблема, как у некоторых частиц в масле, и как вы можете видетьвозможно, в примере более одного выхода.
Проблема в том, что мой фрейм данных не сбалансирован, и мне нужно применить метод Class Weight, но прежде, глядя на метки, я думаю, что мне нужно использоватькак: [0, 1, 0, 0, ...], не так, как в примере, который я привел выше.
Подробно, я могу запустить свой код нейронной сети без веса класса, работает хорошо, но я могу 'Тренировать всю модель с этими несбалансированными данными.Уже пробовал работать с использованием списков, безуспешно!
Конечно, у меня проблемы с формой, изображения имеют, например: (1000, 100, 200, 3) и метки (1000, 13);Вот почему я тоже не могу применить Class Weight ...
Есть несколько проблем, которые я пытаюсь исправить.
Я опубликую свой код, потому что я застрял и не знаючто делать.
class_weight_list = compute_class_weight('balanced',np.unique(Y_train), Y_train)
class_weight = dict(zip(np.unique(Y_train), class_weight_list))
Y_train = to_categorical(Y_train,num_classes=len(np.unique(Y_train)))
main.py
dataset.py
models.py
Какова наилучшая стратегия работы с метками в этом случае?Я ценю, если кто-то может мне помочь.Заранее спасибо !!