epoch vs. iteração em redes neurais recorrentes

votos
2

Estou olhando para o exemplo de geração de texto de Keras usando RNN e LSTM mas ainda confuso sobre a diferença entre os termos época e iteração .

Mesmo assim, aqui é uma pergunta anterior fazendo a mesma coisa, eu não consigo entender a resposta , ou esta resposta é diferente de como eu a entendo, e também diferente de como o exemplo a seguir manipula-lo. Com base nesta resposta , diz-se que

uma época = um passe para a frente e um passe para trás de todos os exemplos de treinamento

Número de iterações = número de passagens, cada passagem utilizando [tamanho do lote] número de exemplos.

Exemplo: se você tem 1000 exemplos de treinamento, e seu tamanho do lote é 500, então vai demorar 2 iterações para completar uma época.

Concluímos este: (#training examples/batch size) = (#iterations/#epochs).

No entanto , o seguinte exemplo , como eu entendo, é diferente da conclusão anterior.

# train the model, output generated text after each iteration
for iteration in range(1, 60):
    print()
    print('-' * 50)
    print('Iteration', iteration)
    model.fit(X, y, batch_size=128, nb_epoch=1)

    start_index = random.randint(0, len(text) - maxlen - 1)

    for diversity in [0.2, 0.5, 1.0, 1.2]:
        print()
        print('----- diversity:', diversity)

        generated = ''
        sentence = text[start_index: start_index + maxlen]
        generated += sentence
        print('----- Generating with seed: ' + sentence + '')
        sys.stdout.write(generated)

        for i in range(400):
            x = np.zeros((1, maxlen, len(chars)))
            for t, char in enumerate(sentence):
                x[0, t, char_indices[char]] = 1.

            preds = model.predict(x, verbose=0)[0]
            next_index = sample(preds, diversity)
            next_char = indices_char[next_index]

            generated += next_char
            sentence = sentence[1:] + next_char

            sys.stdout.write(next_char)
            sys.stdout.flush()
        print()

Aqui, a iteração é 60 eo número de época está definido para 1 , o que me confundiu muito. Parece que, há cerca de 60 iterações , como indicado for iteration in range(1, 60). E para cada um dos iteração , uma época foi feito como indicado model.fit(X, y, batch_size=128, nb_epoch=1)para cada loop for. E, novamente, aqui, há um batch_size=128. Então, o que a iteração significa exatamente?

Alguém pode explicar a diferença entre iteração e época com base neste exemplo ?

Publicado 21/03/2016 em 12:26
fonte usuário
Em outras línguas...                            


2 respostas

votos
3

Eu acho que neste exemplo a iteração significa algo diferente: você está interagindo através do processo de aprendizagem e depois de cada época você está fazendo algo com o modelo parcialmente aprendido. Você está fazendo isso iteratievly e é por isso que uma iteração palavra é usada.

Respondeu 28/04/2016 em 19:54
fonte usuário

votos
1

Neste caso iteração usando apenas para displaing resultado intermediário. Podemos eliminar este código:

for diversity in [0.2, 0.5, 1.0, 1.2]:
    print()
    print('----- diversity:', diversity)

    generated = ''
    sentence = text[start_index: start_index + maxlen]
    generated += sentence
    print('----- Generating with seed: "' + sentence + '"')
    sys.stdout.write(generated)

    for i in range(400):
        x = np.zeros((1, maxlen, len(chars)))
        for t, char in enumerate(sentence):
            x[0, t, char_indices[char]] = 1.

        preds = model.predict(x, verbose=0)[0]
        next_index = sample(preds, diversity)
        next_char = indices_char[next_index]

        generated += next_char
        sentence = sentence[1:] + next_char

        sys.stdout.write(next_char)
        sys.stdout.flush()
    print()

e ao invés:

for iteration in range(1, 60):
  model.fit(X, y, batch_size=128, nb_epoch=1)

Escreva:

model.fit(X, y, batch_size=128, nb_epoch=60)
Respondeu 08/02/2017 em 12:52
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more