Я реализовал модель вариационного автоэнкодера в Pytorch, которая обучается на строках SMILES (строковые представления молекулярных структур).
При обучении автоэнкодера выводить ту же строку, что и ввод, функция потерь не уменьшается между эпохами.
Я пробовал следующее безуспешно:
1) Добавление еще 3 слоев GRU к декодеру для повышения способности обучения модели.
2) Увеличение размера скрытого вектора с 292 до 350.
3) Увеличение и уменьшение скорости обучения.
4) Изменение оптимизатора с Адама на SGD.
5) Обучал модель до 50 эпох.
6) Увеличение и уменьшение размера партии.
Ниже приведена ссылка на мой код.
https://colab.research.google.com/drive/1LctSm_Emnn5sHpw_Hon8xL5fF4bmKRw5
Ниже приведена эквивалентная модель керас (та же архитектура), которая может успешно тренироваться.
https://colab.research.google.com/drive/170Peseik03CFYpWPNyD8B8mxUGxTQx67