(train_dataloader, encoder, decoder, n_epochs, learning_rate=0.001,
print_every=100, plot_every=100)
| 670 | # |
| 671 | |
| 672 | def train(train_dataloader, encoder, decoder, n_epochs, learning_rate=0.001, |
| 673 | print_every=100, plot_every=100): |
| 674 | start = time.time() |
| 675 | plot_losses = [] |
| 676 | print_loss_total = 0 # Reset every print_every |
| 677 | plot_loss_total = 0 # Reset every plot_every |
| 678 | |
| 679 | encoder_optimizer = optim.Adam(encoder.parameters(), lr=learning_rate) |
| 680 | decoder_optimizer = optim.Adam(decoder.parameters(), lr=learning_rate) |
| 681 | criterion = nn.NLLLoss() |
| 682 | |
| 683 | for epoch in range(1, n_epochs + 1): |
| 684 | loss = train_epoch(train_dataloader, encoder, decoder, encoder_optimizer, decoder_optimizer, criterion) |
| 685 | print_loss_total += loss |
| 686 | plot_loss_total += loss |
| 687 | |
| 688 | if epoch % print_every == 0: |
| 689 | print_loss_avg = print_loss_total / print_every |
| 690 | print_loss_total = 0 |
| 691 | print('%s (%d %d%%) %.4f' % (timeSince(start, epoch / n_epochs), |
| 692 | epoch, epoch / n_epochs * 100, print_loss_avg)) |
| 693 | |
| 694 | if epoch % plot_every == 0: |
| 695 | plot_loss_avg = plot_loss_total / plot_every |
| 696 | plot_losses.append(plot_loss_avg) |
| 697 | plot_loss_total = 0 |
| 698 | |
| 699 | showPlot(plot_losses) |
| 700 | |
| 701 | ###################################################################### |
| 702 | # Plotting results |
no test coverage detected