Какво е Autoencoder?

Автокодерът е чудесен инструмент за пресъздаване на вход. С проста дума, машината прави, да речем, изображение и може да създаде тясно свързано изображение. Входът в този тип невронна мрежа е немаркиран, което означава, че мрежата е способна на обучение без надзор. По-точно, входът е кодиран от мрежата, за да се фокусира само върху най-критичната функция. Това е една от причините автокодерът да е популярен за намаляване на размерите. Освен това за производство могат да се използват автокодери генеративни модели на обучение. Например, невронната мрежа може да бъде обучена с набор от лица и след това може да създаде нови лица.

В този урок ще научите:

Как работи Autoencoder?

Целта на автокодера е да създаде приближение на входа, фокусирайки се само върху основните характеристики. Може би си мислите защо просто не се научите как да копирате и поставите входа, за да произведете изхода. Всъщност автокодерът е набор от ограничения, които принуждават мрежата да научи нови начини за представяне на данни, различни от просто копиране на изхода.

Типичният автокодер се дефинира с вход, вътрешно представяне и изход (приближение на входа). Ученето се осъществява в слоевете, свързани с вътрешното представяне. Всъщност има два основни блока от слоеве, които приличат на традиционна невронна мрежа. Малката разлика е, че слоят, съдържащ изхода, трябва да бъде равен на входа. На изображението по-долу оригиналният вход влиза в първия блок, наречен енкодер. Това вътрешно представяне компресира (намалява) размера на входа. Във втория блок се извършва реконструкция на входа. Това е фазата на декодиране.

обучение

Моделът ще актуализира тежестите, минимизирайки функцията на загуба. Моделът се наказва, ако изходът за реконструкция е различен от входа.

По-конкретно, представете си изображение с размер 50 × 50 (т.е. 250 пиксела) и невронна мрежа с един скрит слой, съставен от 100 неврона. Обучението се извършва на карта с характеристики, която е два пъти по-малка от въведената. Това означава, че мрежата трябва да намери начин да възстанови 250 пиксела само с вектор неврони, равен на 100.

Пример за подреден автокодер

В този урок ще научите как да използвате подреден автокодер. Архитектурата е подобна на традиционната невронна мрежа. Входът отива към скрит слой, за да бъде компресиран или намален по размер, и след това достига до слоевете за възстановяване. Целта е да се създаде изходно изображение, което е толкова близко, колкото оригинала. Моделът трябва да научи начин да постигне своята задача при набор от ограничения, т.е. с по-ниско измерение.

Днес автокодерите се използват главно за ретуширане на изображение. Представете си изображение с драскотини; човек все още е в състояние да разпознае съдържанието. Идеята на декодирането на автокодера е да добави шум към изображението, за да принуди мрежата да научи модела зад данните.

Другото полезно семейство автокодери е вариационният автокодер. Този тип мрежа може да генерира нови изображения. Представете си, че тренирате мрежа с образа на мъж; такава мрежа може да създаде нови лица.

Създайте автокодер с TensorFlow

В този урок ще научите как да изградите подреден автокодер за реконструкция на изображение.

Ще използвате набора от данни CIFAR-10, който съдържа 60 000 цветни изображения 32 × 32. Наборът от данни вече е разделен на 50 000 изображения за обучение и 10 000 за тестване. Има до десет класа:

  • Самолет
  • Кола
  • Птица
  • Котка
  • Елен
  • Куче
  • Жаба
  • Кон
  • Изпрати
  • Камион

Трябва да изтеглите изображенията на този URL адрес https://www.cs.toronto.edu/

kriz/cifar.html и го разархивирайте. Папката for-10-batch-py съдържа пет пакета данни с по 10 000 изображения всеки в произволен ред.

Преди да изградите и обучите своя модел, трябва да приложите някаква обработка на данни. Ще продължите по следния начин:

  1. Импортирайте данните
  2. Преобразувайте данните в черно-бял формат
  3. Добавете всички партиди
  4. Изградете набор от данни за обучение
  5. Изградете визуализатор на изображения

Предварителна обработка на изображения

Етап 1) Импортирайте данните.

Според официалния уебсайт можете да качите данните със следния код. Кодът ще зареди данните в речник с данни и етикет. Имайте предвид, че кодът е функция.