0

Ich benutze Python mit TF und auf der Suche nach der richtigen Möglichkeit, einen Teil der Eingabe zu maskieren, während ein Auto-De-Noising-Encoder für Mnist Daten geschult.Python Tensorflow mit Dropout auf Eingabeschicht

Ich habe versucht, Dropout für die Eingabeebene, genauso wie ich es für die versteckten Ebenen verwende, die Ergebnisse sind nicht groß, es ist schwer zu wissen, was das Problem mit dem Auto-Encoder ist, wie es schwer zu debuggen ist alle tief Lernarchitekturen

der Code, den ich für die Dropout verwendet, auf der Eingangsschicht einschließlich:

def encoder_2(x): 
    global dims #list of dimensions including the input 
    layers = [x] 
    dropouts = [] 
    for i,dim in list(enumerate(dims))[:-1]: 
     dropouts.append(tf.nn.dropout(layers[-1], keep_prob=keep_prob)) 
     try: 
      layers.append(tf.nn.relu(tf.add(tf.matmul(dropouts[-1], weights["encoder_h%d"%(i+1)]), biases["encoder_b%d"%(i+1)]))) 
     except: 
      pass 

    return layers[-1] 

ich here einige Implementierung für die Eingabe Maskierung gefunden, aber ich finde es schwer zu glauben, dass es keine eingebaute Funktion in tf dafür.

Ist die ordnungsgemäße Maskierung des Eingangs ein Dropout? wenn nicht, gibt es eine eingebaute Möglichkeit, Maskierung (Dropout) am Eingang zu verwenden?

Dank

Antwort

1

In der Regel ist die Keep-Wahrscheinlichkeit für die Eingabeebene unterschiedlich. Versuchen Sie zunächst, alle Eingaben keep_prob=1.0 zu behalten und sehen Sie, ob Sie ein ähnliches Ergebnis ohne Aussetzer erhalten. Wenn Sie versuchen, keep_prob=0.0, sollten Sie nur Rauschen (keine Eingabe) erhalten. So können Sie diese Art von System debuggen. Wenn Sie sicher sind, dass die Grenzen funktionieren, versuchen Sie etwas wie keep_prob=0.8, was normalerweise gut für mnist ist.

+0

Danke! Können Sie einen gut funktionierenden Mnist Auto-Encoder mit einer Genauigkeit> 97% empfehlen? – thebeancounter

Verwandte Themen