2017-10-28 2 views
0

Ich arbeite das neue TFGAN Modul in tensorflow bei der Umsetzung TFGAN ModuleImplementierung neuer TFGAN Modul

Hat eigentlich jemand in der Lage gewesen, um es zu arbeiten? Ich laufe in Fragen tf.random.noise in einen simplen Generator vorbei:

tfgan = tf.contrib.gan 
noise = tf.random_normal([BATCH_SIZE, 28,28]) 

def my_generator(z, out_dim=28*28, n_units=128, reuse=False, alpha=0.01):  
    with tf.variable_scope('generator', reuse=reuse): 
     # Hidden layer 
     h1 = tf.layers.dense(z, n_units, activation=None) 

     # Leaky ReLU 
     h1 = tf.maximum(h1, alpha*h1) 

     # Logits and tanh output 
     logits = tf.layers.dense(h1, out_dim, activation=None) 
     out = tf.nn.tanh(logits) 

    return out, logits 

dann die tfgan Aufruf:

# Build the generator and discriminator. 
gan_model = tfgan.gan_model(
    generator_fn=my_generator, 
    discriminator_fn=my_discriminator, 
    real_data=images, 
    generator_inputs=noise) 

Error: "tuple' object has no attribute 'dtype'" und deutete auf meine generator_inputs Linie.

(Als Randbemerkung, ich fast alle meine NN Arbeit an der keras Ebene Abstraktion getan haben, so dass ich weiß, dass dies eine einfache Frage ist)


EDIT und PRO KOMMENTAR VON kvorobiev (Danke sehr viel)

-Code ohne Datengenerator (im Grunde die gleiche wie die Post auf github)

tfgan = tf.contrib.gan 
noise = tf.random_normal([28,28]) 


def unconditional_generator(z, out_dim=28*28, n_units=128, reuse=False, alpha=0.01):  
    with tf.variable_scope('generator', reuse=reuse): 
     # Hidden layer 
     h1 = tf.layers.dense(z, n_units, activation=None) 
     # Leaky ReLU 
     h1 = tf.maximum(h1, alpha*h1) 

     # Logits and tanh output 
     logits = tf.layers.dense(h1, out_dim, activation=None) 
     out = tf.nn.tanh(logits) 

     return out, logits 

def unconditional_discriminator(x, n_units=128, reuse=False, alpha=0.01): 
    with tf.variable_scope('discriminator', reuse=reuse): 
     # Hidden layer 
     h1 = tf.layers.dense(x, n_units, activation=None) 

     # Leaky ReLU 
     h1 = tf.maximum(h1, alpha*h1) 

     logits = tf.layers.dense(h1, 1, activation=None) 
     out = tf.nn.sigmoid(logits) 

     return out, logits 

# Build the generator and discriminator. 
gan_model = tfgan.gan_model(
    generator_fn= unconditional_generator, # you define 
    discriminator_fn = unconditional_discriminator, # you define 
    real_data=img_generator, 
    generator_inputs=noise) 

# Build the GAN loss. 
gan_loss = tfgan.gan_loss(
    gan_model, 
    generator_loss_fn=tfgan_losses.wasserstein_generator_loss, 
    discriminator_loss_fn=tfgan_losses.wasserstein_discriminator_loss) 

# Create the train ops, which calculate gradients and apply updates to weights. 
train_ops = tfgan.gan_train_ops(
    gan_model, 
    gan_loss, 
    generator_optimizer=tf.train.AdamOptimizer(gen_lr, 0.5), 
    discriminator_optimizer=tf.train.AdamOptimizer(dis_lr, 0.5)) 

# Run the train ops in the alternating training scheme. 
tfgan.gan_train(
    train_ops, 
    hooks=[tf.train.StopAtStepHook(num_steps=100)], 
    logdir=FLAGS.train_log_dir) 

Traceback:

-------------------------------------------------------------------------- AttributeError       Traceback (most recent call last) <ipython-input-3-2c570c5257d0> in <module>() 
    37  discriminator_fn = unconditional_discriminator, # you define 
    38  real_data=img_generator, 
---> 39  generator_inputs=noise) 
    40 
    41 # Build the GAN loss. 

~/tf_1.4/lib/python3.5/site-packages/tensorflow/contrib/gan/python/train.py in gan_model(generator_fn, discriminator_fn, real_data, generator_inputs, generator_scope, discriminator_scope, check_shapes) 
    105 with variable_scope.variable_scope(discriminator_scope) as dis_scope: 
    106  discriminator_gen_outputs = discriminator_fn(generated_data, 
--> 107             generator_inputs) 
    108 with variable_scope.variable_scope(dis_scope, reuse=True): 
    109  real_data = ops.convert_to_tensor(real_data) 

<ipython-input-3-2c570c5257d0> in unconditional_discriminator(x, n_units, reuse, alpha) 
    19  with tf.variable_scope('discriminator', reuse=reuse): 
    20   # Hidden layer 
---> 21   h1 = tf.layers.dense(x, n_units, activation=None) 
    22 
    23   # Leaky ReLU 

~/tf_1.4/lib/python3.5/site-packages/tensorflow/python/layers/core.py in dense(inputs, units, activation, use_bias, kernel_initializer, bias_initializer, kernel_regularizer, bias_regularizer, activity_regularizer, kernel_constraint, bias_constraint, trainable, name, reuse) 
    245     trainable=trainable, 
    246     name=name, 
--> 247     dtype=inputs.dtype.base_dtype, 
    248     _scope=name, 
    249     _reuse=reuse) 

AttributeError: 'tuple' object has no attribute 'dtype' 
+0

Tatsächlich trat ein Fehler beim 'tfgan.gan_model' Aufruf auf. Hinterlegen Sie die vollständige Fehlerrückverfolgung und den Code für alle Argumente von 'tfgan.gan_model'. – kvorobiev

+0

Gepostet - Vielen Dank im Voraus. – jsl2

Antwort

2

2 Punkte:

1) Ich glaube, Ihr Fehler aus dem zweiten Argument Ihres Scheidungs ​​kommt. Wenn Sie den Bibliotheksaufruf verwenden, erwartet TFGAN, dass das zweite Argument die von Ihnen gewünschte Konditionierung ist (könnte das Eingangsrauschen im unbedingten Fall, die Klasse im bedingten Fall, strukturiertes Rauschen in InfoGAN usw. sein). Ihre Definition verwendet noise als n_units, was wahrscheinlich die Typabweichung verursacht. Um dies zu beheben, machen Sie einfach Ihr zweites Diskriminatorargument statt n_dims.

2) Ich bin in der Überprüfung des Open Sourcing eine Reihe von nützlichen/illustrativen Beispielen (unbedingte/bedingte/InfoGAN auf MNIST, verteilte Ausbildung auf CIFAR, ein advertiarial Verlust bei der Bildkompression, Bild-zu-Bild-Übersetzung, etc). Sie werden sehr bald hier erscheinen: https://github.com/tensorflow/models/tree/master/research.

+0

Danke Joel. Du scheinst richtig zu sein. Ich stoße jetzt auf andere Probleme, die meiner Meinung nach mit der Weitergabe meiner benutzerdefinierten Daten zusammenhängen (nicht MNIST). Anstatt hin und her zu gehen, warte ich darauf, Ihre Beispiele zu sehen. Nochmals vielen Dank. – jsl2

+0

Sie sind auf. Bitte lassen Sie mich wissen, wenn Sie Fragen zu ihnen haben. –

Verwandte Themen