## 4. Свёрточный автокодировщик (в качестве домашнего задания)
Добавим свёрточные слои и немного макспулинга. Часть, которая относится к энкодеру будет стандартной. Это просто свёрточные слои и пулинг. Кончается она обычным свёрточным слоем с `code_size` нейронов. В качестве функции активации берите `elu`.
Попробуйте повторить свёртку и пулинг $2\times2$ четыре раза с ядром размера $3 \times 3$, padding выбирете таким образом, чтобы сохранилась пространственная размероность картинки. У слоёв поставьте число каналов: $32$, $64$, $128$, $256$.
Для декодера мы будем использовать
`torch.nn.Upsample` с scale_factor равным 2 и `torch.nn.ConvTranspose2d`.
Проведите эксперименты с разными подходами Unpooling, сравните результаты, напишите ваши наблюдения! **Продолжение д/з:**
- Обучите модель и постройте график падения ошибки.
- Выведите привычные картинки "до/после" автоэнкодера для нескольких объектов из test выборки (*подсказка:* с помощью ранее определенной функции `visualize`)