【问题标题】:tf.keras.model call() method, is it possible to use method call() with labels?tf.keras.model call() 方法,是否可以将方法 call() 与标签一起使用?
【发布时间】:2021-12-04 01:55:24
【问题描述】:

这个问题困扰了我一段时间:是否可以使用带有标签的tf.keras.model 的方法call()?从我所看到的情况来看,这并不合理,但让我感到奇怪的是,您能够使用这种方法训练模型,但不能像 .fit() 方法那样传递标签。

另外,当我阅读 tensorflow 文档中制作 DCGAN 的教程时,也出现了这个问题。

来源:https://www.tensorflow.org/tutorials/generative/dcgan

【问题讨论】:

    标签: python tensorflow keras generative-adversarial-network


    【解决方案1】:

    您可以将张量列表传递给调用函数,因此您可以传递标签。但是,这不在 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))
    

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2019-03-15
      • 2013-06-22
      • 2020-08-11
      • 2016-06-04
      相关资源
      最近更新 更多