Я работаю над прогрессивно растущей GAN и испытываю проблемы при использовании train_on_batch после добавления слоев в существующую модель. Он хочет, чтобы я передал некоторую ценность тензору-заполнителю
Вот код для создания моделей и добавления слоев
def build_discriminator():
model = tf.keras.Sequential()
model.add(layers.Conv2D(128, kernel_size=3, strides=2, input_shape=(7, 7, 128), padding='same'))
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU(alpha=0.01))
assert model.input_shape == (None, 7, 7, 128)
assert model.output_shape == (None, 4, 4, 128)
# Output layer with sigmoid activation
model.add(layers.Flatten())
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(), metrics=['accuracy'])
model.summary()
return model
def add_layer_disc(discriminator):
model = tf.keras.Sequential()
model.add(layers.Conv2D(64, kernel_size=3, strides=2, input_shape=(28, 28, 1), padding='same'))
model.add(layers.LeakyReLU(alpha=0.01))
assert model.input_shape == (None, 28, 28, 1)
assert model.output_shape == (None, 14, 14, 64)
# Convolutional layer, from 14x14x32 into 7x7x64 tensor
model.add(layers.Conv2D(128, kernel_size=3, strides=2, padding='same'))
model.add(layers.BatchNormalization())
model.add(layers.LeakyReLU(alpha=0.01))
#assert model.input_shape == (None, 14, 14, 32)
assert model.output_shape == (None, 7, 7, 128)
model.add(discriminator)
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.Adam(), metrics=['accuracy'])
model.summary()
return model
Когда я пытаюсь выполнить следующее, я получаю ошибку
d_loss_real = discriminator.train_on_batch(imgs, real)
Это ошибка, которую я получаю:
tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'conv2d_input' with dtype float and shape [?,7,7,128]
[[node conv2d_input (defined at /Users/Armin/PycharmProjects/DCGAN/test.py:495) ]] [Op:__inference_keras_scratch_graph_2800]
Однако он работает нормально, когда я пытаюсь сделать следующее:
x = discriminator(gen_imgs, training = True)