Например, у меня есть CNN, который пытается предсказать числа из набора данных MNIST (код написан с использованием Keras). Он имеет 10 выходов, которые образуют слой softmax. Только один из выходов может быть истинным (независимо для каждой цифры от 0 до 9):Что такое замена слоя softmax в случае активации более одного выхода?
Real: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
Predicted: [0.02, 0.9, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]
Сумма предсказывал равна 1,0 в связи с определением SoftMax.
Скажем, у меня есть задание, где мне нужно классифицировать некоторые объекты, которые могут упасть в несколько категорий:
Real: [0, 1, 0, 1, 0, 1, 0, 0, 0, 1]
Так что мне нужно нормализовать каким-либо другим способом. Мне нужна функция, которая дает значение на интервале [0, 1] и, сумма может быть больше 1.
мне нужно что-то вроде этого:
Predicted: [0.1, 0.9, 0.05, 0.9, 0.01, 0.8, 0.1, 0.01, 0.2, 0.9]
Каждое число является вероятность того, что объект попадает в данную категорию. После этого я могу использовать некоторый порог, равный 0,5, чтобы различать категории, в которых данный объект падает. появляются
следующие вопросы:
- Итак, какие функции активации можно использовать для этого?
- Может быть, эта функция уже существует в Keras?
- Может быть, вы можете предложить другой способ предсказать в этом случае?
Похоже, некоторые полезные комментарии можно найти здесь: http://datascience.stackexchange.com/questions/13815/how-to-deal-with-item- принадлежащие к более чем одной категории Они предлагают использовать только сигмоидный слой. – ZFTurbo
Я бы тоже использовал сигмоидный слой. –
Возникает и другой вопрос: будет ли использование потери = 'категориальным_crossentropy' дать адекватный результат или нет? – ZFTurbo