Глава 10. Генеративное глубокое обучение
425
Упражнения
1. Помимо корпуса шекспировских текстов, в примере lstmtextgeneration есть не
сколько других настроенных и готовых к изучению наборов текстов. Запустите
для них процесс обучения и посмотрите, что получится. Например, в качестве об
учающего набора данных воспользуйтесь полным кодом TensorFlow.js. Во время
и после обучения модели пронаблюдайте, демонстрирует ли сгенерированный
текст следующие закономерности исходного кода JavaScript, а также влияние на
них параметра температуры.
А. «Короткие» паттерны, такие как ключевые слова (например,
for
и
function
).
Б. «Средние» паттерны наподобие построчной организации кода.
В. «Далекие» паттерны, такие как попарное соответствие круглых и квадратных
скобок, а также тот факт, что за каждым ключевым словом
function
должны
следовать пара скобок и пара фигурных скобок.
2. Что получится, если убрать в примере fashionmnistvae компонент расстояния
Кульбака — Лейблера из нашей пользовательской функции потерь VAE? Про
верьте это, модифицировав функцию
vaeLoss()
в файле
fashion-mnist-vae/
model.js
(см. листинг 10.7). Напоминают ли изображения, выбранные из латент
ного пространства, изображения из набора данных FashionMNIST? Демонстри
рует ли попрежнему это пространство какието понятные закономерности?
3. Попробуйте схлопнуть в примере mnistacgan десять классов цифр в пять (пер
вый класс состоит из 0 и 1, второй — из 2 и 3 и т. д.) и посмотрите, как поменяется
выходной сигнал ACGAN после обучения. Что вы ожидаете увидеть в сгенери
рованных изображениях? Например, как вы думаете, что сгенерирует ACGAN,
если потребовать сгенерировать изображение первого класса?
Подсказка:
для этого вам понадобится внести изменения в функцию
loadLabels()
из файла
mnist-acgan/data.js
. Нужно также поменять соответствующим образом
константу
NUM_CLASSES
в файле
gan.js
. Кроме того, необходимо модифицировать
переменную
sampledLabels
в функции
generateAndVisualizeImages()
(в файле
index.js
).
Резюме
z
z
Генеративные модели отличаются от дискриминативных, изученных в преды
дущих главах, моделированием процесса, в котором генерируются примеры
обучающего набора данных вместе с их статистическими распределениями.
Благодаря такой архитектуре они могут генерировать новые примеры данных,
удовлетворяющие нужным распределениям, а потому напоминающие настоящие
обучающие данные.
z
z
Мы познакомили вас со способом моделирования структуры текстовых наборов
данных: предсказанием следующего символа. Для итеративного выполнения этой
426
Do'stlaringiz bilan baham: |