2016-08-01 8 views
2

ich vor kurzem wurde über TensorFlow lernen, und ich bin versucht, ein Netzwerk mit folgendem Format zusammen zu stellen:Wiederholen Training mit dem gleichen Datensatz

 

n_inputs = 16 
n_hidden = 64*2 
n_outputs = 3 

x = tf.placeholder(tf.float32, shape=[1,n_inputs]) 
W = tf.Variable(tf.truncated_normal([n_inputs, n_hidden])) 
b = tf.Variable(tf.zeros([n_hidden])) 
hidden_layer = tf.nn.relu(tf.matmul(x, W) + b) 

W2 = tf.Variable(tf.truncated_normal([n_hidden, n_outputs])) 
b2 = tf.Variable(tf.zeros([n_outputs])) 

logits = tf.matmul(hidden_layer, W2) + b2 
 

I, nur 1784 Sätze von Trainingsdaten haben, ist es gültig um mein Training mit diesen Daten wiederholt zu wiederholen? Ich würde vermuten, dass dies zu einer Überanpassung der Trainingsdaten führen wird, wenn es zu oft wiederholt wird.

Ich trainiere zur Zeit wie folgt aus:

 

print "Training" 
for i in range(100): 
    errs = [] 
    for xt, yt in zip(train[:n_dat-50], test[:n_dat-50]): 
     _, err = sess.run([train_step, cost], feed_dict={x: [xt], y_: [yt]}) 
     errs.append(err) 
    print "Error: %.5f" % np.mean(errs) 
 

Ich suche auch in mit L2 Regularisierung und Aussteiger, um die Klassifizierung zu verbessern. Alle anderen Tipps zur Verbesserung des Trainings mit geringen Datenmengen wären sehr hilfreich.

Antwort

1

Sie könnten Rauschen hinzufügen. Fügen Sie einfach zufällige Dinge zu Ihren Eingaben hinzu (vielleicht haben Sie das Rauschen, das den gleichen Mittelwert und die Varianz hat - hängt davon ab). Dies verhindert ein Überfüllen und gibt Ihnen "mehr" Trainingsdaten (stellen Sie sicher, dass Sie einige Daten zur Seite legen, um den generalisierten Trainingserfolg zu validieren).

Manchmal ist es auch möglich, künstliche Datensets zu erstellen, die für einige Vortrainings derselben Logik folgen.

+0

Danke, das ist ein guter Vorschlag, es sollte eigentlich möglich sein, einige Daten zu verfälschen – James

Verwandte Themen