Pregunta

Mi salida deseada no es una codificación de 1 caliente, sino como un vector de 10 D: [1, 0, 1, 0, 1, 0, 0, 1, 1, 1]y la entrada es como el conjunto de datos MNIST normal.

Quiero usar TensorFlow para construir un modelo para aprender esto, ¿qué función de pérdida debo elegir?

¿Fue útil?

Solución

Si sus clases no son mutuamente Exlcusive, entonces solo tiene múltiples salidas sigmoides (en lugar de la función Softmax como se ve en los clasificadores MNIST de ejemplo). Cada salida será una probabilidad separada de que la red asigne a la membresía en esa clase.

Para una función de pérdida coincidente, en TensorFlow, puede usar el incorporado tf.nn.sigmoid_cross_entropy_with_logits - Tenga en cuenta que funciona en los logits, las entradas a la función sigmoidea, para la eficiencia. El enlace explica las matemáticas involucradas.

Todavía querrá una función sigmoidea en la capa de salida también, ya que cuando lee las predicciones, pero aplica la función de pérdida anterior a la aporte de la función sigmoidea. Tenga en cuenta que este no es un requisito de su problema, puede escribir fácilmente una función de pérdida que funcione desde las salidas sigmoides, solo el tensorflow incorporado se ha escrito de manera diferente para obtener un pequeño impulso de velocidad.

Licenciado bajo: CC-BY-SA con atribución
scroll top