Я немного экспериментирую с автоэнкодерами, и с помощью tenorflow я создал модель, которая пытается восстановить набор данных MNIST.
Моя сеть очень проста: X, e1, e2, d1, Y, где e1 и e2 - уровни кодирования, d2 и Y - уровни декодирования (а Y - восстановленный выход).
X имеет 784 единиц, e1 имеет 100, e2 имеет 50, d1 снова имеет 100 и Y 784 снова.
Я использую сигмоиды в качестве функций активации для слоев e1, e2, d1 и Y. Входные данные находятся в [0,1] и должны быть выходными данными.
Ну, я попытался использовать кросс-энтропию в качестве функции потерь, но на выходе всегда был блоб, и я заметил, что веса от X до e1 всегда будут сходиться к матрице с нулевым значением.
С другой стороны, использование среднеквадратичных ошибок в качестве функции потерь даст хороший результат, и теперь я могу восстановить входные данные.
Почему это так? Я думал, что могу интерпретировать значения как вероятности и, следовательно, использовать перекрестную энтропию, но, очевидно, я делаю что-то не так.