Estou experimentando um pouco de auto-codificadores e, com o tensorflow, criei um modelo que tenta reconstruir o conjunto de dados MNIST.
Minha rede é muito simples: X, e1, e2, d1, Y, onde e1 e e2 são camadas de codificação, d2 e Y são camadas de decodificação (e Y é a saída reconstruída).
X tem 784 unidades, e1 tem 100, e2 tem 50, d1 tem 100 novamente e Y 784 novamente.
Estou usando sigmoides como funções de ativação para as camadas e1, e2, d1 e Y. As entradas estão em [0,1] e, portanto, devem ser as saídas.
Bem, tentei usar a entropia cruzada como função de perda, mas a saída sempre foi um blob e notei que os pesos de X a e1 sempre convergiam para uma matriz de valor zero.
Por outro lado, o uso de erros quadráticos médios como função de perda produziria um resultado decente, e agora sou capaz de reconstruir as entradas.
Por que? Eu pensei que poderia interpretar os valores como probabilidades e, portanto, usar entropia cruzada, mas obviamente estou fazendo algo errado.