2016-06-21 12 views
0

ich ein bidirektionales LSTM Netzwerk trainierte, aber wenn ich es trainieren, ich habe als darunter:NO Konvergenz in bidirektionaler-LSTM von Tensorflow

" 
Iter 3456, Minibatch Loss= 10.305597, Training Accuracy= 0.25000 
Iter 3840, Minibatch Loss= 22.018646, Training Accuracy= 0.00000 
Iter 4224, Minibatch Loss= 34.245750, Training Accuracy= 0.00000 
Iter 4608, Minibatch Loss= 13.833059, Training Accuracy= 0.12500 
Iter 4992, Minibatch Loss= 19.687658, Training Accuracy= 0.00000 
" 

Auch Iteration 50 0000, Verlust und Genauigkeit fast dasselbe. Meine Einstellung ist unten:

# Parameters 
learning_rate = 0.0001 
training_iters = 20000#120000 
batch_size = tf.placeholder(dtype=tf.int32)#24,128 
display_step = 16#10 
test_num = 275#245 
keep_prob = tf.placeholder("float") #probability for dropout 
kp = 1.0 

# Network Parameters 
n_input = 240*160 #28 # MNIST data input (img shape: 28*28) 
n_steps = 16 #28 # timesteps 
n_hidden = 500 # hidden layer num of features 
n_classes = 20 

Ist dies das Problem der Techniken oder Schemata?

Antwort

2

Das erste, was ich versuchen würde, ist die Lernrate zu variieren, um zu sehen, ob Sie den Verlust verringern können. Es kann auch hilfreich sein, die Genauigkeit mit einigen Grundlinien zu vergleichen (z. B. ist es besser, die häufigste Klasse in einem Klassifizierungsproblem vorherzusagen).

Wenn Ihr Verlust für eine breite Palette von Lernraten nicht abnimmt, würde ich nach Fehlern im Code suchen (z. B. ist das Trainingsverfahren, das Gewichte aktualisiert, Funktionen und Labels übereinstimmen, sind Ihre Daten randomisiert) richtig, ...).

Wenn es ein Problem mit der Technik (Bidirektional LSTM) gibt, hängt davon ab, welche Aufgabe Sie versuchen, zu erreichen. Wenn Sie dies tatsächlich auf MNIST anwenden (basierend auf dem Kommentar in Ihrem Code), würde ich eher einige Convolutional- und Maxpooling-Layer als einen RNN empfehlen.

Verwandte Themen