Я пытаюсь реализовать модель NN (широкое и глубокое обучение) с tf.keras v2.0, чтобы выполнить некоторую двоичную классификацию.У меня есть ~ 50 тыс. Тренировочных образцов и ~ 10 тыс. Тестовых образцов.Распределение классов довольно равномерно (см. Изображение ниже).Точность моих тренировок и испытаний варьируется от 0,6 до 0,7 в зависимости от моих гиперпараметров.Precision и Recall также находятся на уровне около 0,7 для тестирования.
Последний слой моего NN - это Softmax с двумя единицами, и я использую categorical_crossentropy
в качестве функции потерь.
После обучения я пытаюсь получить вероятности для каждого прогноза, используя model.predict()
, но результаты для каждой вероятности почти всегда равны [0., 1.]
или [1., 0.]
.Мне интересно, почему это происходит?
Я пытался использовать 1-значный сигмоид +binary_classification
или даже тренировка в течение 1 эпохи, результаты были такими же.
Вот упрощенная структура NN:
Глубокий компонент подается с вложениями непрерывных объектов, затем проходитчерез 3 слоя прямой связи с выпадениями между ними.
Широкий компонент - это однослойная логистическая регрессия, которая снабжается общими характеристиками категориальных данных.
out_layer = tf.keras.layers.concatenate([deep_component_outlayer, logistic_input])
output = tf.keras.layers.Dense(2, activation='softmax')(out_layer)