Обновление 1: при удалении слоев пакетной нормализации работает хорошо. Очевидно, способ работы пакетной нормализации был изменен между итерациями. Все еще расследует.
Обновление 2: вопросы ниже сообщают о двух возможных средствах правовой защиты. изменение значения импульса в батнормализации (у меня это не сработало) и просто комментирование батчнорма в дискриминаторе. Комментирование BN в дискриминаторе, кажется, работает для меня. Пока не знаю почему.
Вопросы / ссылки, сообщающие об аналогичных проблемах:
Плохой результат при BatchNormalization
https://datascience.stackexchange.com/questions/56860/dc-gan-with-batch-normalization-not-working
Проблема с частичной моделью поезда Keras (о модели GAN)
Начало вопроса:
Я пытаюсь запустить DCGAN из GAN в действии. GAN генерирует изображения из набора данных MNIST.
Исходный код можно найти здесь GAN в действии, страница github
Код работает хорошо, и изображения получаются хорошими.
Когда я изменяю исходный код так, чтобы он стал совместимым с tf.keras
, а не keras
, способность модели DCGAN генерировать изображения становится бесполезной.
Это единственный фрагмент кода, который я изменил. Из:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from keras.datasets import mnist
from keras.layers import Activation, BatchNormalization, Dense, Dropout, Flatten, Reshape
from keras.layers import LeakyReLU
from keras.layers import Conv2D, Conv2DTranspose
from keras.models import Sequential
from keras.optimizers import Adam
to:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from tensorflow.keras.datasets import mnist
from tensorflow.keras.layers import Activation, BatchNormalization, Dense, Dropout, Flatten, Reshape
from tensorflow.keras.layers import LeakyReLU
from tensorflow.keras.layers import Conv2D, Conv2DTranspose
from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import Adam
Я даже пытался обеспечить совместимость tf_1 с
tf.compat.v1.disable_v2_behavior()
- производительность остается плохой.
Почему это? Я пропустил что-то очевидное?