482 Stimmen

Epoche vs. Iteration beim Training neuronaler Netze

Was ist der Unterschied zwischen Epoche y Iteration beim Training eines mehrschichtigen Perzeptrons?

10voto

Nikana Reklawyks Punkte 2963

In der Regel teilen Sie Ihre Testmenge in kleine Stapel auf, aus denen das Netzwerk lernen kann, und führen das Training schrittweise durch die von Ihnen festgelegte Anzahl von Schichten durch, wobei Sie die Gradientenabstufung auf dem gesamten Weg nach unten anwenden. All diese kleinen Schritte können genannt werden Iterationen .

Un site Epoche entspricht der gesamten Trainingsmenge, die einmal durch das gesamte Netz läuft. Es kann sinnvoll sein, dies zu begrenzen, z. B. um eine Überanpassung zu verhindern.

7voto

Andrei Pokrovsky Punkte 3180

Ich glaube Iteration ist gleichbedeutend mit einem einzelnen Batch Forward+Backprop im Batch SGD. Epoche ist, den gesamten Datensatz einmal durchzugehen (wie jemand anderes erwähnte).

6voto

Ilya Saunkin Punkte 17444

Eine Epoche enthält ein paar Iterationen . Das ist eigentlich das, was diese Epoche ist. Lassen Sie uns definieren Epoche als die Anzahl der Iterationen über den Datensatz, um das neuronale Netz zu trainieren.

5voto

rishi jain Punkte 1258
  1. Eine Epoche ist ein vollständiger Zyklus, in dem das neuronale Netz alle Daten gesehen hat.

  2. Man könnte sagen, 100.000 Bilder, um das Modell zu trainieren, aber der Speicherplatz könnte nicht ausreichen, um alle Bilder auf einmal zu verarbeiten, daher teilen wir das Training des Modells auf kleinere Datenpakete auf, die Stapel genannt werden. z.B. beträgt die Stapelgröße 100.

  3. Wir müssen alle Bilder in mehreren Stapeln erfassen. Wir benötigen also 1000 Iterationen, um alle 100.000 Bilder zu erfassen. (100 Stapelgröße * 1000 Iterationen)

  4. Sobald das neuronale Netz die gesamten Daten betrachtet, wird es als 1 Epoche (Punkt 1) bezeichnet. Zum Trainieren des Modells sind möglicherweise mehrere Epochen erforderlich. (z.B. 10 Epochen).

3voto

SmallChess Punkte 7420

Eine Epoche ist eine Iteration einer Teilmenge von Stichproben für das Training, z. B. des Gradientenabstiegsalgorithmus in einem neuronalen Netz. Eine gute Referenz ist: http://neuralnetworksanddeeplearning.com/chap1.html

Beachten Sie, dass die Seite einen Code für den Gradientenabstiegsalgorithmus enthält, der die Epoche

def SGD(self, training_data, epochs, mini_batch_size, eta,
        test_data=None):
    """Train the neural network using mini-batch stochastic
    gradient descent.  The "training_data" is a list of tuples
    "(x, y)" representing the training inputs and the desired
    outputs.  The other non-optional parameters are
    self-explanatory.  If "test_data" is provided then the
    network will be evaluated against the test data after each
    epoch, and partial progress printed out.  This is useful for
    tracking progress, but slows things down substantially."""
    if test_data: n_test = len(test_data)
    n = len(training_data)
    for j in xrange(epochs):
        random.shuffle(training_data)
        mini_batches = [
            training_data[k:k+mini_batch_size]
            for k in xrange(0, n, mini_batch_size)]
        for mini_batch in mini_batches:
            self.update_mini_batch(mini_batch, eta)
        if test_data:
            print "Epoch {0}: {1} / {2}".format(
                j, self.evaluate(test_data), n_test)
        else:
            print "Epoch {0} complete".format(j)

Sehen Sie sich den Code an. Für jede Epoche wird eine Teilmenge der Eingaben für den Gradientenabstiegsalgorithmus zufällig generiert. Warum eine Epoche effektiv ist, wird ebenfalls auf der Seite erklärt. Bitte sehen Sie sich das an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X