График не может быть отсортирован в топологическом порядке предупреждения - PullRequest
0 голосов
/ 23 марта 2020

Я тренирую SRGAN для суперразрешения изображений. У меня есть генератор и дискриминатор. Входными данными для комбинированной модели являются изображения низкого разрешения и сверхразрешения. И выходы - это вероятность классификации по дискриминатору и выходное изображение, сгенерированное генератором.

И теперь я собираю модель, как показано ниже:

def ensstrophy_loss(y, y_pred):
     en_hr = tf.math.square(y[:,:,:,1])
     en_sr = tf.math.square(y_pred[:,:,:,1])
     return K.mean(K.square(en_hr - en_sr), axis=-1)

# Generate high res. data from low res.
fake_hr = self.generator(img_lr)

# Discriminator determines validity of generated high res. images
validity = self.discriminator(fake_hr)

self.combined = Model([img_lr, img_hr], [validity, fake_hr, fake_hr])
self.combined.compile(loss=['binary_crossentropy', 'mse', ensstrophy_loss],
                              loss_weights=[1e-3, 1, 1e-1],
                              optimizer=optimizer)

И обучаю модель, как показано ниже:

# Train the compiled model
g_loss = self.combined.train_on_batch([imgs_lr, imgs_hr], [valid, imgs_hr, imgs_hr])

Во время выполнения кода я получаю предупреждение что «График не может быть отсортирован в топологическом порядке». Я делаю что-то неправильно?

Я могу сделать то же самое с двумя выходами. Как вы видите, у меня есть два одинаковых вывода (fake_hr) в приведенном выше коде. Я могу определить пользовательскую функцию потерь, которая будет комбинацией mse и ensstrophy_loss. Но я хотел бы проследить, как эти два компонента меняются в процессе обучения. Есть ли другой способ сделать это?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...