def METHOD_NAME(num_epochs=100):
    # Setup the networks.
    gen = Generator()
    disc = Discriminator()
    # Get real training samples and use generator to map latent noise vectors 
    # to fake samples.
    real = lbann.Reshape(lbann.Input(data_field='samples'), dims=[1, 32, 32])
    fake = gen(lbann.Gaussian(mean=0, stdev=1, neuron_dims=[16]))
    # Get discriminator outputs for real and fake samples.
    real_out = disc(real)
    fake_out = disc(fake)
    # Compute the loss functions for the generator and discriminator (hinge loss).
    real_loss = lbann.Relu(lbann.ConstantSubtract(real_out, constant=1))
    fake_loss = lbann.Relu(lbann.AddConstant(fake_out, constant=1))
    # Setup the switches to alternate between generator and discriminator
    # losses.
    disc_loss = lbann.IdentityZero(lbann.Add(real_loss, fake_loss)) # 0 if layer is frozen.
    gen_loss = lbann.IdentityZero(lbann.Negative(fake_out)) # 0 if layer is frozen.
    loss = lbann.Add(disc_loss, gen_loss)
    layers = list(lbann.traverse_layer_graph(loss))
    # Get the generator and discriminator layers for the AlternateUpdates 
    # callback.
    disc_layers = [disc_loss.name]
    gen_layers = [gen_loss.name]
    for l in layers:
        if l.weights and 'disc_' in l.name:
            disc_layers.append(l.name)
        if l.weights and 'gen_' in l.name:
            gen_layers.append(l.name)
    model = lbann.Model(num_epochs,
                        layers=layers,
                        objective_function=loss,
                        callbacks=[
                            lbann.CallbackPrint(), 
                            lbann.CallbackTimer(),
                            lbann.CallbackAlternateUpdates(
                                layers_1=' '.join(disc_layers),
                                layers_2=' '.join(gen_layers),
                                iters_1=1,
                                iters_2=1
                            ),
                            lbann.CallbackDumpOutputs(
                                layers='gen_out',
                                execution_modes='train',
                                directory='dump_outs',
                                batch_interval=1000,
                                format='npy'
                            )
                        ])
    return mode