В настоящее время я обучаю WGAN для пользовательской базы данных, получая полезные результаты с MNIST, мы пытались работать с нашими собственными изображениями. В настоящее время я использую точно такой же код. (Тренируйте дискриминатор n раз, затем генератор). Рассчитать потери et c et c. Я сделал только изменение чисел c для генератора из-за заполнения. )
Исходный код, который был запущен, был
for epoch in range(epochs):
start = time.time()
disc_loss = 0
gen_loss = 0
for images in train_dataset:
disc_loss += train_discriminator(images)
if disc_optimizer.iterations.numpy() % n_critic == 0:
gen_loss += train_generator()
print('Time for epoch {} is {} sec - gen_loss = {}, disc_loss = {}'.format(epoch + 1, time.time() - start, gen_loss / batch_size, disc_loss / (batch_size*n_critic)))
if epoch % save_interval == 0:
save_imgs(epoch, generator, seed)
Из-за ошибок с ожидаемым измерением, когда я запускаю его с нашими numpies
Expected ndim=4, got ndim=3
Указывая на обучение нашего дискриминатора , Я решил эти ошибки, внеся следующие изменения:
for images in train_dataset:
images=np.expand_dims(images, axis=0)
images=images/255.
#images=images.resize
disc_loss += train_discriminator(images)
Это решило проблему с началом процесса обучения, но я заметил несколько других проблем.
Во-первых, значения потерь после первого Эпоха, которую мы установили на 0, и фактические сгенерированные изображения, никогда не менялись после первого раза, когда я их отображал. Последним вопросом было то, что время тренировок казалось слишком быстрым. Эпоха 2 не может быть обучена за 0,0002 секунды и т. Д.
Time for epoch 1 is 613.6920039653778 sec - gen_loss = -0.7189221382141113, disc_loss = -1.3103094100952148
Time for epoch 2 is 0.00022411346435546875 sec - gen_loss = 0, disc_loss = 0
Кто-нибудь еще сталкивался с чем-то подобным или есть ошибка oop, которую я не могу уловить?