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.
fuente