Функция активации softmax входит в последний уровень, но вопрос о том, когда ее использовать, зависит от ваших данных, меток, функции потерь и оптимизатора. на самом деле, единственное, что добавляет эта функция, это вывод вашего последнего слоя в значения вероятности. Это отвечает на ваш вопрос, какой прогноз использовать. Например, если у вас есть мультиклассовая классификация и целочисленные метки, такие как [0,1,2]
, не имеющие softmax, это может ускорить ваше обучение. Но опять же, это зависит от вашего оптимизатора. У меня был опыт, когда я должен был использовать Adamax
без softmax
для лучшего результата.
predictions = model(features)
predictions[:5]
<tf.Tensor: shape=(5, 3), dtype=float32, numpy=
array([[-0.24120538, -6.219783 , -0.28271127],
[-0.3727467 , -7.456743 , -0.2836677 ],
[ 0.29496336, -5.0277514 , -1.2696607 ],
[ 0.27997503, -4.6681266 , -1.181448 ],
[-0.23913011, -5.8720627 , -0.23690107]], dtype=float32)>
tf.nn.softmax(predictions[:5])
<tf.Tensor: shape=(5, 3), dtype=float32, numpy=
array([[5.0971615e-01, 1.2908182e-03, 4.8899299e-01],
[4.7755370e-01, 4.0038861e-04, 5.2204597e-01],
[8.2369196e-01, 4.0191957e-03, 1.7228886e-01],
[8.0710059e-01, 5.7278876e-03, 1.8717149e-01],
[4.9855182e-01, 1.7838521e-03, 4.9966437e-01]], dtype=float32)>