Estoy experimentando un poco de autoencoders, y con tensorflow creé un modelo que intenta reconstruir el conjunto de datos MNIST.
Mi red es muy simple: X, e1, e2, d1, Y, donde e1 y e2 son capas de codificación, d2 e Y son capas de decodificación (e Y es la salida reconstruida).
X tiene 784 unidades, e1 tiene 100, e2 tiene 50, d1 tiene 100 nuevamente e Y 784 nuevamente.
Estoy usando sigmoides como funciones de activación para las capas e1, e2, d1 e Y. Las entradas están en [0,1] y también deberían ser las salidas.
Bueno, intenté usar la entropía cruzada como función de pérdida, pero el resultado siempre fue un blob, y noté que los pesos de X a e1 siempre convergerían en una matriz de valor cero.
Por otro lado, el uso de errores cuadráticos medios como función de pérdida produciría un resultado decente, y ahora puedo reconstruir las entradas.
¿Por qué es así? Pensé que podía interpretar los valores como probabilidades y, por lo tanto, usar entropía cruzada, pero obviamente estoy haciendo algo mal.