Sto sperimentando un po 'di codificatori automatici e con tensorflow ho creato un modello che tenta di ricostruire il set di dati MNIST.
La mia rete è molto semplice: X, e1, e2, d1, Y, dove e1 ed e2 sono livelli di codifica, d2 e Y sono livelli di decodifica (e Y è l'output ricostruito).
X ha 784 unità, e1 ha 100, e2 ha 50, d1 ha di nuovo 100 e Y 784 di nuovo.
Sto usando i sigmoidi come funzioni di attivazione per i livelli e1, e2, d1 e Y. Gli ingressi sono in [0,1] e quindi dovrebbero essere gli output.
Bene, ho provato a usare l'entropia incrociata come funzione di perdita, ma l'output è sempre stato un blob e ho notato che i pesi da X a e1 converrebbero sempre in una matrice a valore zero.
D'altra parte, l'uso di errori al quadrato medio come funzione di perdita, produrrebbe un risultato decente e ora sono in grado di ricostruire gli input.
Perchè è così? Pensavo di poter interpretare i valori come probabilità e quindi usare l'entropia incrociata, ma ovviamente sto facendo qualcosa di sbagliato.