我一直有這個問題煩我有一段時間了:是否有可能使用的方法call()的tf.keras.model使用標簽?從我所看到的情況來看,這是不合理的,但讓我感到奇怪的是,您可以使用這種方法訓練模型,但不能像該.fit()方法一樣傳遞標簽。
另外,當我在 tensorflow 檔案中閱讀制作 DCGAN 的教程時,出現了這個問題。
來源:https : //www.tensorflow.org/tutorials/generative/dcgan
uj5u.com熱心網友回復:
您可以將張量串列傳遞給呼叫函式,以便傳遞標簽。但是,這不符合 tensorflow/Keras 訓練的邏輯。在您的示例中,基本訓練例程是 train_step。輸出張量首先由生成器和鑒別器呼叫函式計算,然后傳遞給計算損失的函式。這是做事的標準方式:
def train_step(images):
noise = tf.random.normal([BATCH_SIZE, noise_dim])
with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape:
generated_images = generator(noise, training=True)
real_output = discriminator(images, training=True)
fake_output = discriminator(generated_images, training=True)
gen_loss = generator_loss(fake_output)
disc_loss = discriminator_loss(real_output, fake_output)
gradients_of_generator = gen_tape.gradient(gen_loss, generator.trainable_variables)
gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables)
generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables))
discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/323914.html
