# tf.contrib.gan.acgan_model

tf.contrib.gan.acgan_model(
generator_fn,
discriminator_fn,
real_data,
generator_inputs,
one_hot_labels,
generator_scope='Generator',
discriminator_scope='Discriminator',
check_shapes=True
)


Returns an ACGANModel contains all the pieces needed for ACGAN training.

The acgan_model is the same as the gan_model with the only difference being that the discriminator additionally outputs logits to classify the input (real or generated). Therefore, an explicit field holding one_hot_labels is necessary, as well as a discriminator_fn that outputs a 2-tuple holding the logits for real/fake and classification.

See https://arxiv.org/abs/1610.09585 for more details.

#### Args:

• generator_fn: A python lambda that takes generator_inputs as inputs and returns the outputs of the GAN generator.
• discriminator_fn: A python lambda that takes real_data/generated data and generator_inputs. Outputs a tuple consisting of two Tensors: (1) real/fake logits in the range -inf, inf classification logits in the range [-inf, inf]
• real_data: A Tensor representing the real data.
• generator_inputs: A Tensor or list of Tensors to the generator. In the vanilla GAN case, this might be a single noise Tensor. In the conditional GAN case, this might be the generator's conditioning.
• one_hot_labels: A Tensor holding one-hot-labels for the batch. Needed by acgan_loss.
• generator_scope: Optional generator variable scope. Useful if you want to reuse a subgraph that has already been created.
• discriminator_scope: Optional discriminator variable scope. Useful if you want to reuse a subgraph that has already been created.
• check_shapes: If True, check that generator produces Tensors that are the same shape as real data. Otherwise, skip this check.

#### Returns:

A ACGANModel namedtuple.

#### Raises:

• ValueError: If the generator outputs a Tensor that isn't the same shape as real_data.
• TypeError: If the discriminator does not output a tuple consisting of (discrimination logits, classification logits).