我正在使用Tensorflow创建GAN。我决定使用Keras来使Generator和Discriminator变得复杂(因为在Keras中定义层更加容易)。我在Tensorflow中有GAN的丢失和训练代码,但我不知道如何使用该代码训练Keras模型。
D_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=D_logit_real, labels=tf.ones_like(D_logit_real)))
D_loss_fake = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=D_logit_fake, labels=tf.zeros_like(D_logit_fake)))
D_loss = D_loss_real + D_loss_fake
G_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=D_logit_fake, labels=tf.ones_like(D_logit_fake)))
D_solver = tf.train.AdamOptimizer().minimize(D_loss,var_list = ?)
G_solver = tf.train.AdamOptimizer().minimize(G_loss,var_list = ?)
我在var_list中传递了tf.Variables
(与tf一起在GAN中使用)。但是,我不知道如何最小化keras模型,因为keras自己负责权重。
我不能使用Keras的编译和拟合函数,因为在训练过程中Generator和Discriminator过于相互依赖。
我如何如上所述亏损训练我的角膜?