Я хочу тренировать модель GAN с суперразрешением с изменяемой формой ввода. учебный набор данных имеет изображения различных форм. Таким образом, идея заключается в том, что независимо от того, что является входным изображением, выходное изображение должно быть увеличенным в 4 раза. мой тренировочный код выглядит так
low_resolution_shape = (64, 64, 3)
high_resolution_shape = (256, 256, 3)
# Common optimizer for all networks
common_optimizer = tf.keras.optimizers.Adam(0.0002, 0.5)
# Build and compile VGG19 network to extract features
vgg = vgg19.build_vgg()
vgg.trainable = False
vgg.compile(loss='mse', optimizer=common_optimizer, metrics=['accuracy'])
# Build and compile the discriminator network
discriminator = discriminator.build_discriminator()
discriminator.compile(loss='mse', optimizer=common_optimizer, metrics=['accuracy'])
# Build the generator network
generator = generator.build_generator()
"""
Build and compile the adversarial model
"""
# Input layers for high-resolution and low-resolution images
input_high_resolution = tf.keras.layers.Input(shape=high_resolution_shape)
input_low_resolution = tf.keras.layers.Input(shape=low_resolution_shape)
# Generate high-resolution images from low-resolution images
generated_high_resolution_images = generator(input_low_resolution)
# Extract feature maps of the generated images
features = vgg(generated_high_resolution_images)
# Make the discriminator network as non-trainable
discriminator.trainable = False
# Get the probability of generated high-resolution images
probs = discriminator(generated_high_resolution_images)
# Create and compile an adversarial model
adversarial_model = tf.keras.models.Model([input_low_resolution, input_high_resolution], [probs, features])```