聊天机器人教程 pytorch官方文档

聊天机器人教程

Chatbot Tutorial — PyTorch Tutorials 2.0.1+cu117 documentation

作者: 马修·因卡维奇

在本教程中,我们将探索循环序列到序列模型的一个有趣且有趣的用例。我们将使用康奈尔大学电影对话语料库中的电影脚本来训练一个简单的聊天机器人。

对话模型是人工智能研究的热点话题。聊天机器人可以在各种环境中找到,包括客户服务应用程序和在线帮助台。这些机器人通常由基于检索的模型提供支持,该模型输出对某些形式的问题的预定义响应。在公司 IT 服务台等高度受限的领域中,这些模型可能就足够了,但是对于更一般的用例来说,它们不够强大。教机器在多个领域与人类进行有意义的对话是一个远未解决的研究问题。最近,深度学习的热潮催生了强大的生成模型,例如谷歌的神经对话模型,这标志着向多领域生成对话模型迈出了一大步。在本教程中,我们将在 PyTorch 中实现这种模型。

机器人

> hello?
Bot: hello .
> where am I?
Bot: you re in a hospital .
> who are you?
Bot: i m a lawyer .
> how are you doing?
Bot: i m fine .
> are you my friend?
Bot: no .
> you're under arrest
Bot: i m trying to help you !
> i'm just kidding
Bot: i m sorry .
> where are you from?
Bot: san francisco .
> it's time for me to leave
Bot: i know .
> goodbye
Bot: goodbye .

教程亮点

致谢

本教程借用了以下来源的代码:

  1. Yuan-Kuei Wu 的 pytorch-chatbot 实现: GitHub - ywk991112/pytorch-chatbot: Pytorch seq2seq chatbot

  2. Sean Robertson 的实用 pytorch seq2seq-翻译示例: https ://github.com/spro/practical-pytorch/tree/master/seq2seq-translation

  3. FloydHub康奈尔电影语料库预处理代码: GitHub - floydhub/textutil-preprocess-cornell-movie-corpus: textutil-preprocess-cornell-movie-corpus

准备工作

首先,请 在此处下载数据 ZIP 文件

# and put in a ``data/`` directory under the current directory.
#
# After that, let’s import some necessities.
#

import torch
from torch.jit import script, trace
import torch.nn as nn
from torch import optim
import torch.nn.functional as F
import csv
import random
import re
import os
import unicodedata
import codecs
from io import open
import itertools
import math
import json


USE_CUDA = torch.cuda.is_available()
device = torch.device("cuda" if USE_CUDA else "cpu")

加载和预处理数据

下一步是重新格式化我们的数据文件并将数据加载到我们可以使用的结构中。

康奈尔电影对话语料库 是一个丰富的电影角色对话数据集:

  • 10,292 对电影角色之间的 220,579 次对话交流

  • 617 部电影中的 9,035 个角色

  • 总话语数 304,713

该数据集庞大且多样化,并且语言形式、时间段、情感等存在很大差异。我们希望这种多样性使我们的模型对多种形式的输入和查询具有鲁棒性。

首先,我们将查看数据文件的某些行以查看原始格式。

corpus_name = "movie-corpus"
corpus = os.path.join("data", corpus_name)

def printLines(file, n=10):
    with open(file, 'rb') as datafile:
        lines = datafile.readlines()
    for line in lines[:n]:
        print(line)

printLines(os.path.join(corpus, "utterances.jsonl"))
b'{"id": "L1045", "conversation_id": "L1044", "text": "They do not!", "speaker": "u0", "meta": {"movie_id": "m0", "parsed": [{"rt": 1, "toks": [{"tok": "They", "tag": "PRP", "dep": "nsubj", "up": 1, "dn": []}, {"tok": "do", "tag": "VBP", "dep": "ROOT", "dn": [0, 2, 3]}, {"tok": "not", "tag": "RB", "dep": "neg", "up": 1, "dn": []}, {"tok": "!", "tag": ".", "dep": "punct", "up": 1, "dn": []}]}]}, "reply-to": "L1044", "timestamp": null, "vectors": []}\n'
b'{"id": "L1044", "conversation_id": "L1044", "text": "They do to!", "speaker": "u2", "meta": {"movie_id": "m0", "parsed": [{"rt": 1, "toks": [{"tok": "They", "tag": "PRP", "dep": "nsubj", "up": 1, "dn": []}, {"tok": "do", "tag": "VBP", "dep": "ROOT", "dn": [0, 2, 3]}, {"tok": "to", "tag": "TO", "dep": "dobj", "up": 1, "dn": []}, {"tok": "!", "tag": ".", "dep": "punct", "up": 1, "dn": []}]}]}, "reply-to": null, "timestamp": null, "vectors": []}\n'
b'{"id": "L985", "conversation_id": "L984", "text": "I hope so.", "speaker": "u0", "meta": {"movie_id": "m0", "parsed": [{"rt": 1, "toks": [{"tok": "I", "tag": "PRP", "dep": "nsubj", "up": 1, "dn": []}, {"tok": "hope", "tag": "VBP", "dep": "ROOT", "dn": [0, 2, 3]}, {"tok": "so", "tag": "RB", "dep": "advmod", "up": 1, "dn": []}, {"tok": ".", "tag": ".", "dep": "punct", "up": 1, "dn": []}]}]}, "reply-to": "L984", "timestamp": null, "vectors": []}\n'
b'{"id": "L984", "conversation_id": "L984", "text": "She okay?", "speaker": "u2", "meta": {"movie_id": "m0", "parsed": [{"rt": 1, "toks": [{"tok": "She", "tag": "PRP", "dep": "nsubj", "up": 1, "dn": []}, {"tok": "okay", "tag": "RB", "dep": "ROOT", "dn": [0, 2]}, {"tok": "?", "tag": ".", "dep": "punct", "up": 1, "dn": []}]}]}, "reply-to": null, "timestamp": null, "vectors": []}\n'
b'{"id": "L925", "conversation_id": "L924", "text": "Let\'s go.", "speaker": "u0", "meta": {"movie_id": "m0", "parsed": [{"rt": 0, "toks": [{"tok": "Let", "tag": "VB", "dep": "ROOT", "dn": [2, 3]}, {"tok": "\'s", "tag": "PRP", "dep": "nsubj", "up": 2, "dn": []}, {"tok": "go", "tag": "VB", "dep": "ccomp", "up": 0, "dn": [1]}, {"tok": ".", "tag": ".", "dep": "punct", "up": 0, "dn": []}]}]}, "reply-to": "L924", "timestamp": null, "vectors": []}\n'
b'{"id": "L924", "conversation_id": "L924", "text": "Wow", "speaker": "u2", "meta": {"movie_id": "m0", "parsed": [{"rt": 0, "toks": [{"tok": "Wow", "tag": "UH", "dep": "ROOT", "dn": []}]}]}, "reply-to": null, "timestamp": null, "vectors": []}\n'
b'{"id": "L872", "conversation_id": "L870", "text": "Okay -- you\'re gonna need to learn how to lie.", "speaker": "u0", "meta": {"movie_id": "m0", "parsed": [{"rt": 4, "toks": [{"tok": "Okay", "tag": "UH", "dep": "intj", "up": 4, "dn": []}, {"tok": "--", "tag": ":", "dep": "punct", "up": 4, "dn": []}, {"tok": "you", "tag": "PRP", "dep": "nsubj", "up": 4, "dn": []}, {"tok": "\'re", "tag": "VBP", "dep": "aux", "up": 4, "dn": []}, {"tok": "gon", "tag": "VBG", "dep": "ROOT", "dn": [0, 1, 2, 3, 6, 12]}, {"tok": "na", "tag": "TO", "dep": "aux", "up": 6, "dn": []}, {"tok": "need", "tag": "VB", "dep": "xcomp", "up": 4, "dn": [5, 8]}, {"tok": "to", "tag": "TO", "dep": "aux", "up": 8, "dn": []}, {"tok": "learn", "tag": "VB", "dep": "xcomp", "up": 6, "dn": [7, 11]}, {"tok": "how", "tag": "WRB", "dep": "advmod", "up": 11, "dn": []}, {"tok": "to", "tag": "TO", "dep": "aux", "up": 11, "dn": []}, {"tok": "lie", "tag": "VB", "dep": "xcomp", "up": 8, "dn": [9, 10]}, {"tok": ".", "tag": ".", "dep": "punct", "up": 4, "dn": []}]}]}, "reply-to": "L871", "timestamp": null, "vectors": []}\n'
b'{"id": "L871", "conversation_id": "L870", "text": "No", "speaker": "u2", "meta": {"movie_id": "m0", "parsed": [{"rt": 0, "toks": [{"tok": "No", "tag": "UH", "dep": "ROOT", "dn": []}]}]}, "reply-to": "L870", "timestamp": null, "vectors": []}\n'
b'{"id": "L870", "conversation_id": "L870", "text": "I\'m kidding.  You know how sometimes you just become this \\"persona\\"?  And you don\'t know how to quit?", "speaker": "u0", "meta": {"movie_id": "m0", "parsed": [{"rt": 2, "toks": [{"tok": "I", "tag": "PRP", "dep": "nsubj", "up": 2, "dn": []}, {"tok": "\'m", "tag": "VBP", "dep": "aux", "up": 2, "dn": []}, {"tok": "kidding", "tag": "VBG", "dep": "ROOT", "dn": [0, 1, 3]}, {"tok": ".", "tag": ".", "dep": "punct", "up": 2, "dn": [4]}, {"tok": " ", "tag": "_SP", "dep": "", "up": 3, "dn": []}]}, {"rt": 1, "toks": [{"tok": "You", "tag": "PRP", "dep": "nsubj", "up": 1, "dn": []}, {"tok": "know", "tag": "VBP", "dep": "ROOT", "dn": [0, 6, 11]}, {"tok": "how", "tag": "WRB", "dep": "advmod", "up": 3, "dn": []}, {"tok": "sometimes", "tag": "RB", "dep": "advmod", "up": 6, "dn": [2]}, {"tok": "you", "tag": "PRP", "dep": "nsubj", "up": 6, "dn": []}, {"tok": "just", "tag": "RB", "dep": "advmod", "up": 6, "dn": []}, {"tok": "become", "tag": "VBP", "dep": "ccomp", "up": 1, "dn": [3, 4, 5, 9]}, {"tok": "this", "tag": "DT", "dep": "det", "up": 9, "dn": []}, {"tok": "\\"", "tag": "``", "dep": "punct", "up": 9, "dn": []}, {"tok": "persona", "tag": "NN", "dep": "attr", "up": 6, "dn": [7, 8, 10]}, {"tok": "\\"", "tag": "\'\'", "dep": "punct", "up": 9, "dn": []}, {"tok": "?", "tag": ".", "dep": "punct", "up": 1, "dn": [12]}, {"tok": " ", "tag": "_SP", "dep": "", "up": 11, "dn": []}]}, {"rt": 4, "toks": [{"tok": "And", "tag": "CC", "dep": "cc", "up": 4, "dn": []}, {"tok": "you", "tag": "PRP", "dep": "nsubj", "up": 4, "dn": []}, {"tok": "do", "tag": "VBP", "dep": "aux", "up": 4, "dn": []}, {"tok": "n\'t", "tag": "RB", "dep": "neg", "up": 4, "dn": []}, {"tok": "know", "tag": "VB", "dep": "ROOT", "dn": [0, 1, 2, 3, 7, 8]}, {"tok": "how", "tag": "WRB", "dep": "advmod", "up": 7, "dn": []}, {"tok": "to", "tag": "TO", "dep": "aux", "up": 7, "dn": []}, {"tok": "quit", "tag": "VB", "dep": "xcomp", "up": 4, "dn": [5, 6]}, {"tok": "?", "tag": ".", "dep": "punct", "up": 4, "dn": []}]}]}, "reply-to": null, "timestamp": null, "vectors": []}\n'
b'{"id": "L869", "conversation_id": "L866", "text": "Like my fear of wearing pastels?", "speaker": "u0", "meta": {"movie_id": "m0", "parsed": [{"rt": 0, "toks": [{"tok": "Like", "tag": "IN", "dep": "ROOT", "dn": [2, 6]}, {"tok": "my", "tag": "PRP$", "dep": "poss", "up": 2, "dn": []}, {"tok": "fear", "tag": "NN", "dep": "pobj", "up": 0, "dn": [1, 3]}, {"tok": "of", "tag": "IN", "dep": "prep", "up": 2, "dn": [4]}, {"tok": "wearing", "tag": "VBG", "dep": "pcomp", "up": 3, "dn": [5]}, {"tok": "pastels", "tag": "NNS", "dep": "dobj", "up": 4, "dn": []}, {"tok": "?", "tag": ".", "dep": "punct", "up": 0, "dn": []}]}]}, "reply-to": "L868", "timestamp": null, "vectors": []}\n'

创建格式化数据文件

为了方便起见,我们将创建一个格式良好的数据文件,其中每行包含一个制表符分隔的查询句子和一个响应句子对。

以下函数有助于解析原始 utterances.jsonl数据文件。

  • loadLinesAndConversationslineID将文件的每一行拆分为包含字段: 、和 text的行字典characterID,然后将它们分组到包含字段:conversationIDmovieID和 rows 的对话中。

  • extractSentencePairs从对话中提取句子对

# Splits each line of the file to create lines and conversations
def loadLinesAndConversations(fileName):
    lines = {}
    conversations = {}
    with open(fileName, 'r', encoding='iso-8859-1') as f:
        for line in f:
            lineJson = json.loads(line)
            # Extract fields for line object
            lineObj = {}
            lineObj["lineID"] = lineJson["id"]
            lineObj["characterID"] = lineJson["speaker"]
            lineObj["text"] = lineJson["text"]
            lines[lineObj['lineID']] = lineObj

            # Extract fields for conversation object
            if lineJson["conversation_id"] not in conversations:
                convObj = {}
                convObj["conversationID"] = lineJson["conversation_id"]
                convObj["movieID"] = lineJson["meta"]["movie_id"]
                convObj["lines"] = [lineObj]
            else:
                convObj = conversations[lineJson["conversation_id"]]
                convObj["lines"].insert(0, lineObj)
            conversations[convObj["conversationID"]] = convObj

    return lines, conversations


# Extracts pairs of sentences from conversations
def extractSentencePairs(conversations):
    qa_pairs = []
    for conversation in conversations.values():
        # Iterate over all the lines of the conversation
        for i in range(len(conversation["lines"]) - 1):  # We ignore the last line (no answer for it)
            inputLine = conversation["lines"][i]["text"].strip()
            targetLine = conversation["lines"][i+1]["text"].strip()
            # Filter wrong samples (if one of the lists is empty)
            if inputLine and targetLine:
                qa_pairs.append([inputLine, targetLine])
    return qa_pairs

现在我们将调用这些函数并创建文件。我们就这样称呼它 formatted_movie_lines.txt

# Define path to new file
datafile = os.path.join(corpus, "formatted_movie_lines.txt")

delimiter = '\t'
# Unescape the delimiter
delimiter = str(codecs.decode(delimiter, "unicode_escape"))

# Initialize lines dict and conversations dict
lines = {}
conversations = {}
# Load lines and conversations
print("\nProcessing corpus into lines and conversations...")
lines, conversations = loadLinesAndConversations(os.path.join(corpus, "utterances.jsonl"))

# Write new csv file
print("\nWriting newly formatted file...")
with open(datafile, 'w', encoding='utf-8') as outputfile:
    writer = csv.writer(outputfile, delimiter=delimiter, lineterminator='\n')
    for pair in extractSentencePairs(conversations):
        writer.writerow(pair)

# Print a sample of lines
print("\nSample lines from file:")
printLines(datafile)
Processing corpus into lines and conversations...

Writing newly formatted file...

Sample lines from file:
b'They do to!\tThey do not!\n'
b'She okay?\tI hope so.\n'
b"Wow\tLet's go.\n"
b'"I\'m kidding.  You know how sometimes you just become this ""persona""?  And you don\'t know how to quit?"\tNo\n'
b"No\tOkay -- you're gonna need to learn how to lie.\n"
b"I figured you'd get to the good stuff eventually.\tWhat good stuff?\n"
b'What good stuff?\t"The ""real you""."\n'
b'"The ""real you""."\tLike my fear of wearing pastels?\n'
b'do you listen to this crap?\tWhat crap?\n'
b"What crap?\tMe.  This endless ...blonde babble. I'm like, boring myself.\n"

加载和修剪数据

我们的下一个任务是创建词汇表并将查询/响应句子对加载到内存中。

请注意,我们正在处理单词序列,它们没有到离散数字空间的隐式映射。因此,我们必须通过将数据集中遇到的每个唯一单词映射到索引值来创建一个索引值。

为此,我们定义一个Voc类,它保存从单词到索引的映射、索引到单词的反向映射、每个单词的计数和总单词数。该类提供了向词汇表添加单词 ( addWord)、添加句子中的所有单词 ( addSentence) 以及修剪不常见单词 ( trim) 的方法。稍后将详细介绍修剪。

# Default word tokens
PAD_token = 0  # Used for padding short sentences
SOS_token = 1  # Start-of-sentence token
EOS_token = 2  # End-of-sentence token

class Voc:
    def __init__(self, name):
        self.name = name
        self.trimmed = False
        self.word2index = {}
        self.word2count = {}
        self.index2word = { 
            PAD_token: "PAD", SOS_token: "SOS", EOS_token: "EOS"}
        self.num_words = 3  # Count SOS, EOS, PAD

    def addSentence(self, sentence):
        for word in sentence.split(' '):
            self.addWord(word)

    def addWord(self, word):
        if word not in self.word2index:
            self.word2index[word] = self.num_words
            self.word2count[word] = 1
            self.index2word[self.num_words] = word
            self.num_words += 1
        else:
            self.word2count[word] += 1

    # Remove words below a certain count threshold
    def trim(self, min_count):
        if self.trimmed:
            return
        self.trimmed = True

        keep_words = []

        for k, v in self.word2count.items():
            if v >= min_count:
                keep_words.append(k)

        print('keep_words {} / {} = {:.4f}'.format(
            len(keep_words), len(self.word2index), len(keep_words) / len(self.word2index)
        ))

        # Reinitialize dictionaries
        self.word2index = {}
        self.word2count = {}
        self.index2word = { 
            PAD_token: "PAD", SOS_token: "SOS", EOS_token: "EOS"}
        self.num_words = 3 # Count default tokens

        for word in keep_words:
            self.addWord(word)

现在我们可以组装词汇和查询/响应句子对。在准备使用这些数据之前,我们必须执行一些预处理。

首先,我们必须使用 将 Unicode 字符串转换为 ASCII unicodeToAscii。接下来,我们应该将所有字母转换为小写,并修剪除基本标点符号 ( ) 之外的所有非字母字符normalizeString。最后,为了帮助训练收敛,我们将过滤掉长度大于MAX_LENGTH 阈值(filterPairs)的句子。

MAX_LENGTH = 10  # Maximum sentence length to consider

# Turn a Unicode string to plain ASCII, thanks to
# https://stackoverflow.com/a/518232/2809427
def unicodeToAscii(s):
    return ''.join(
        c for c in unicodedata.normalize('NFD', s)
        if unicodedata.category(c) != 'Mn'
    )

# Lowercase, trim, and remove non-letter characters
def normalizeString(s):
    s = unicodeToAscii(s.lower().strip())
    s = re.sub(r"([.!?])", r" \1", s)
    s = re.sub(r"[^a-zA-Z.!?]+", r" ", s)
    s = re.sub(r"\s+", r" ", s).strip()
    return s

# Read query/response pairs and return a voc object
def readVocs(datafile, corpus_name):
    print("Reading lines...")
    # Read the file and split into lines
    lines = open(datafile, encoding='utf-8').\
        read().strip().split('\n')
    # Split every line into pairs and normalize
    pairs = [[normalizeString(s) for s in l.split('\t')] for l in lines]
    voc = Voc(corpus_name)
    return voc, pairs

# Returns True if both sentences in a pair 'p' are under the MAX_LENGTH threshold
def filterPair(p):
    # Input sequences need to preserve the last word for EOS token
    return len(p[0].split(' ')) < MAX_LENGTH and len(p[1].split(' ')) < MAX_LENGTH

# Filter pairs using the ``filterPair`` condition
def filterPairs(pairs):
    return [pair for pair in pairs if filterPair(pair)]

# Using the functions defined above, return a populated voc object and pairs list
def loadPrepareData(corpus, corpus_name, datafile, save_dir):
    print("Start preparing training data ...")
    voc, pairs = readVocs(datafile, corpus_name)
    print("Read {!s} sentence pairs".format(len(pairs)))
    pairs = filterPairs(pairs)
    print("Trimmed to {!s} sentence pairs".format(len(pairs)))
    print("Counting words...")
    for pair in pairs:
        voc.addSentence(pair[0])
        voc.addSentence(pair[1])
    print("Counted words:", voc.num_words)
    return voc, pairs


# Load/Assemble voc and pairs
save_dir = os.path.join("data", "save")
voc, pairs = loadPrepareData(corpus, corpus_name, datafile, save_dir)
# Print some pairs to validate
print("\npairs:")
for pair in pairs[:10]:
    print(pair)
Start preparing training data ...
Reading lines...
Read 221282 sentence pairs
Trimmed to 64313 sentence pairs
Counting words...
Counted words: 18082

pairs:
['they do to !', 'they do not !']
['she okay ?', 'i hope so .']
['wow', 'let s go .']
['what good stuff ?', 'the real you .']
['the real you .', 'like my fear of wearing pastels ?']
['do you listen to this crap ?', 'what crap ?']
['well no . . .', 'then that s all you had to say .']
['then that s all you had to say .', 'but']
['but', 'you always been this selfish ?']
['have fun tonight ?', 'tons']

另一种有利于在训练过程中实现更快收敛的策略是从我们的词汇表中删除很少使用的单词。减小特征空间也会减轻模型必须学习逼近的函数的难度。我们将通过两步过程来完成此操作:

  1. MIN_COUNT使用该功能修剪阈值以下使用的单词voc.trim 。

  2. 过滤掉带有修剪过的单词的对。

MIN_COUNT = 3    # Minimum word count threshold for trimming

def trimRareWords(voc, pairs, MIN_COUNT):
    # Trim words used under the MIN_COUNT from the voc
    voc.trim(MIN_COUNT)
    # Filter out pairs with trimmed words
    keep_pairs = []
    for pair in pairs:
        input_sentence = pair[0]
        output_sentence = pair[1]
        keep_input = True
        keep_output = True
        # Check input sentence
        for word in input_sentence.split(' '):
            if word not in voc.word2index:
                keep_input = False
                break
        # Check output sentence
        for word in output_sentence.split(' '):
            if word not in voc.word2index:
                keep_output = False
                break

        # Only keep pairs that do not contain trimmed word(s) in their input or output sentence
        if keep_input and keep_output:
            keep_pairs.append(pair)

    print("Trimmed from {} pairs to {}, {:.4f} of total".format(len(pairs), len(keep_pairs), len(keep_pairs) / len(pairs)))
    return keep_pairs


# Trim voc and pairs
pairs = trimRareWords(voc, pairs, MIN_COUNT)
keep_words 7833 / 18079 = 0.4333
Trimmed from 64313 pairs to 53131, 0.8261 of total

为模型准备数据

尽管我们投入了大量的精力来准备数据并将其整理为良好的词汇对象和句子对列表,但我们的模型最终将期望数值火炬张量作为输入。为模型准备处理数据的一种方法可以在seq2seq 翻译教程中找到。在该教程中,我们使用的批量大小为 1,这意味着我们所要做的就是将句子对中的单词转换为词汇表中相应的索引,并将其提供给模型。

但是,如果您有兴趣加快训练速度和/或希望利用 GPU 并行化功能,则需要使用小批量进行训练。

使用小批量还意味着我们必须注意批次中句子长度的变化。为了在同一批次中容纳不同大小的句子,我们将制作形状为(max_length, batch_size)的批量输入张量 ,其中短于 max_length的句子在EOS_token之后用零填充。

如果我们简单地将单词转换为索引(indexesFromSentence)和零填充,将英语句子转换为张量,我们的张量将具有形状(batch_size,max_length),并且索引第一个维度将返回所有时间步长的完整序列。然而,我们需要能够沿着时间跨批次中的所有序列索引我们的批次。因此,我们将输入批处理形状转置为(max_length, batch_size),以便跨第一个维度的索引返回批处理中所有句子的时间步长。我们在函数中隐式处理这种转置zeroPadding

batch

inputVar函数处理将句子转换为张量的过程,最终创建形状正确的零填充张量。它还lengths为批次中的每个序列返回一个张量,稍后将其传递给我们的解码器。

outputVar函数执行与 类似的功能inputVar,但它不返回lengths张量,而是返回二进制掩码张量和最大目标句子长度。二进制掩码张量与输出目标张量具有相同的形状,但作为 PAD_token 的每个元素 均为0,所有其他元素均为 1。

batch2TrainData只需使用一堆对并使用上述函数返回输入和目标张量。

def indexesFromSentence(voc, sentence):
    return [voc.word2index[word] for word in sentence.split(' ')] + [EOS_token]


def zeroPadding(l, fillvalue=PAD_token):
    return list(itertools.zip_longest(*l, fillvalue=fillvalue))

def binaryMatrix(l, value=PAD_token):
    m = []
    for i, seq in enumerate(l):
        m.append([])
        for token in seq:
            if token == PAD_token:
                m[i].append(0)
            else:
                m[i].append(1)
    return m

# Returns padded input sequence tensor and lengths
def inputVar(l, voc):
    indexes_batch = [indexesFromSentence(voc, sentence) for sentence in l]
    lengths = torch.tensor([len(indexes) for indexes in indexes_batch])
    padList = zeroPadding(indexes_batch)
    padVar = torch.LongTensor(padList)
    return padVar, lengths

# Returns padded target sequence tensor, padding mask, and max target length
def outputVar(l, voc):
    indexes_batch = [indexesFromSentence(voc, sentence) for sentence in l]
    max_target_len = max([len(indexes) for indexes in indexes_batch])
    padList = zeroPadding(indexes_batch)
    mask = binaryMatrix(padList)
    mask = torch.BoolTensor(mask)
    padVar = torch.LongTensor(padList)
    return padVar, mask, max_target_len

# Returns all items for a given batch of pairs
def batch2TrainData(voc, pair_batch):
    pair_batch.sort(key=lambda x: len(x[0].split(" ")), reverse=True)
    input_batch, output_batch = [], []
    for pair in pair_batch:
        input_batch.append(pair[0])
        output_batch.append(pair[1])
    inp, lengths = inputVar(input_batch, voc)
    output, mask, max_target_len = outputVar(output_batch, voc)
    return inp, lengths, output, mask, max_target_len


# Example for validation
small_batch_size = 5
batches = batch2TrainData(voc, [random.choice(pairs) for _ in range(small_batch_size)])
input_variable, lengths, target_variable, mask, max_target_len = batches

print("input_variable:", input_variable)
print("lengths:", lengths)
print("target_variable:", target_variable)
print("mask:", mask)
print("max_target_len:", max_target_len)
input_variable: tensor([[  86,   24,  140,  829,   62],
        [   6,  355, 1362,  206,  566],
        [  36,  735,   14,   72, 1919],
        [  17,  140,  140, 2160,   85],
        [  62,   28,  158,   14,   14],
        [1012,  461,  140,    2,    2],
        [3223,   10,   14,    0,    0],
        [1012,    2,    2,    0,    0],
        [   6,    0,    0,    0,    0],
        [   2,    0,    0,    0,    0]])
lengths: tensor([10,  8,  8,  6,  6])
target_variable: tensor([[  18,   11,  101,   93,  277],
        [ 483,  113,   19,  311,   72],
        [   5,  241,   10,   72,   10],
        [  22,  706,    2,   19,    2],
        [2010,   14,    0,   24,    0],
        [1556,    2,    0,  136,    0],
        [  14,    0,    0,    5,    0],
        [   2,    0,    0,   48,    0],
        [   0,    0,    0,   14,    0],
        [   0,    0,    0,    2,    0]])
mask: tensor([[ True,  True,  True,  True,  True],
        [ True,  True,  True,  True,  True],
        [ True,  True,  True,  True,  True],
        [ True,  True,  True,  True,  True],
        [ True,  True, False,  True, False],
        [ True,  True, False,  True, False],
        [ True, False, False,  True, False],
        [ True, False, False,  True, False],
        [False, False, False,  True, False],
        [False, False, False,  True, False]])
max_target_len: 10

定义模型

序列到序列模型

我们的聊天机器人的大脑是一个序列到序列(seq2seq)模型。seq2seq 模型的目标是将可变长度序列作为输入,并使用固定大小的模型返回可变长度序列作为输出。

苏茨克韦尔等人。发现通过一起使用两个独立的循环神经网络,我们可以完成这项任务。一个 RNN 充当编码器,将可变长度输入序列编码为固定长度上下文向量。理论上,这个上下文向量(RNN 的最终隐藏层)将包含有关输入到机器人的查询句子的语义信息。第二个 RNN 是解码器,它接受输入单词和上下文向量,并返回序列中下一个单词的猜测以及在下一次迭代中使用的隐藏状态。

Model

图片来源: Joseph Eddy – Data science team leader and mentor, machine learning specialist

编码器

编码器 RNN 一次迭代一个标记(例如单词)的输入句子,在每个时间步输出一个“输出”向量和一个“隐藏状态”向量。然后隐藏状态向量被传递到下一个时间步,同时记录输出向量。编码器将其在序列中每个点看到的上下文转换为高维空间中的一组点,解码器将使用这些点为给定任务生成有意义的输出。

我们编码器的核心是由Cho 等人发明的多层门控循环单元。2014 年。我们将使用 GRU 的双向变体,这意味着本质上有两个独立的 RNN:一个以正常顺序输入输入序列,另一个以相反顺序输入输入序列。每个网络的输出在每个时间步上求和。使用双向 GRU 将为我们带来编码过去和未来上下文的优势。

双向 RNN:

rnn_bidir

图片来源:https ://colah.github.io/posts/2015-09-NN-Types-FP/

请注意,embedding层用于在任意大小的特征空间中对我们的单词索引进行编码。对于我们的模型,该层会将每个单词映射到大小为hidden_ ​​size的特征空间。经过训练后,这些值应该对相似含义单词之间的语义相似性进行编码。

nn.utils.rnn.pack_padded_sequence最后,如果将一批填充序列传递给 RNN 模块,我们必须分别使用和 来打包和解包 RNN 传递周围的填充 nn.utils.rnn.pad_packed_sequence

计算图:

  1. 将单词索引转换为嵌入。

  2. 为 RNN 模块打包一批填充序列。

  3. 通过 GRU 前向传递。

  4. 拆开填充物包装。

  5. 对双向 GRU 输出求和。

  6. 返回输出和最终隐藏状态。

输入:

  • input_seq:批量输入句子;形状= (最大长度,批量大小)

  • input_lengths:batch中每个句子对应的句子长度列表;形状= (批量大小)

  • hidden:隐藏状态;形状= (n_layers x num_directions,batch_size,hidden_​​size)

输出:

  • outputs:GRU最后一个隐藏层的输出特征(双向输出的总和);形状= (最大长度,批量大小,隐藏大小)

  • hidden:从 GRU 更新隐藏状态;形状= (n_layers x num_directions,batch_size,hidden_​​size)

class EncoderRNN(nn.Module):
    def __init__(self, hidden_size, embedding, n_layers=1, dropout=0):
        super(EncoderRNN, self).__init__()
        self.n_layers = n_layers
        self.hidden_size = hidden_size
        self.embedding = embedding

        # Initialize GRU; the input_size and hidden_size parameters are both set to 'hidden_size'
        # because our input size is a word embedding with number of features == hidden_size
        self.gru = nn.GRU(hidden_size, hidden_size, n_layers,
                          dropout=(0 if n_layers == 1 else dropout), bidirectional=True)

    def forward(self, input_seq, input_lengths, hidden=None):
        # Convert word indexes to embeddings
        embedded = self.embedding(input_seq)
        # Pack padded batch of sequences for RNN module
        packed = nn.utils.rnn.pack_padded_sequence(embedded, input_lengths)
        # Forward pass through GRU
        outputs, hidden = self.gru(packed, hidden)
        # Unpack padding
        outputs, _ = nn.utils.rnn.pad_packed_sequence(outputs)
        # Sum bidirectional GRU outputs
        outputs = outputs[:, :, :self.hidden_size] + outputs[:, : ,self.hidden_size:]
        # Return output and final hidden state
        return outputs, hidden

解码器

解码器 RNN 以逐个标记的方式生成响应句子。它使用编码器的上下文向量和内部隐藏状态来生成序列中的下一个单词。它继续生成单词,直到输出 EOS_token 代表句子的结尾。普通 seq2seq 解码器的一个常见问题是,如果我们仅依靠上下文向量来编码整个输入序列的含义,则很可能会丢失信息。在处理长输入序列时尤其如此,极大地限制了我们解码器的能力。

为了解决这个问题,Bahdanau 等人。 创建了一种“注意力机制”,允许解码器关注输入序列的某些部分,而不是在每一步都使用整个固定上下文。

在高层次上,注意力是使用解码器的当前隐藏状态和编码器的输出来计算的。输出注意力权重与输入序列具有相同的形状,允许我们将它们乘以编码器输出,得到一个加权和,指示编码器输出中要注意的部分。肖恩·罗伯逊的数据很好地描述了这一点:

attribute 2

梁等人。通过引起“全球关注”,改进了 Bahdanau 等人的基础工作。关键的区别在于,对于“全局注意力”,我们考虑编码器的所有隐藏状态,而不是 Bahdanau 等人的“局部注意力”,后者仅考虑当前时间步的编码器的隐藏状态。另一个区别是,对于“全局注意力”,我们仅使用当前时间步的解码器的隐藏状态来计算注意力权重或能量。Bahdanau 等人的注意力计算需要了解前一个时间步的解码器状态。此外,Luong 等人。提供了各种方法来计算编码器输出和解码器输出之间的注意力能量,称为“分数函数”:

Fraction

在哪里Ht= 当前目标解码器状态和Hˉs= 所有编码器状态。

总体来说,Global Attention机制可以用下图来概括。请注意,我们将把“注意力层”实现为一个单独的nn.Module称为Attn. 该模块的输出是形状为(batch_size, 1, max_length)的 softmax 归一化权重张量。

global attributes

# Luong attention layer
class Attn(nn.Module):
    def __init__(self, method, hidden_size):
        super(Attn, self).__init__()
        self.method = method
        if self.method not in ['dot', 'general', 'concat']:
            raise ValueError(self.method, "is not an appropriate attention method.")
        self.hidden_size = hidden_size
        if self.method == 'general':
            self.attn = nn.Linear(self.hidden_size, hidden_size)
        elif self.method == 'concat':
            self.attn = nn.Linear(self.hidden_size * 2, hidden_size)
            self.v = nn.Parameter(torch.FloatTensor(hidden_size))

    def dot_score(self, hidden, encoder_output):
        return torch.sum(hidden * encoder_output, dim=2)

    def general_score(self, hidden, encoder_output):
        energy = self.attn(encoder_output)
        return torch.sum(hidden * energy, dim=2)

    def concat_score(self, hidden, encoder_output):
        energy = self.attn(torch.cat((hidden.expand(encoder_output.size(0), -1, -1), encoder_output), 2)).tanh()
        return torch.sum(self.v * energy, dim=2)

    def forward(self, hidden, encoder_outputs):
        # Calculate the attention weights (energies) based on the given method
        if self.method == 'general':
            attn_energies = self.general_score(hidden, encoder_outputs)
        elif self.method == 'concat':
            attn_energies = self.concat_score(hidden, encoder_outputs)
        elif self.method == 'dot':
            attn_energies = self.dot_score(hidden, encoder_outputs)

        # Transpose max_length and batch_size dimensions
        attn_energies = attn_energies.t()

        # Return the softmax normalized probability scores (with added dimension)
        return F.softmax(attn_energies, dim=1).unsqueeze(1)

现在我们已经定义了注意力子模块,我们可以实现实际的解码器模型。对于解码器,我们将一次手动输入一批数据。这意味着我们的嵌入字张量和 GRU 输出都将具有形状(1,batch_size,hidden_​​size)

计算图:

  1. 获取当前输入单词的嵌入。

  2. 通过单向 GRU 转发。

  3. 根据 (2) 中的当前 GRU 输出计算注意力权重。

  4. 将注意力权重乘以编码器输出以获得新的“加权和”上下文向量。

  5. 使用 Luong eq 连接加权上下文向量和 GRU 输出。5.

  6. 使用 Luong eq 预测下一个单词。6(没有softmax)。

  7. 返回输出和最终隐藏状态。

输入:

  • input_step:输入序列批次的一个时间步(一个字);形状= (1,批量大小)

  • last_hidden:GRU 的最后隐藏层;形状= (n_layers x num_directions,batch_size,hidden_​​size)

  • encoder_outputs:编码器模型的输出;形状= (最大长度,批量大小,隐藏大小)

输出:

  • output:softmax 归一化张量,给出每个单词是解码序列中正确的下一个单词的概率;shape= (batch_size, voc.num_words)

  • hidden:GRU的最终隐藏状态;形状= (n_layers x num_directions,batch_size,hidden_​​size)

class LuongAttnDecoderRNN(nn.Module):
    def __init__(self, attn_model, embedding, hidden_size, output_size, n_layers=1, dropout=0.1):
        super(LuongAttnDecoderRNN, self).__init__()

        # Keep for reference
        self.attn_model = attn_model
        self.hidden_size = hidden_size
        self.output_size = output_size
        self.n_layers = n_layers
        self.dropout = dropout

        # Define layers
        self.embedding = embedding
        self.embedding_dropout = nn.Dropout(dropout)
        self.gru = nn.GRU(hidden_size, hidden_size, n_layers, dropout=(0 if n_layers == 1 else dropout))
        self.concat = nn.Linear(hidden_size * 2, hidden_size)
        self.out = nn.Linear(hidden_size, output_size)

        self.attn = Attn(attn_model, hidden_size)

    def forward(self, input_step, last_hidden, encoder_outputs):
        # Note: we run this one step (word) at a time
        # Get embedding of current input word
        embedded = self.embedding(input_step)
        embedded = self.embedding_dropout(embedded)
        # Forward through unidirectional GRU
        rnn_output, hidden = self.gru(embedded, last_hidden)
        # Calculate attention weights from the current GRU output
        attn_weights = self.attn(rnn_output, encoder_outputs)
        # Multiply attention weights to encoder outputs to get new "weighted sum" context vector
        context = attn_weights.bmm(encoder_outputs.transpose(0, 1))
        # Concatenate weighted context vector and GRU output using Luong eq. 5
        rnn_output = rnn_output.squeeze(0)
        context = context.squeeze(1)
        concat_input = torch.cat((rnn_output, context), 1)
        concat_output = torch.tanh(self.concat(concat_input))
        # Predict next word using Luong eq. 6
        output = self.out(concat_output)
        output = F.softmax(output, dim=1)
        # Return output and final hidden state
        return output, hidden

定义培训程序

掩蔽损失

由于我们正在处理批量的填充序列,因此在计算损失时我们不能简单地考虑张量的所有元素。我们定义 maskNLLLoss根据解码器的输出张量、目标张量和描述目标张量填充的二进制掩码张量来计算损失。该损失函数计算与掩码张量中1相对应的元素的平均负对数似然。

def maskNLLLoss(inp, target, mask):
    nTotal = mask.sum()
    crossEntropy = -torch.log(torch.gather(inp, 1, target.view(-1, 1)).squeeze(1))
    loss = crossEntropy.masked_select(mask).mean()
    loss = loss.to(device)
    return loss, nTotal.item()

单次训练迭代

train函数包含单次训练迭代(单批输入)的算法。

我们将使用一些巧妙的技巧来帮助收敛:

  • 第一个技巧是使用教师强制。这意味着在由 设定的某种概率下teacher_forcing_ratio,我们使用当前目标词作为解码器的下一个输入,而不是使用解码器的当前猜测。该技术充当解码器的训练轮,有助于更有效的训练。然而,教师强制可能会导致推理期间模型不稳定,因为解码器在训​​练期间可能没有足够的机会真正制作自己的输出序列。因此,我们必须注意如何设置teacher_forcing_ratio,而不是被快速收敛所愚弄。

  • 我们实现的第二个技巧是梯度裁剪。这是应对“梯度爆炸”问题的常用技术。本质上,通过将梯度裁剪或阈值化为最大值,我们可以防止梯度呈指数增长并溢出(NaN)或超出成本函数中的陡峭悬崖。

graduation clip

图片来源:Goodfellow 等人。深度学习。2016。https ://www.deeplearningbook.org/

操作顺序:

  1. 通过编码器正向传递整个输入批次。

  2. 将解码器输入初始化为 SOS_token,将隐藏状态初始化为编码器的最终隐藏状态。

  3. 一次一步地通过解码器转发输入批次序列。

  4. 如果教师强制:将下一个解码器输入设置为当前目标;else: 将下一个解码器输入设置为当前解码器输出。

  5. 计算并累积损失。

  6. 执行反向传播。

  7. 剪辑渐变。

  8. 更新编码器和解码器模型参数。

笔记

PyTorch 的 RNN 模块 ( RNNLSTMGRU) 可以像任何其他非循环层一样使用,只需向它们传递整个输入序列(或一批序列)即可。我们GRUencoder. 现实情况是,在幕后,有一个迭代过程在每个时间步上循环计算隐藏状态。或者,您可以一次运行这些模块一个步骤。在这种情况下,我们在训练过程中手动循环序列,就像我们必须对decoder模型所做的那样。只要维护这些模块的正确概念模型,实现顺序模型就可以非常简单。

def train(input_variable, lengths, target_variable, mask, max_target_len, encoder, decoder, embedding,
          encoder_optimizer, decoder_optimizer, batch_size, clip, max_length=MAX_LENGTH):

    # Zero gradients
    encoder_optimizer.zero_grad()
    decoder_optimizer.zero_grad()

    # Set device options
    input_variable = input_variable.to(device)
    target_variable = target_variable.to(device)
    mask = mask.to(device)
    # Lengths for RNN packing should always be on the CPU
    lengths = lengths.to("cpu")

    # Initialize variables
    loss = 0
    print_losses = []
    n_totals = 0

    # Forward pass through encoder
    encoder_outputs, encoder_hidden = encoder(input_variable, lengths)

    # Create initial decoder input (start with SOS tokens for each sentence)
    decoder_input = torch.LongTensor([[SOS_token for _ in range(batch_size)]])
    decoder_input = decoder_input.to(device)

    # Set initial decoder hidden state to the encoder's final hidden state
    decoder_hidden = encoder_hidden[:decoder.n_layers]

    # Determine if we are using teacher forcing this iteration
    use_teacher_forcing = True if random.random() < teacher_forcing_ratio else False

    # Forward batch of sequences through decoder one time step at a time
    if use_teacher_forcing:
        for t in range(max_target_len):
            decoder_output, decoder_hidden = decoder(
                decoder_input, decoder_hidden, encoder_outputs
            )
            # Teacher forcing: next input is current target
            decoder_input = target_variable[t].view(1, -1)
            # Calculate and accumulate loss
            mask_loss, nTotal = maskNLLLoss(decoder_output, target_variable[t], mask[t])
            loss += mask_loss
            print_losses.append(mask_loss.item() * nTotal)
            n_totals += nTotal
    else:
        for t in range(max_target_len):
            decoder_output, decoder_hidden = decoder(
                decoder_input, decoder_hidden, encoder_outputs
            )
            # No teacher forcing: next input is decoder's own current output
            _, topi = decoder_output.topk(1)
            decoder_input = torch.LongTensor([[topi[i][0] for i in range(batch_size)]])
            decoder_input = decoder_input.to(device)
            # Calculate and accumulate loss
            mask_loss, nTotal = maskNLLLoss(decoder_output, target_variable[t], mask[t])
            loss += mask_loss
            print_losses.append(mask_loss.item() * nTotal)
            n_totals += nTotal

    # Perform backpropagation
    loss.backward()

    # Clip gradients: gradients are modified in place
    _ = nn.utils.clip_grad_norm_(encoder.parameters(), clip)
    _ = nn.utils.clip_grad_norm_(decoder.parameters(), clip)

    # Adjust model weights
    encoder_optimizer.step()
    decoder_optimizer.step()

    return sum(print_losses) / n_totals

训练迭代

终于到了将完整的训练过程与数据结合在一起的时候了。该trainIters函数负责 n_iterations在给定传递的模型、优化器、数据等的情况下运行训练。该函数非常不言自明,因为我们已经使用该函数完成了繁重的工作train

需要注意的一件事是,当我们保存模型时,我们保存一个包含编码器和解码器state_dicts(参数)、优化器state_dicts、损失、迭代等的 tarball。以这种方式保存模型将为我们提供最终的灵活性检查站。加载检查点后,我们将能够使用模型参数来运行推理,或者我们可以从上次停止的地方继续训练。

def trainIters(model_name, voc, pairs, encoder, decoder, encoder_optimizer, decoder_optimizer, embedding, encoder_n_layers, decoder_n_layers, save_dir, n_iteration, batch_size, print_every, save_every, clip, corpus_name, loadFilename):

    # Load batches for each iteration
    training_batches = [batch2TrainData(voc, [random.choice(pairs) for _ in range(batch_size)])
                      for _ in range(n_iteration)]

    # Initializations
    print('Initializing ...')
    start_iteration = 1
    print_loss = 0
    if loadFilename:
        start_iteration = checkpoint['iteration'] + 1

    # Training loop
    print("Training...")
    for iteration in range(start_iteration, n_iteration + 1):
        training_batch = training_batches[iteration - 1]
        # Extract fields from batch
        input_variable, lengths, target_variable, mask, max_target_len = training_batch

        # Run a training iteration with batch
        loss = train(input_variable, lengths, target_variable, mask, max_target_len, encoder,
                     decoder, embedding, encoder_optimizer, decoder_optimizer, batch_size, clip)
        print_loss += loss

        # Print progress
        if iteration % print_every == 0:
            print_loss_avg = print_loss / print_every
            print("Iteration: {}; Percent complete: {:.1f}%; Average loss: {:.4f}".format(iteration, iteration / n_iteration * 100, print_loss_avg))
            print_loss = 0

        # Save checkpoint
        if (iteration % save_every == 0):
            directory = os.path.join(save_dir, model_name, corpus_name, '{}-{}_{}'.format(encoder_n_layers, decoder_n_layers, hidden_size))
            if not os.path.exists(directory):
                os.makedirs(directory)
            torch.save({ 
            
                'iteration': iteration,
                'en': encoder.state_dict(),
                'de': decoder.state_dict(),
                'en_opt': encoder_optimizer.state_dict(),
                'de_opt': decoder_optimizer.state_dict(),
                'loss': loss,
                'voc_dict': voc.__dict__,
                'embedding': embedding.state_dict()
            }, os.path.join(directory, '{}_{}.tar'.format(iteration, 'checkpoint')))

Define evaluation

After training the model, we want to be able to talk to the bot ourselves. First, we must define how the model decodes the encoded input.

greedy decoding

Greedy decoding is the decoding method we use when we do not use teacher coercion during training . In other words, for each time step, we simply select decoder_outputthe word with the highest softmax value. This decoding method is optimal at the level of individual time steps.

为了方便贪心解码操作,我们定义一个 GreedySearchDecoder类。运行时,此类的对象采用形状input_seq(input_seq length, 1) 的输入序列 ( ) 、标量输入长度 ( input_length) 张量以及max_length用于限制响应句子长度的 a 。使用以下计算图评估输入句子:

计算图:

  1. 通过编码器模型转发输入。

  2. 准备编码器的最终隐藏层作为解码器的第一个隐藏输入。

  3. 将解码器的第一个输入初始化为 SOS_token。

  4. 初始化张量以附加解码后的单词。

  5. 一次迭代地解码一个单词标记:

    1. 前向通过解码器。

    2. 获取最有可能的单词 token 及其 softmax 分数。

    3. 记录令牌和分数。

    4. 准备当前令牌作为下一个解码器输入。

  6. 返回单词标记和分数的集合。

class GreedySearchDecoder(nn.Module):
    def __init__(self, encoder, decoder):
        super(GreedySearchDecoder, self).__init__()
        self.encoder = encoder
        self.decoder = decoder

    def forward(self, input_seq, input_length, max_length):
        # Forward input through encoder model
        encoder_outputs, encoder_hidden = self.encoder(input_seq, input_length)
        # Prepare encoder's final hidden layer to be first hidden input to the decoder
        decoder_hidden = encoder_hidden[:decoder.n_layers]
        # Initialize decoder input with SOS_token
        decoder_input = torch.ones(1, 1, device=device, dtype=torch.long) * SOS_token
        # Initialize tensors to append decoded words to
        all_tokens = torch.zeros([0], device=device, dtype=torch.long)
        all_scores = torch.zeros([0], device=device)
        # Iteratively decode one word token at a time
        for _ in range(max_length):
            # Forward pass through decoder
            decoder_output, decoder_hidden = self.decoder(decoder_input, decoder_hidden, encoder_outputs)
            # Obtain most likely word token and its softmax score
            decoder_scores, decoder_input = torch.max(decoder_output, dim=1)
            # Record token and score
            all_tokens = torch.cat((all_tokens, decoder_input), dim=0)
            all_scores = torch.cat((all_scores, decoder_scores), dim=0)
            # Prepare current token to be next decoder input (add a dimension)
            decoder_input = torch.unsqueeze(decoder_input, 0)
        # Return collections of word tokens and scores
        return all_tokens, all_scores

评估我的文字

现在我们已经定义了解码方法,我们可以编写用于评估字符串输入句子的函数。该evaluate函数管理处理输入句子的低级过程。我们首先将句子格式化为一批输入的单词索引,其中batch_size==1。我们通过将句子的单词转换为其相应的索引,并转置维度来为我们的模型准备张量来实现这一点。我们还创建一个lengths张量,其中包含输入句子的长度。在本例中,lengths是标量,因为我们一次只评估一个句子 (batch_size==1)。GreedySearchDecoder 接下来,我们使用我们的对象(searcher)获得解码后的响应句子张量。最后,我们将响应的索引转换为单词并返回解码后的单词列表。

evaluateInputActs as the user interface for our chatbot. When invoked, an input text field is generated into which we can enter our query sentence. After entering the input sentence and pressing Enter , our text will be normalized in the same way as the training data and finally fed to the function evaluateto obtain the decoded output sentence. We loop this process so we can keep chatting with our bot until we type "q" or "quit".

Finally, if the entered sentence contains words that are not in the vocabulary, we handle this gracefully by printing an error message and prompting the user to enter another sentence.

def evaluate(encoder, decoder, searcher, voc, sentence, max_length=MAX_LENGTH):
    ### Format input sentence as a batch
    # words -> indexes
    indexes_batch = [indexesFromSentence(voc, sentence)]
    # Create lengths tensor
    lengths = torch.tensor([len(indexes) for indexes in indexes_batch])
    # Transpose dimensions of batch to match models' expectations
    input_batch = torch.LongTensor(indexes_batch).transpose(0, 1)
    # Use appropriate device
    input_batch = input_batch.to(device)
    lengths = lengths.to("cpu")
    # Decode sentence with searcher
    tokens, scores = searcher(input_batch, lengths, max_length)
    # indexes -> words
    decoded_words = [voc.index2word[token.item()] for token in tokens]
    return decoded_words


def evaluateInput(encoder, decoder, searcher, voc):
    input_sentence = ''
    while(1):
        try:
            # Get input sentence
            input_sentence = input('> ')
            # Check if it is quit case
            if input_sentence == 'q' or input_sentence == 'quit': break
            # Normalize sentence
            input_sentence = normalizeString(input_sentence)
            # Evaluate sentence
            output_words = evaluate(encoder, decoder, searcher, voc, input_sentence)
            # Format and print response sentence
            output_words[:] = [x for x in output_words if not (x == 'EOS' or x == 'PAD')]
            print('Bot:', ' '.join(output_words))

        except KeyError:
            print("Error: Encountered unknown word.")

Run the model

Finally, it's time to run our model!

Whether we want to train or test a chatbot model, we must initialize separate encoder and decoder models. In the following block we set the desired configuration, choose to start from scratch or set a checkpoint to load, then build and initialize the model. Feel free to use different model configurations to optimize performance.

# Configure models
model_name = 'cb_model'
attn_model = 'dot'
#``attn_model = 'general'``
#``attn_model = 'concat'``
hidden_size = 500
encoder_n_layers = 2
decoder_n_layers = 2
dropout = 0.1
batch_size = 64

# Set checkpoint to load from; set to None if starting from scratch
loadFilename = None
checkpoint_iter = 4000

Sample code loaded from checkpoint:

loadFilename = os.path.join(save_dir, model_name, corpus_name,
                    '{}-{}_{}'.format(encoder_n_layers, decoder_n_layers, hidden_size),
                    '{}_checkpoint.tar'.format(checkpoint_iter))
# Load model if a ``loadFilename`` is provided
if loadFilename:
    # If loading on same machine the model was trained on
    checkpoint = torch.load(loadFilename)
    # If loading a model trained on GPU to CPU
    #checkpoint = torch.load(loadFilename, map_location=torch.device('cpu'))
    encoder_sd = checkpoint['en']
    decoder_sd = checkpoint['de']
    encoder_optimizer_sd = checkpoint['en_opt']
    decoder_optimizer_sd = checkpoint['de_opt']
    embedding_sd = checkpoint['embedding']
    voc.__dict__ = checkpoint['voc_dict']


print('Building encoder and decoder ...')
# Initialize word embeddings
embedding = nn.Embedding(voc.num_words, hidden_size)
if loadFilename:
    embedding.load_state_dict(embedding_sd)
# Initialize encoder & decoder models
encoder = EncoderRNN(hidden_size, embedding, encoder_n_layers, dropout)
decoder = LuongAttnDecoderRNN(attn_model, embedding, hidden_size, voc.num_words, decoder_n_layers, dropout)
if loadFilename:
    encoder.load_state_dict(encoder_sd)
    decoder.load_state_dict(decoder_sd)
# Use appropriate device
encoder = encoder.to(device)
decoder = decoder.to(device)
print('Models built and ready to go!')
Building encoder and decoder ...
Models built and ready to go!

跑步训练

如果您想训练模型,请运行以下块。

首先,我们设置训练参数,然后初始化优化器,最后调用函数trainIters来运行训练迭代。

# Configure training/optimization
clip = 50.0
teacher_forcing_ratio = 1.0
learning_rate = 0.0001
decoder_learning_ratio = 5.0
n_iteration = 4000
print_every = 1
save_every = 500

# Ensure dropout layers are in train mode
encoder.train()
decoder.train()

# Initialize optimizers
print('Building optimizers ...')
encoder_optimizer = optim.Adam(encoder.parameters(), lr=learning_rate)
decoder_optimizer = optim.Adam(decoder.parameters(), lr=learning_rate * decoder_learning_ratio)
if loadFilename:
    encoder_optimizer.load_state_dict(encoder_optimizer_sd)
    decoder_optimizer.load_state_dict(decoder_optimizer_sd)

# If you have CUDA, configure CUDA to call
for state in encoder_optimizer.state.values():
    for k, v in state.items():
        if isinstance(v, torch.Tensor):
            state[k] = v.cuda()

for state in decoder_optimizer.state.values():
    for k, v in state.items():
        if isinstance(v, torch.Tensor):
            state[k] = v.cuda()

# Run training iterations
print("Starting Training!")
trainIters(model_name, voc, pairs, encoder, decoder, encoder_optimizer, decoder_optimizer,
           embedding, encoder_n_layers, decoder_n_layers, save_dir, n_iteration, batch_size,
           print_every, save_every, clip, corpus_name, loadFilename)
Building optimizers ...
Starting Training!
Initializing ...
Training...
Iteration: 1; Percent complete: 0.0%; Average loss: 8.9557

Iteration: 1497; Percent complete: 37.4%; Average loss: 3.3915
Iteration: 1498; Percent complete: 37.5%; Average loss: 3.3294
Iteration: 1499; Percent complete: 37.5%; Average loss: 3.0871
Iteration: 1500; Percent complete: 37.5%; Average loss: 3.3111
Iteration: 1501; Percent complete: 37.5%; Average loss: 3.0605
Iteration: 1502; Percent complete: 37.5%; Average loss: 3.1857
Iteration: 1503; Percent complete: 37.6%; Average loss: 3.4914
Iteration: 1504; Percent complete: 37.6%; Average loss: 3.0607
Iteration: 1505; Percent complete: 37.6%; Average loss: 3.1653
Iteration: 1506; Percent complete: 37.6%; Average loss: 3.3464
Iteration: 1507; Percent complete: 37.7%; Average loss: 3.3343
Iteration: 1508; Percent complete: 37.7%; Average loss: 3.2427
Iteration: 1509; Percent complete: 37.7%; Average loss: 3.2750
Iteration: 1510; Percent complete: 37.8%; Average loss: 3.3731
Iteration: 1511; Percent complete: 37.8%; Average loss: 3.2830
Iteration: 1512; Percent complete: 37.8%; Average loss: 3.2919
Iteration: 1513; Percent complete: 37.8%; Average loss: 3.1917
Iteration: 1514; Percent complete: 37.9%; Average loss: 3.2123
Iteration: 1515; Percent complete: 37.9%; Average loss: 3.3189
Iteration: 1516; Percent complete: 37.9%; Average loss: 3.1814
Iteration: 1517; Percent complete: 37.9%; Average loss: 3.3051
Iteration: 1518; Percent complete: 38.0%; Average loss: 3.4495
Iteration: 1519; Percent complete: 38.0%; Average loss: 3.2963
Iteration: 1520; Percent complete: 38.0%; Average loss: 3.2766
Iteration: 1521; Percent complete: 38.0%; Average loss: 3.3116
Iteration: 1522; Percent complete: 38.0%; Average loss: 3.2794
Iteration: 1523; Percent complete: 38.1%; Average loss: 3.2985
Iteration: 1524; Percent complete: 38.1%; Average loss: 3.5464
Iteration: 1525; Percent complete: 38.1%; Average loss: 3.3130
Iteration: 1526; Percent complete: 38.1%; Average loss: 3.3966
Iteration: 1527; Percent complete: 38.2%; Average loss: 3.3655
Iteration: 1528; Percent complete: 38.2%; Average loss: 3.5355
Iteration: 1529; Percent complete: 38.2%; Average loss: 3.2908
Iteration: 1530; Percent complete: 38.2%; Average loss: 3.3223
Iteration: 1531; Percent complete: 38.3%; Average loss: 3.3646
Iteration: 1532; Percent complete: 38.3%; Average loss: 3.3574
Iteration: 1533; Percent complete: 38.3%; Average loss: 3.3535
Iteration: 1534; Percent complete: 38.4%; Average loss: 3.2012
Iteration: 1535; Percent complete: 38.4%; Average loss: 3.0008
Iteration: 1536; Percent complete: 38.4%; Average loss: 3.4063
Iteration: 1537; Percent complete: 38.4%; Average loss: 3.4194
Iteration: 1538; Percent complete: 38.5%; Average loss: 3.1609
Iteration: 1539; Percent complete: 38.5%; Average loss: 3.4211
Iteration: 1540; Percent complete: 38.5%; Average loss: 3.3502
Iteration: 1541; Percent complete: 38.5%; Average loss: 3.3537
Iteration: 1542; Percent complete: 38.6%; Average loss: 3.2534
Iteration: 1543; Percent complete: 38.6%; Average loss: 3.1207
Iteration: 1544; Percent complete: 38.6%; Average loss: 3.3765
Iteration: 1545; Percent complete: 38.6%; Average loss: 3.2870
Iteration: 1546; Percent complete: 38.6%; Average loss: 3.1426
Iteration: 1547; Percent complete: 38.7%; Average loss: 3.2928
Iteration: 1548; Percent complete: 38.7%; Average loss: 3.4218
Iteration: 1549; Percent complete: 38.7%; Average loss: 2.9980
Iteration: 1550; Percent complete: 38.8%; Average loss: 3.2031
Iteration: 1551; Percent complete: 38.8%; Average loss: 3.0545
Iteration: 1552; Percent complete: 38.8%; Average loss: 3.3794
Iteration: 1553; Percent complete: 38.8%; Average loss: 3.0721
Iteration: 1554; Percent complete: 38.9%; Average loss: 3.4237
Iteration: 1555; Percent complete: 38.9%; Average loss: 3.2394
Iteration: 1556; Percent complete: 38.9%; Average loss: 3.0929
Iteration: 1557; Percent complete: 38.9%; Average loss: 3.2294
Iteration: 1558; Percent complete: 39.0%; Average loss: 3.3667
Iteration: 1559; Percent complete: 39.0%; Average loss: 3.4667
Iteration: 1560; Percent complete: 39.0%; Average loss: 2.9508
Iteration: 1561; Percent complete: 39.0%; Average loss: 3.6283
Iteration: 1562; Percent complete: 39.1%; Average loss: 3.3443
Iteration: 1563; Percent complete: 39.1%; Average loss: 3.2425
Iteration: 1564; Percent complete: 39.1%; Average loss: 3.5134
Iteration: 1565; Percent complete: 39.1%; Average loss: 3.3335
Iteration: 1566; Percent complete: 39.1%; Average loss: 3.2957
Iteration: 1567; Percent complete: 39.2%; Average loss: 3.0645
Iteration: 1568; Percent complete: 39.2%; Average loss: 3.1673
Iteration: 1569; Percent complete: 39.2%; Average loss: 3.2367
Iteration: 1570; Percent complete: 39.2%; Average loss: 3.1368
Iteration: 1571; Percent complete: 39.3%; Average loss: 3.0196
Iteration: 1572; Percent complete: 39.3%; Average loss: 3.2433
Iteration: 1573; Percent complete: 39.3%; Average loss: 3.4304
Iteration: 1574; Percent complete: 39.4%; Average loss: 3.1778
Iteration: 1575; Percent complete: 39.4%; Average loss: 3.5510
Iteration: 1576; Percent complete: 39.4%; Average loss: 3.2482
Iteration: 1577; Percent complete: 39.4%; Average loss: 3.2707
Iteration: 1578; Percent complete: 39.5%; Average loss: 3.0998
Iteration: 1579; Percent complete: 39.5%; Average loss: 3.3175
Iteration: 1580; Percent complete: 39.5%; Average loss: 3.0692
Iteration: 1581; Percent complete: 39.5%; Average loss: 3.1820
Iteration: 1582; Percent complete: 39.6%; Average loss: 3.2758
Iteration: 1583; Percent complete: 39.6%; Average loss: 3.4247
Iteration: 1584; Percent complete: 39.6%; Average loss: 2.9866
Iteration: 1585; Percent complete: 39.6%; Average loss: 3.4215
Iteration: 1586; Percent complete: 39.6%; Average loss: 3.1239
Iteration: 1587; Percent complete: 39.7%; Average loss: 3.2891
Iteration: 1588; Percent complete: 39.7%; Average loss: 3.3441
Iteration: 1589; Percent complete: 39.7%; Average loss: 3.4015
Iteration: 1590; Percent complete: 39.8%; Average loss: 3.1678
Iteration: 1591; Percent complete: 39.8%; Average loss: 3.2509
Iteration: 1592; Percent complete: 39.8%; Average loss: 3.3413
Iteration: 1593; Percent complete: 39.8%; Average loss: 3.3334
Iteration: 1594; Percent complete: 39.9%; Average loss: 3.2066
Iteration: 1595; Percent complete: 39.9%; Average loss: 3.5717
Iteration: 1596; Percent complete: 39.9%; Average loss: 3.2644
Iteration: 1597; Percent complete: 39.9%; Average loss: 3.4574
Iteration: 1598; Percent complete: 40.0%; Average loss: 3.3502
Iteration: 1599; Percent complete: 40.0%; Average loss: 2.9495
Iteration: 1600; Percent complete: 40.0%; Average loss: 3.0889
Iteration: 1601; Percent complete: 40.0%; Average loss: 3.1596
Iteration: 1602; Percent complete: 40.1%; Average loss: 3.3647
Iteration: 1603; Percent complete: 40.1%; Average loss: 3.1755
Iteration: 1604; Percent complete: 40.1%; Average loss: 3.2520
Iteration: 1605; Percent complete: 40.1%; Average loss: 3.3493
Iteration: 1606; Percent complete: 40.2%; Average loss: 3.2803
Iteration: 1607; Percent complete: 40.2%; Average loss: 3.2484
Iteration: 1608; Percent complete: 40.2%; Average loss: 3.1678
Iteration: 1609; Percent complete: 40.2%; Average loss: 3.5719
Iteration: 1610; Percent complete: 40.2%; Average loss: 3.1084
Iteration: 1611; Percent complete: 40.3%; Average loss: 3.2722
Iteration: 1612; Percent complete: 40.3%; Average loss: 3.0692
Iteration: 1613; Percent complete: 40.3%; Average loss: 3.0927
Iteration: 1614; Percent complete: 40.4%; Average loss: 2.9829
Iteration: 1615; Percent complete: 40.4%; Average loss: 3.0295
Iteration: 1616; Percent complete: 40.4%; Average loss: 3.4155
Iteration: 1617; Percent complete: 40.4%; Average loss: 3.1449
Iteration: 1618; Percent complete: 40.5%; Average loss: 3.3106
Iteration: 1619; Percent complete: 40.5%; Average loss: 3.4951
Iteration: 1620; Percent complete: 40.5%; Average loss: 3.1167
Iteration: 1621; Percent complete: 40.5%; Average loss: 3.4996
Iteration: 1622; Percent complete: 40.6%; Average loss: 3.3370
Iteration: 1623; Percent complete: 40.6%; Average loss: 3.3733
Iteration: 1624; Percent complete: 40.6%; Average loss: 3.3613
Iteration: 1625; Percent complete: 40.6%; Average loss: 3.3983
Iteration: 1626; Percent complete: 40.6%; Average loss: 2.9577
Iteration: 1627; Percent complete: 40.7%; Average loss: 3.2354
Iteration: 1628; Percent complete: 40.7%; Average loss: 3.1991
Iteration: 1629; Percent complete: 40.7%; Average loss: 3.3887
Iteration: 1630; Percent complete: 40.8%; Average loss: 3.3746
Iteration: 1631; Percent complete: 40.8%; Average loss: 3.2031
Iteration: 1632; Percent complete: 40.8%; Average loss: 3.2365
Iteration: 1633; Percent complete: 40.8%; Average loss: 3.5041
Iteration: 1634; Percent complete: 40.8%; Average loss: 3.0698
Iteration: 1635; Percent complete: 40.9%; Average loss: 3.2979
Iteration: 1636; Percent complete: 40.9%; Average loss: 3.5271
Iteration: 1637; Percent complete: 40.9%; Average loss: 3.3264
Iteration: 1638; Percent complete: 40.9%; Average loss: 3.3071
Iteration: 1639; Percent complete: 41.0%; Average loss: 3.2124
Iteration: 1640; Percent complete: 41.0%; Average loss: 3.1883
Iteration: 1641; Percent complete: 41.0%; Average loss: 3.3615
Iteration: 1642; Percent complete: 41.0%; Average loss: 3.1147
Iteration: 1643; Percent complete: 41.1%; Average loss: 3.3908
Iteration: 1644; Percent complete: 41.1%; Average loss: 3.3441
Iteration: 1645; Percent complete: 41.1%; Average loss: 3.3493
Iteration: 1646; Percent complete: 41.1%; Average loss: 3.2848
Iteration: 1647; Percent complete: 41.2%; Average loss: 3.5160
Iteration: 1648; Percent complete: 41.2%; Average loss: 3.2961
Iteration: 1649; Percent complete: 41.2%; Average loss: 3.1985
Iteration: 1650; Percent complete: 41.2%; Average loss: 3.3129
Iteration: 1651; Percent complete: 41.3%; Average loss: 3.1426
Iteration: 1652; Percent complete: 41.3%; Average loss: 3.2381
Iteration: 1653; Percent complete: 41.3%; Average loss: 3.4049
Iteration: 1654; Percent complete: 41.3%; Average loss: 3.5279
Iteration: 1655; Percent complete: 41.4%; Average loss: 2.9631
Iteration: 1656; Percent complete: 41.4%; Average loss: 3.2192
Iteration: 1657; Percent complete: 41.4%; Average loss: 3.3235
Iteration: 1658; Percent complete: 41.4%; Average loss: 3.5229
Iteration: 1659; Percent complete: 41.5%; Average loss: 3.5854
Iteration: 1660; Percent complete: 41.5%; Average loss: 3.1985
Iteration: 1661; Percent complete: 41.5%; Average loss: 3.2383
Iteration: 1662; Percent complete: 41.5%; Average loss: 3.2486
Iteration: 1663; Percent complete: 41.6%; Average loss: 3.5147
Iteration: 1664; Percent complete: 41.6%; Average loss: 3.2325
Iteration: 1665; Percent complete: 41.6%; Average loss: 3.1497
Iteration: 1666; Percent complete: 41.6%; Average loss: 3.1601
Iteration: 1667; Percent complete: 41.7%; Average loss: 3.2537
Iteration: 1668; Percent complete: 41.7%; Average loss: 3.5158
Iteration: 1669; Percent complete: 41.7%; Average loss: 3.2235
Iteration: 1670; Percent complete: 41.8%; Average loss: 3.1957
Iteration: 1671; Percent complete: 41.8%; Average loss: 3.0200
Iteration: 1672; Percent complete: 41.8%; Average loss: 2.9216
Iteration: 1673; Percent complete: 41.8%; Average loss: 3.5049
Iteration: 1674; Percent complete: 41.9%; Average loss: 3.1215
Iteration: 1675; Percent complete: 41.9%; Average loss: 2.9431
Iteration: 1676; Percent complete: 41.9%; Average loss: 3.4195
Iteration: 1677; Percent complete: 41.9%; Average loss: 3.1554
Iteration: 1678; Percent complete: 41.9%; Average loss: 3.5350
Iteration: 1679; Percent complete: 42.0%; Average loss: 3.2140
Iteration: 1680; Percent complete: 42.0%; Average loss: 3.1785
Iteration: 1681; Percent complete: 42.0%; Average loss: 3.3371
Iteration: 1682; Percent complete: 42.0%; Average loss: 3.1805
Iteration: 1683; Percent complete: 42.1%; Average loss: 3.0346
Iteration: 1684; Percent complete: 42.1%; Average loss: 3.4054
Iteration: 1685; Percent complete: 42.1%; Average loss: 3.1953
Iteration: 1686; Percent complete: 42.1%; Average loss: 3.2231
Iteration: 1687; Percent complete: 42.2%; Average loss: 3.2622
Iteration: 1688; Percent complete: 42.2%; Average loss: 3.0981
Iteration: 1689; Percent complete: 42.2%; Average loss: 3.2440
Iteration: 1690; Percent complete: 42.2%; Average loss: 3.3377
Iteration: 1691; Percent complete: 42.3%; Average loss: 3.1379
Iteration: 1692; Percent complete: 42.3%; Average loss: 3.2388
Iteration: 1693; Percent complete: 42.3%; Average loss: 3.4429
Iteration: 1694; Percent complete: 42.4%; Average loss: 3.2939
Iteration: 1695; Percent complete: 42.4%; Average loss: 3.2122
Iteration: 1696; Percent complete: 42.4%; Average loss: 3.2532
Iteration: 1697; Percent complete: 42.4%; Average loss: 3.4160
Iteration: 1698; Percent complete: 42.4%; Average loss: 3.2291
Iteration: 1699; Percent complete: 42.5%; Average loss: 3.2498
Iteration: 1700; Percent complete: 42.5%; Average loss: 3.1899
Iteration: 1701; Percent complete: 42.5%; Average loss: 3.0738
Iteration: 1702; Percent complete: 42.5%; Average loss: 3.2254
Iteration: 1703; Percent complete: 42.6%; Average loss: 3.1076
Iteration: 1704; Percent complete: 42.6%; Average loss: 3.4010
Iteration: 1705; Percent complete: 42.6%; Average loss: 3.0403
Iteration: 1706; Percent complete: 42.6%; Average loss: 3.3060
Iteration: 1707; Percent complete: 42.7%; Average loss: 3.0707
Iteration: 1708; Percent complete: 42.7%; Average loss: 3.1592
Iteration: 1709; Percent complete: 42.7%; Average loss: 3.2038
Iteration: 1710; Percent complete: 42.8%; Average loss: 3.3157
Iteration: 1711; Percent complete: 42.8%; Average loss: 3.4986
Iteration: 1712; Percent complete: 42.8%; Average loss: 3.4502
Iteration: 1713; Percent complete: 42.8%; Average loss: 3.0350
Iteration: 1714; Percent complete: 42.9%; Average loss: 3.3203
Iteration: 1715; Percent complete: 42.9%; Average loss: 3.2905
Iteration: 1716; Percent complete: 42.9%; Average loss: 2.9897
Iteration: 1717; Percent complete: 42.9%; Average loss: 3.2729
Iteration: 1718; Percent complete: 43.0%; Average loss: 3.4815
Iteration: 1719; Percent complete: 43.0%; Average loss: 3.3571
Iteration: 1720; Percent complete: 43.0%; Average loss: 3.3374
Iteration: 1721; Percent complete: 43.0%; Average loss: 3.4961
Iteration: 1722; Percent complete: 43.0%; Average loss: 3.2995
Iteration: 1723; Percent complete: 43.1%; Average loss: 3.1060
Iteration: 1724; Percent complete: 43.1%; Average loss: 3.3991
Iteration: 1725; Percent complete: 43.1%; Average loss: 3.1503
Iteration: 1726; Percent complete: 43.1%; Average loss: 3.3489
Iteration: 1727; Percent complete: 43.2%; Average loss: 3.3388
Iteration: 1728; Percent complete: 43.2%; Average loss: 3.2115
Iteration: 1729; Percent complete: 43.2%; Average loss: 3.4049
Iteration: 1730; Percent complete: 43.2%; Average loss: 3.2399
Iteration: 1731; Percent complete: 43.3%; Average loss: 3.0977
Iteration: 1732; Percent complete: 43.3%; Average loss: 3.2467
Iteration: 1733; Percent complete: 43.3%; Average loss: 3.2098
Iteration: 1734; Percent complete: 43.4%; Average loss: 3.3369
Iteration: 1735; Percent complete: 43.4%; Average loss: 2.9055
Iteration: 1736; Percent complete: 43.4%; Average loss: 3.2726
Iteration: 1737; Percent complete: 43.4%; Average loss: 3.2394
Iteration: 1738; Percent complete: 43.5%; Average loss: 2.9380
Iteration: 1739; Percent complete: 43.5%; Average loss: 3.3546
Iteration: 1740; Percent complete: 43.5%; Average loss: 3.3323
Iteration: 1741; Percent complete: 43.5%; Average loss: 3.1366
Iteration: 1742; Percent complete: 43.5%; Average loss: 3.2181
Iteration: 1743; Percent complete: 43.6%; Average loss: 3.0103
Iteration: 1744; Percent complete: 43.6%; Average loss: 3.3237
Iteration: 1745; Percent complete: 43.6%; Average loss: 3.5595
Iteration: 1746; Percent complete: 43.6%; Average loss: 3.1023
Iteration: 1747; Percent complete: 43.7%; Average loss: 3.1910
Iteration: 1748; Percent complete: 43.7%; Average loss: 3.2450
Iteration: 1749; Percent complete: 43.7%; Average loss: 3.2594
Iteration: 1750; Percent complete: 43.8%; Average loss: 3.2938
Iteration: 1751; Percent complete: 43.8%; Average loss: 3.1576
Iteration: 1752; Percent complete: 43.8%; Average loss: 3.2294
Iteration: 1753; Percent complete: 43.8%; Average loss: 3.2154
Iteration: 1754; Percent complete: 43.9%; Average loss: 3.0925
Iteration: 1755; Percent complete: 43.9%; Average loss: 3.1230
Iteration: 1756; Percent complete: 43.9%; Average loss: 3.2219
Iteration: 1757; Percent complete: 43.9%; Average loss: 3.2071
Iteration: 1758; Percent complete: 44.0%; Average loss: 3.1188
Iteration: 1759; Percent complete: 44.0%; Average loss: 3.2561
Iteration: 1760; Percent complete: 44.0%; Average loss: 3.2636
Iteration: 1761; Percent complete: 44.0%; Average loss: 3.1059
Iteration: 1762; Percent complete: 44.0%; Average loss: 3.1218
Iteration: 1763; Percent complete: 44.1%; Average loss: 3.3748
Iteration: 1764; Percent complete: 44.1%; Average loss: 3.0305
Iteration: 1765; Percent complete: 44.1%; Average loss: 3.2057
Iteration: 1766; Percent complete: 44.1%; Average loss: 3.1950
Iteration: 1767; Percent complete: 44.2%; Average loss: 3.1452
Iteration: 1768; Percent complete: 44.2%; Average loss: 3.3857
Iteration: 1769; Percent complete: 44.2%; Average loss: 3.4636
Iteration: 1770; Percent complete: 44.2%; Average loss: 2.9290
Iteration: 1771; Percent complete: 44.3%; Average loss: 3.1982
Iteration: 1772; Percent complete: 44.3%; Average loss: 3.3795
Iteration: 1773; Percent complete: 44.3%; Average loss: 2.9717
Iteration: 1774; Percent complete: 44.4%; Average loss: 3.0632
Iteration: 1775; Percent complete: 44.4%; Average loss: 3.0667
Iteration: 1776; Percent complete: 44.4%; Average loss: 3.2949
Iteration: 1777; Percent complete: 44.4%; Average loss: 3.1454
Iteration: 1778; Percent complete: 44.5%; Average loss: 3.3341
Iteration: 1779; Percent complete: 44.5%; Average loss: 3.2754
Iteration: 1780; Percent complete: 44.5%; Average loss: 3.2357
Iteration: 1781; Percent complete: 44.5%; Average loss: 3.1785
Iteration: 1782; Percent complete: 44.5%; Average loss: 3.0183
Iteration: 1783; Percent complete: 44.6%; Average loss: 3.0679
Iteration: 1784; Percent complete: 44.6%; Average loss: 3.2736
Iteration: 1785; Percent complete: 44.6%; Average loss: 3.2168
Iteration: 1786; Percent complete: 44.6%; Average loss: 3.0485
Iteration: 1787; Percent complete: 44.7%; Average loss: 3.2214
Iteration: 1788; Percent complete: 44.7%; Average loss: 3.4904
Iteration: 1789; Percent complete: 44.7%; Average loss: 3.0856
Iteration: 1790; Percent complete: 44.8%; Average loss: 3.2643
Iteration: 1791; Percent complete: 44.8%; Average loss: 3.3901
Iteration: 1792; Percent complete: 44.8%; Average loss: 3.2404
Iteration: 1793; Percent complete: 44.8%; Average loss: 3.2423
Iteration: 1794; Percent complete: 44.9%; Average loss: 3.2675
Iteration: 1795; Percent complete: 44.9%; Average loss: 3.0530
Iteration: 1796; Percent complete: 44.9%; Average loss: 3.2306
Iteration: 1797; Percent complete: 44.9%; Average loss: 3.1857
Iteration: 1798; Percent complete: 45.0%; Average loss: 3.0405
Iteration: 1799; Percent complete: 45.0%; Average loss: 2.8466
Iteration: 1800; Percent complete: 45.0%; Average loss: 3.3357
Iteration: 1801; Percent complete: 45.0%; Average loss: 3.2088
Iteration: 1802; Percent complete: 45.1%; Average loss: 3.2076
Iteration: 1803; Percent complete: 45.1%; Average loss: 3.0990
Iteration: 1804; Percent complete: 45.1%; Average loss: 3.3286
Iteration: 1805; Percent complete: 45.1%; Average loss: 3.3242
Iteration: 1806; Percent complete: 45.1%; Average loss: 3.1032
Iteration: 1807; Percent complete: 45.2%; Average loss: 3.6023
Iteration: 1808; Percent complete: 45.2%; Average loss: 2.9637
Iteration: 1809; Percent complete: 45.2%; Average loss: 3.2192
Iteration: 1810; Percent complete: 45.2%; Average loss: 3.1872
Iteration: 1811; Percent complete: 45.3%; Average loss: 3.0540
Iteration: 1812; Percent complete: 45.3%; Average loss: 2.9579
Iteration: 1813; Percent complete: 45.3%; Average loss: 3.0189
Iteration: 1814; Percent complete: 45.4%; Average loss: 3.2733
Iteration: 1815; Percent complete: 45.4%; Average loss: 3.4648
Iteration: 1816; Percent complete: 45.4%; Average loss: 3.0278
Iteration: 1817; Percent complete: 45.4%; Average loss: 3.1361
Iteration: 1818; Percent complete: 45.5%; Average loss: 3.1139
Iteration: 1819; Percent complete: 45.5%; Average loss: 3.0613
Iteration: 1820; Percent complete: 45.5%; Average loss: 3.3479
Iteration: 1821; Percent complete: 45.5%; Average loss: 3.1969
Iteration: 1822; Percent complete: 45.6%; Average loss: 3.1262
Iteration: 1823; Percent complete: 45.6%; Average loss: 2.9444
Iteration: 1824; Percent complete: 45.6%; Average loss: 3.3982
Iteration: 1825; Percent complete: 45.6%; Average loss: 3.1803
Iteration: 1826; Percent complete: 45.6%; Average loss: 3.0371
Iteration: 1827; Percent complete: 45.7%; Average loss: 3.3056
Iteration: 1828; Percent complete: 45.7%; Average loss: 3.2214
Iteration: 1829; Percent complete: 45.7%; Average loss: 2.9139
Iteration: 1830; Percent complete: 45.8%; Average loss: 3.2797
Iteration: 1831; Percent complete: 45.8%; Average loss: 3.1116
Iteration: 1832; Percent complete: 45.8%; Average loss: 3.3238
Iteration: 1833; Percent complete: 45.8%; Average loss: 2.9779
Iteration: 1834; Percent complete: 45.9%; Average loss: 3.2327
Iteration: 1835; Percent complete: 45.9%; Average loss: 3.2836
Iteration: 1836; Percent complete: 45.9%; Average loss: 3.1328
Iteration: 1837; Percent complete: 45.9%; Average loss: 3.1456
Iteration: 1838; Percent complete: 46.0%; Average loss: 3.3611
Iteration: 1839; Percent complete: 46.0%; Average loss: 3.2231
Iteration: 1840; Percent complete: 46.0%; Average loss: 3.5079
Iteration: 1841; Percent complete: 46.0%; Average loss: 3.3690
Iteration: 1842; Percent complete: 46.1%; Average loss: 3.4282
Iteration: 1843; Percent complete: 46.1%; Average loss: 3.3327
Iteration: 1844; Percent complete: 46.1%; Average loss: 3.3303
Iteration: 1845; Percent complete: 46.1%; Average loss: 3.1288
Iteration: 1846; Percent complete: 46.2%; Average loss: 2.9459
Iteration: 1847; Percent complete: 46.2%; Average loss: 3.2612
Iteration: 1848; Percent complete: 46.2%; Average loss: 2.9897
Iteration: 1849; Percent complete: 46.2%; Average loss: 3.0847
Iteration: 1850; Percent complete: 46.2%; Average loss: 3.2543
Iteration: 1851; Percent complete: 46.3%; Average loss: 3.3284
Iteration: 1852; Percent complete: 46.3%; Average loss: 3.1476
Iteration: 1853; Percent complete: 46.3%; Average loss: 3.0918
Iteration: 1854; Percent complete: 46.4%; Average loss: 3.0953
Iteration: 1855; Percent complete: 46.4%; Average loss: 3.4184
Iteration: 1856; Percent complete: 46.4%; Average loss: 3.1987
Iteration: 1857; Percent complete: 46.4%; Average loss: 3.2077
Iteration: 1858; Percent complete: 46.5%; Average loss: 3.2104
Iteration: 1859; Percent complete: 46.5%; Average loss: 3.3018
Iteration: 1860; Percent complete: 46.5%; Average loss: 3.2334
Iteration: 1861; Percent complete: 46.5%; Average loss: 3.0063
Iteration: 1862; Percent complete: 46.6%; Average loss: 3.1470
Iteration: 1863; Percent complete: 46.6%; Average loss: 3.1010
Iteration: 1864; Percent complete: 46.6%; Average loss: 3.3399
Iteration: 1865; Percent complete: 46.6%; Average loss: 3.0798
Iteration: 1866; Percent complete: 46.7%; Average loss: 3.2170
Iteration: 1867; Percent complete: 46.7%; Average loss: 3.0612
Iteration: 1868; Percent complete: 46.7%; Average loss: 3.1479
Iteration: 1869; Percent complete: 46.7%; Average loss: 3.3403
Iteration: 1870; Percent complete: 46.8%; Average loss: 3.1551
Iteration: 1871; Percent complete: 46.8%; Average loss: 3.1093
Iteration: 1872; Percent complete: 46.8%; Average loss: 3.4572
Iteration: 1873; Percent complete: 46.8%; Average loss: 3.2220
Iteration: 1874; Percent complete: 46.9%; Average loss: 3.1767
Iteration: 1875; Percent complete: 46.9%; Average loss: 3.0934
Iteration: 1876; Percent complete: 46.9%; Average loss: 3.0525
Iteration: 1877; Percent complete: 46.9%; Average loss: 3.1703
Iteration: 1878; Percent complete: 46.9%; Average loss: 3.3739
Iteration: 1879; Percent complete: 47.0%; Average loss: 3.1407
Iteration: 1880; Percent complete: 47.0%; Average loss: 3.1277
Iteration: 1881; Percent complete: 47.0%; Average loss: 3.1388
Iteration: 1882; Percent complete: 47.0%; Average loss: 3.3663
Iteration: 1883; Percent complete: 47.1%; Average loss: 2.9790
Iteration: 1884; Percent complete: 47.1%; Average loss: 3.0398
Iteration: 1885; Percent complete: 47.1%; Average loss: 3.1797
Iteration: 1886; Percent complete: 47.1%; Average loss: 3.1260
Iteration: 1887; Percent complete: 47.2%; Average loss: 2.9043
Iteration: 1888; Percent complete: 47.2%; Average loss: 3.2288
Iteration: 1889; Percent complete: 47.2%; Average loss: 3.3846
Iteration: 1890; Percent complete: 47.2%; Average loss: 3.4445
Iteration: 1891; Percent complete: 47.3%; Average loss: 3.1920
Iteration: 1892; Percent complete: 47.3%; Average loss: 3.0827
Iteration: 1893; Percent complete: 47.3%; Average loss: 3.3378
Iteration: 1894; Percent complete: 47.3%; Average loss: 3.3243
Iteration: 1895; Percent complete: 47.4%; Average loss: 3.1799
Iteration: 1896; Percent complete: 47.4%; Average loss: 3.2246
Iteration: 1897; Percent complete: 47.4%; Average loss: 3.3089
Iteration: 1898; Percent complete: 47.4%; Average loss: 3.2095
Iteration: 1899; Percent complete: 47.5%; Average loss: 3.2982
Iteration: 1900; Percent complete: 47.5%; Average loss: 3.1905
Iteration: 1901; Percent complete: 47.5%; Average loss: 3.3258
Iteration: 1902; Percent complete: 47.5%; Average loss: 3.0206
Iteration: 1903; Percent complete: 47.6%; Average loss: 3.2043
Iteration: 1904; Percent complete: 47.6%; Average loss: 3.0434
Iteration: 1905; Percent complete: 47.6%; Average loss: 3.0641
Iteration: 1906; Percent complete: 47.6%; Average loss: 3.1440
Iteration: 1907; Percent complete: 47.7%; Average loss: 3.3448
Iteration: 1908; Percent complete: 47.7%; Average loss: 3.3288
Iteration: 1909; Percent complete: 47.7%; Average loss: 3.0154
Iteration: 1910; Percent complete: 47.8%; Average loss: 3.0019
Iteration: 1911; Percent complete: 47.8%; Average loss: 3.3511
Iteration: 1912; Percent complete: 47.8%; Average loss: 3.1009
Iteration: 1913; Percent complete: 47.8%; Average loss: 3.2037
Iteration: 1914; Percent complete: 47.9%; Average loss: 3.2009
Iteration: 1915; Percent complete: 47.9%; Average loss: 2.9993
Iteration: 1916; Percent complete: 47.9%; Average loss: 3.0834
Iteration: 1917; Percent complete: 47.9%; Average loss: 2.9184
Iteration: 1918; Percent complete: 47.9%; Average loss: 3.2017
Iteration: 1919; Percent complete: 48.0%; Average loss: 3.1598
Iteration: 1920; Percent complete: 48.0%; Average loss: 3.1256
Iteration: 1921; Percent complete: 48.0%; Average loss: 3.0708
Iteration: 1922; Percent complete: 48.0%; Average loss: 3.2170
Iteration: 1923; Percent complete: 48.1%; Average loss: 3.2664
Iteration: 1924; Percent complete: 48.1%; Average loss: 3.1711
Iteration: 1925; Percent complete: 48.1%; Average loss: 3.1226
Iteration: 1926; Percent complete: 48.1%; Average loss: 3.1643
Iteration: 1927; Percent complete: 48.2%; Average loss: 3.0150
Iteration: 1928; Percent complete: 48.2%; Average loss: 3.1769
Iteration: 1929; Percent complete: 48.2%; Average loss: 3.1137
Iteration: 1930; Percent complete: 48.2%; Average loss: 2.8844
Iteration: 1931; Percent complete: 48.3%; Average loss: 3.2283
Iteration: 1932; Percent complete: 48.3%; Average loss: 2.9927
Iteration: 1933; Percent complete: 48.3%; Average loss: 3.3062
Iteration: 1934; Percent complete: 48.4%; Average loss: 3.0942
Iteration: 1935; Percent complete: 48.4%; Average loss: 3.3052
Iteration: 1936; Percent complete: 48.4%; Average loss: 3.1380
Iteration: 1937; Percent complete: 48.4%; Average loss: 3.0327
Iteration: 1938; Percent complete: 48.4%; Average loss: 3.2574
Iteration: 1939; Percent complete: 48.5%; Average loss: 3.0698
Iteration: 1940; Percent complete: 48.5%; Average loss: 3.2093
Iteration: 1941; Percent complete: 48.5%; Average loss: 3.0536
Iteration: 1942; Percent complete: 48.5%; Average loss: 3.2469
Iteration: 1943; Percent complete: 48.6%; Average loss: 3.1186
Iteration: 1944; Percent complete: 48.6%; Average loss: 2.9768
Iteration: 1945; Percent complete: 48.6%; Average loss: 3.1151
Iteration: 1946; Percent complete: 48.6%; Average loss: 3.3031
Iteration: 1947; Percent complete: 48.7%; Average loss: 3.2338
Iteration: 1948; Percent complete: 48.7%; Average loss: 3.1790
Iteration: 1949; Percent complete: 48.7%; Average loss: 3.3372
Iteration: 1950; Percent complete: 48.8%; Average loss: 3.2362
Iteration: 1951; Percent complete: 48.8%; Average loss: 3.0298
Iteration: 1952; Percent complete: 48.8%; Average loss: 3.2604
Iteration: 1953; Percent complete: 48.8%; Average loss: 3.1262
Iteration: 1954; Percent complete: 48.9%; Average loss: 3.0725
Iteration: 1955; Percent complete: 48.9%; Average loss: 2.9257
Iteration: 1956; Percent complete: 48.9%; Average loss: 3.1411
Iteration: 1957; Percent complete: 48.9%; Average loss: 2.9018
Iteration: 1958; Percent complete: 48.9%; Average loss: 3.3835
Iteration: 1959; Percent complete: 49.0%; Average loss: 3.2643
Iteration: 1960; Percent complete: 49.0%; Average loss: 3.4035
Iteration: 1961; Percent complete: 49.0%; Average loss: 2.9070
Iteration: 1962; Percent complete: 49.0%; Average loss: 3.1497
Iteration: 1963; Percent complete: 49.1%; Average loss: 3.3099
Iteration: 1964; Percent complete: 49.1%; Average loss: 2.9930
Iteration: 1965; Percent complete: 49.1%; Average loss: 3.0465
Iteration: 1966; Percent complete: 49.1%; Average loss: 2.9187
Iteration: 1967; Percent complete: 49.2%; Average loss: 3.2372
Iteration: 1968; Percent complete: 49.2%; Average loss: 2.6721
Iteration: 1969; Percent complete: 49.2%; Average loss: 2.8061
Iteration: 1970; Percent complete: 49.2%; Average loss: 3.1426
Iteration: 1971; Percent complete: 49.3%; Average loss: 3.2118
Iteration: 1972; Percent complete: 49.3%; Average loss: 2.8236
Iteration: 1973; Percent complete: 49.3%; Average loss: 2.9591
Iteration: 1974; Percent complete: 49.4%; Average loss: 3.3194
Iteration: 1975; Percent complete: 49.4%; Average loss: 2.8094
Iteration: 1976; Percent complete: 49.4%; Average loss: 3.3163
Iteration: 1977; Percent complete: 49.4%; Average loss: 2.9812
Iteration: 1978; Percent complete: 49.5%; Average loss: 2.9714
Iteration: 1979; Percent complete: 49.5%; Average loss: 3.1695
Iteration: 1980; Percent complete: 49.5%; Average loss: 3.1524
Iteration: 1981; Percent complete: 49.5%; Average loss: 3.3003
Iteration: 1982; Percent complete: 49.5%; Average loss: 3.2046
Iteration: 1983; Percent complete: 49.6%; Average loss: 3.3633
Iteration: 1984; Percent complete: 49.6%; Average loss: 3.0855
Iteration: 1985; Percent complete: 49.6%; Average loss: 3.2255
Iteration: 1986; Percent complete: 49.6%; Average loss: 3.3823
Iteration: 1987; Percent complete: 49.7%; Average loss: 3.0410
Iteration: 1988; Percent complete: 49.7%; Average loss: 3.3700
Iteration: 1989; Percent complete: 49.7%; Average loss: 3.1323
Iteration: 1990; Percent complete: 49.8%; Average loss: 3.1176
Iteration: 1991; Percent complete: 49.8%; Average loss: 3.2359
Iteration: 1992; Percent complete: 49.8%; Average loss: 3.0791
Iteration: 1993; Percent complete: 49.8%; Average loss: 3.3222
Iteration: 1994; Percent complete: 49.9%; Average loss: 3.2944
Iteration: 1995; Percent complete: 49.9%; Average loss: 3.1204
Iteration: 1996; Percent complete: 49.9%; Average loss: 2.9556
Iteration: 1997; Percent complete: 49.9%; Average loss: 3.2455
Iteration: 1998; Percent complete: 50.0%; Average loss: 2.9874
Iteration: 1999; Percent complete: 50.0%; Average loss: 2.9447
Iteration: 2000; Percent complete: 50.0%; Average loss: 3.1913
Iteration: 2001; Percent complete: 50.0%; Average loss: 3.1197
Iteration: 2002; Percent complete: 50.0%; Average loss: 3.2235
Iteration: 2003; Percent complete: 50.1%; Average loss: 3.0875
Iteration: 2004; Percent complete: 50.1%; Average loss: 3.1316
Iteration: 2005; Percent complete: 50.1%; Average loss: 2.8627
Iteration: 2006; Percent complete: 50.1%; Average loss: 2.9953
Iteration: 2007; Percent complete: 50.2%; Average loss: 3.1586
Iteration: 2008; Percent complete: 50.2%; Average loss: 3.2558
Iteration: 2009; Percent complete: 50.2%; Average loss: 3.0883
Iteration: 2010; Percent complete: 50.2%; Average loss: 2.8711
Iteration: 2011; Percent complete: 50.3%; Average loss: 2.9704
Iteration: 2012; Percent complete: 50.3%; Average loss: 3.2994
Iteration: 2013; Percent complete: 50.3%; Average loss: 3.0036
Iteration: 2014; Percent complete: 50.3%; Average loss: 3.1355
Iteration: 2015; Percent complete: 50.4%; Average loss: 3.0174
Iteration: 2016; Percent complete: 50.4%; Average loss: 3.2147
Iteration: 2017; Percent complete: 50.4%; Average loss: 3.2793
Iteration: 2018; Percent complete: 50.4%; Average loss: 3.0795
Iteration: 2019; Percent complete: 50.5%; Average loss: 3.2669
Iteration: 2020; Percent complete: 50.5%; Average loss: 3.0951
Iteration: 2021; Percent complete: 50.5%; Average loss: 3.1640
Iteration: 2022; Percent complete: 50.5%; Average loss: 3.1359
Iteration: 2023; Percent complete: 50.6%; Average loss: 3.0758
Iteration: 2024; Percent complete: 50.6%; Average loss: 3.2728
Iteration: 2025; Percent complete: 50.6%; Average loss: 2.9493
Iteration: 2026; Percent complete: 50.6%; Average loss: 3.2741
Iteration: 2027; Percent complete: 50.7%; Average loss: 2.9232
Iteration: 2028; Percent complete: 50.7%; Average loss: 3.2270
Iteration: 2029; Percent complete: 50.7%; Average loss: 3.3822
Iteration: 2030; Percent complete: 50.7%; Average loss: 3.5319
Iteration: 2031; Percent complete: 50.8%; Average loss: 3.0255
Iteration: 2032; Percent complete: 50.8%; Average loss: 3.4231
Iteration: 2033; Percent complete: 50.8%; Average loss: 3.1885
Iteration: 2034; Percent complete: 50.8%; Average loss: 2.9595
Iteration: 2035; Percent complete: 50.9%; Average loss: 3.2476
Iteration: 2036; Percent complete: 50.9%; Average loss: 3.3287
Iteration: 2037; Percent complete: 50.9%; Average loss: 3.1836
Iteration: 2038; Percent complete: 50.9%; Average loss: 3.7879
Iteration: 2039; Percent complete: 51.0%; Average loss: 3.1286
Iteration: 2040; Percent complete: 51.0%; Average loss: 3.2141
Iteration: 2041; Percent complete: 51.0%; Average loss: 2.9714
Iteration: 2042; Percent complete: 51.0%; Average loss: 3.2823
Iteration: 2043; Percent complete: 51.1%; Average loss: 3.3096
Iteration: 2044; Percent complete: 51.1%; Average loss: 3.1415
Iteration: 2045; Percent complete: 51.1%; Average loss: 3.1211
Iteration: 2046; Percent complete: 51.1%; Average loss: 3.3252
Iteration: 2047; Percent complete: 51.2%; Average loss: 3.1504
Iteration: 2048; Percent complete: 51.2%; Average loss: 3.0149
Iteration: 2049; Percent complete: 51.2%; Average loss: 3.1656
Iteration: 2050; Percent complete: 51.2%; Average loss: 3.6852
Iteration: 2051; Percent complete: 51.3%; Average loss: 3.1873
Iteration: 2052; Percent complete: 51.3%; Average loss: 2.8356
Iteration: 2053; Percent complete: 51.3%; Average loss: 3.1772
Iteration: 2054; Percent complete: 51.3%; Average loss: 3.2623
Iteration: 2055; Percent complete: 51.4%; Average loss: 3.1892
Iteration: 2056; Percent complete: 51.4%; Average loss: 3.2838
Iteration: 2057; Percent complete: 51.4%; Average loss: 2.8205
Iteration: 2058; Percent complete: 51.4%; Average loss: 3.0023
Iteration: 2059; Percent complete: 51.5%; Average loss: 3.2671
Iteration: 2060; Percent complete: 51.5%; Average loss: 3.1093
Iteration: 2061; Percent complete: 51.5%; Average loss: 3.1558
Iteration: 2062; Percent complete: 51.5%; Average loss: 3.0153
Iteration: 2063; Percent complete: 51.6%; Average loss: 3.2670
Iteration: 2064; Percent complete: 51.6%; Average loss: 3.0485
Iteration: 2065; Percent complete: 51.6%; Average loss: 3.0730
Iteration: 2066; Percent complete: 51.6%; Average loss: 3.1033
Iteration: 2067; Percent complete: 51.7%; Average loss: 3.2239
Iteration: 2068; Percent complete: 51.7%; Average loss: 3.4485
Iteration: 2069; Percent complete: 51.7%; Average loss: 3.0178
Iteration: 2070; Percent complete: 51.7%; Average loss: 3.0401
Iteration: 2071; Percent complete: 51.8%; Average loss: 3.0763
Iteration: 2072; Percent complete: 51.8%; Average loss: 3.2098
Iteration: 2073; Percent complete: 51.8%; Average loss: 3.0434
Iteration: 2074; Percent complete: 51.8%; Average loss: 3.3423
Iteration: 2075; Percent complete: 51.9%; Average loss: 3.4111
Iteration: 2076; Percent complete: 51.9%; Average loss: 3.1914
Iteration: 2077; Percent complete: 51.9%; Average loss: 3.1254
Iteration: 2078; Percent complete: 51.9%; Average loss: 3.2225
Iteration: 2079; Percent complete: 52.0%; Average loss: 3.0064
Iteration: 2080; Percent complete: 52.0%; Average loss: 3.4989
Iteration: 2081; Percent complete: 52.0%; Average loss: 3.2836
Iteration: 2082; Percent complete: 52.0%; Average loss: 3.0343
Iteration: 2083; Percent complete: 52.1%; Average loss: 3.1080
Iteration: 2084; Percent complete: 52.1%; Average loss: 3.0967
Iteration: 2085; Percent complete: 52.1%; Average loss: 3.1937
Iteration: 2086; Percent complete: 52.1%; Average loss: 3.0576
Iteration: 2087; Percent complete: 52.2%; Average loss: 3.1921
Iteration: 2088; Percent complete: 52.2%; Average loss: 3.0176
Iteration: 2089; Percent complete: 52.2%; Average loss: 3.0040
Iteration: 2090; Percent complete: 52.2%; Average loss: 3.0399
Iteration: 2091; Percent complete: 52.3%; Average loss: 3.1300
Iteration: 2092; Percent complete: 52.3%; Average loss: 3.3584
Iteration: 2093; Percent complete: 52.3%; Average loss: 3.0511
Iteration: 2094; Percent complete: 52.3%; Average loss: 3.0364
Iteration: 2095; Percent complete: 52.4%; Average loss: 3.1076
Iteration: 2096; Percent complete: 52.4%; Average loss: 3.2046
Iteration: 2097; Percent complete: 52.4%; Average loss: 3.0780
Iteration: 2098; Percent complete: 52.4%; Average loss: 3.1273
Iteration: 2099; Percent complete: 52.5%; Average loss: 3.2299
Iteration: 2100; Percent complete: 52.5%; Average loss: 3.1248
Iteration: 2101; Percent complete: 52.5%; Average loss: 3.1288
Iteration: 2102; Percent complete: 52.5%; Average loss: 3.3916
Iteration: 2103; Percent complete: 52.6%; Average loss: 3.1079
Iteration: 2104; Percent complete: 52.6%; Average loss: 3.0958
Iteration: 2105; Percent complete: 52.6%; Average loss: 3.1407
Iteration: 2106; Percent complete: 52.6%; Average loss: 2.9247
Iteration: 2107; Percent complete: 52.7%; Average loss: 3.1562
Iteration: 2108; Percent complete: 52.7%; Average loss: 3.1241
Iteration: 2109; Percent complete: 52.7%; Average loss: 3.2056
Iteration: 2110; Percent complete: 52.8%; Average loss: 3.1744
Iteration: 2111; Percent complete: 52.8%; Average loss: 3.0260
Iteration: 2112; Percent complete: 52.8%; Average loss: 3.1090
Iteration: 2113; Percent complete: 52.8%; Average loss: 2.7897
Iteration: 2114; Percent complete: 52.8%; Average loss: 3.1030
Iteration: 2115; Percent complete: 52.9%; Average loss: 3.3524
Iteration: 2116; Percent complete: 52.9%; Average loss: 2.9973
Iteration: 2117; Percent complete: 52.9%; Average loss: 3.0776
Iteration: 2118; Percent complete: 52.9%; Average loss: 3.0282
Iteration: 2119; Percent complete: 53.0%; Average loss: 3.3184
Iteration: 2120; Percent complete: 53.0%; Average loss: 2.9256
Iteration: 2121; Percent complete: 53.0%; Average loss: 3.0975
Iteration: 2122; Percent complete: 53.0%; Average loss: 3.0405
Iteration: 2123; Percent complete: 53.1%; Average loss: 3.1692
Iteration: 2124; Percent complete: 53.1%; Average loss: 3.0204
Iteration: 2125; Percent complete: 53.1%; Average loss: 3.1578
Iteration: 2126; Percent complete: 53.1%; Average loss: 3.1415
Iteration: 2127; Percent complete: 53.2%; Average loss: 3.0937
Iteration: 2128; Percent complete: 53.2%; Average loss: 2.9920
Iteration: 2129; Percent complete: 53.2%; Average loss: 3.0628
Iteration: 2130; Percent complete: 53.2%; Average loss: 3.1844
Iteration: 2131; Percent complete: 53.3%; Average loss: 3.1292
Iteration: 2132; Percent complete: 53.3%; Average loss: 3.1093
Iteration: 2133; Percent complete: 53.3%; Average loss: 3.3065
Iteration: 2134; Percent complete: 53.3%; Average loss: 3.0798
Iteration: 2135; Percent complete: 53.4%; Average loss: 3.1241
Iteration: 2136; Percent complete: 53.4%; Average loss: 2.8985
Iteration: 2137; Percent complete: 53.4%; Average loss: 2.9257
Iteration: 2138; Percent complete: 53.4%; Average loss: 3.0317
Iteration: 2139; Percent complete: 53.5%; Average loss: 3.0434
Iteration: 2140; Percent complete: 53.5%; Average loss: 2.9261
Iteration: 2141; Percent complete: 53.5%; Average loss: 3.2701
Iteration: 2142; Percent complete: 53.5%; Average loss: 3.1128
Iteration: 2143; Percent complete: 53.6%; Average loss: 3.3022
Iteration: 2144; Percent complete: 53.6%; Average loss: 2.9923
Iteration: 2145; Percent complete: 53.6%; Average loss: 3.0311
Iteration: 2146; Percent complete: 53.6%; Average loss: 3.0643
Iteration: 2147; Percent complete: 53.7%; Average loss: 3.2816
Iteration: 2148; Percent complete: 53.7%; Average loss: 3.3363
Iteration: 2149; Percent complete: 53.7%; Average loss: 3.1957
Iteration: 2150; Percent complete: 53.8%; Average loss: 2.7525
Iteration: 2151; Percent complete: 53.8%; Average loss: 3.0678
Iteration: 2152; Percent complete: 53.8%; Average loss: 2.9848
Iteration: 2153; Percent complete: 53.8%; Average loss: 3.0898
Iteration: 2154; Percent complete: 53.8%; Average loss: 2.8468
Iteration: 2155; Percent complete: 53.9%; Average loss: 3.3032
Iteration: 2156; Percent complete: 53.9%; Average loss: 3.1979
Iteration: 2157; Percent complete: 53.9%; Average loss: 3.0813
Iteration: 2158; Percent complete: 53.9%; Average loss: 3.4758
Iteration: 2159; Percent complete: 54.0%; Average loss: 3.0926
Iteration: 2160; Percent complete: 54.0%; Average loss: 2.9867
Iteration: 2161; Percent complete: 54.0%; Average loss: 3.3208
Iteration: 2162; Percent complete: 54.0%; Average loss: 3.1586
Iteration: 2163; Percent complete: 54.1%; Average loss: 3.0038
Iteration: 2164; Percent complete: 54.1%; Average loss: 2.8986
Iteration: 2165; Percent complete: 54.1%; Average loss: 3.0403
Iteration: 2166; Percent complete: 54.1%; Average loss: 3.3206
Iteration: 2167; Percent complete: 54.2%; Average loss: 3.1292
Iteration: 2168; Percent complete: 54.2%; Average loss: 3.0891
Iteration: 2169; Percent complete: 54.2%; Average loss: 2.9648
Iteration: 2170; Percent complete: 54.2%; Average loss: 3.0805
Iteration: 2171; Percent complete: 54.3%; Average loss: 3.2816
Iteration: 2172; Percent complete: 54.3%; Average loss: 3.1796
Iteration: 2173; Percent complete: 54.3%; Average loss: 3.1103
Iteration: 2174; Percent complete: 54.4%; Average loss: 3.1702
Iteration: 2175; Percent complete: 54.4%; Average loss: 2.8795
Iteration: 2176; Percent complete: 54.4%; Average loss: 3.0093
Iteration: 2177; Percent complete: 54.4%; Average loss: 3.3178
Iteration: 2178; Percent complete: 54.4%; Average loss: 3.0768
Iteration: 2179; Percent complete: 54.5%; Average loss: 3.1970
Iteration: 2180; Percent complete: 54.5%; Average loss: 3.0387
Iteration: 2181; Percent complete: 54.5%; Average loss: 3.2550
Iteration: 2182; Percent complete: 54.5%; Average loss: 3.0971
Iteration: 2183; Percent complete: 54.6%; Average loss: 3.1243
Iteration: 2184; Percent complete: 54.6%; Average loss: 3.2497
Iteration: 2185; Percent complete: 54.6%; Average loss: 3.2632
Iteration: 2186; Percent complete: 54.6%; Average loss: 3.1339
Iteration: 2187; Percent complete: 54.7%; Average loss: 2.9902
Iteration: 2188; Percent complete: 54.7%; Average loss: 2.9092
Iteration: 2189; Percent complete: 54.7%; Average loss: 3.3322
Iteration: 2190; Percent complete: 54.8%; Average loss: 3.0820
Iteration: 2191; Percent complete: 54.8%; Average loss: 3.2697
Iteration: 2192; Percent complete: 54.8%; Average loss: 3.0746
Iteration: 2193; Percent complete: 54.8%; Average loss: 3.1129
Iteration: 2194; Percent complete: 54.9%; Average loss: 3.3296
Iteration: 2195; Percent complete: 54.9%; Average loss: 3.0637
Iteration: 2196; Percent complete: 54.9%; Average loss: 2.9717
Iteration: 2197; Percent complete: 54.9%; Average loss: 3.1083
Iteration: 2198; Percent complete: 54.9%; Average loss: 2.8568
Iteration: 2199; Percent complete: 55.0%; Average loss: 3.1392
Iteration: 2200; Percent complete: 55.0%; Average loss: 2.9915
Iteration: 2201; Percent complete: 55.0%; Average loss: 3.3001
Iteration: 2202; Percent complete: 55.0%; Average loss: 3.1752
Iteration: 2203; Percent complete: 55.1%; Average loss: 3.1891
Iteration: 2204; Percent complete: 55.1%; Average loss: 3.1236
Iteration: 2205; Percent complete: 55.1%; Average loss: 3.0967
Iteration: 2206; Percent complete: 55.1%; Average loss: 3.3153
Iteration: 2207; Percent complete: 55.2%; Average loss: 3.1961
Iteration: 2208; Percent complete: 55.2%; Average loss: 3.0584
Iteration: 2209; Percent complete: 55.2%; Average loss: 3.1995
Iteration: 2210; Percent complete: 55.2%; Average loss: 3.4049
Iteration: 2211; Percent complete: 55.3%; Average loss: 3.2051
Iteration: 2212; Percent complete: 55.3%; Average loss: 2.9717
Iteration: 2213; Percent complete: 55.3%; Average loss: 3.0911
Iteration: 2214; Percent complete: 55.4%; Average loss: 3.2037
Iteration: 2215; Percent complete: 55.4%; Average loss: 3.3287
Iteration: 2216; Percent complete: 55.4%; Average loss: 3.1016
Iteration: 2217; Percent complete: 55.4%; Average loss: 3.2704
Iteration: 2218; Percent complete: 55.5%; Average loss: 3.3376
Iteration: 2219; Percent complete: 55.5%; Average loss: 3.3878
Iteration: 2220; Percent complete: 55.5%; Average loss: 3.0400
Iteration: 2221; Percent complete: 55.5%; Average loss: 3.2771
Iteration: 2222; Percent complete: 55.5%; Average loss: 3.2196
Iteration: 2223; Percent complete: 55.6%; Average loss: 3.1258
Iteration: 2224; Percent complete: 55.6%; Average loss: 2.9873
Iteration: 2225; Percent complete: 55.6%; Average loss: 2.8874
Iteration: 2226; Percent complete: 55.6%; Average loss: 3.0194
Iteration: 2227; Percent complete: 55.7%; Average loss: 3.2725
Iteration: 2228; Percent complete: 55.7%; Average loss: 3.3364
Iteration: 2229; Percent complete: 55.7%; Average loss: 3.1921
Iteration: 2230; Percent complete: 55.8%; Average loss: 3.2070
Iteration: 2231; Percent complete: 55.8%; Average loss: 2.9679
Iteration: 2232; Percent complete: 55.8%; Average loss: 3.0112
Iteration: 2233; Percent complete: 55.8%; Average loss: 3.2855
Iteration: 2234; Percent complete: 55.9%; Average loss: 3.1391
Iteration: 2235; Percent complete: 55.9%; Average loss: 2.9632
Iteration: 2236; Percent complete: 55.9%; Average loss: 3.0382
Iteration: 2237; Percent complete: 55.9%; Average loss: 3.0145
Iteration: 2238; Percent complete: 56.0%; Average loss: 3.0027
Iteration: 2239; Percent complete: 56.0%; Average loss: 2.9812
Iteration: 2240; Percent complete: 56.0%; Average loss: 2.9918
Iteration: 2241; Percent complete: 56.0%; Average loss: 3.0770
Iteration: 2242; Percent complete: 56.0%; Average loss: 3.0492
Iteration: 2243; Percent complete: 56.1%; Average loss: 2.9890
Iteration: 2244; Percent complete: 56.1%; Average loss: 3.1056
Iteration: 2245; Percent complete: 56.1%; Average loss: 3.2640
Iteration: 2246; Percent complete: 56.1%; Average loss: 3.0797
Iteration: 2247; Percent complete: 56.2%; Average loss: 3.4774
Iteration: 2248; Percent complete: 56.2%; Average loss: 3.0210
Iteration: 2249; Percent complete: 56.2%; Average loss: 3.1366
Iteration: 2250; Percent complete: 56.2%; Average loss: 2.9125
Iteration: 2251; Percent complete: 56.3%; Average loss: 3.1617
Iteration: 2252; Percent complete: 56.3%; Average loss: 3.1148
Iteration: 2253; Percent complete: 56.3%; Average loss: 3.0788
Iteration: 2254; Percent complete: 56.4%; Average loss: 3.1774
Iteration: 2255; Percent complete: 56.4%; Average loss: 2.9591
Iteration: 2256; Percent complete: 56.4%; Average loss: 3.3164
Iteration: 2257; Percent complete: 56.4%; Average loss: 2.9916
Iteration: 2258; Percent complete: 56.5%; Average loss: 3.3186
Iteration: 2259; Percent complete: 56.5%; Average loss: 3.1728
Iteration: 2260; Percent complete: 56.5%; Average loss: 2.9456
Iteration: 2261; Percent complete: 56.5%; Average loss: 3.0772
Iteration: 2262; Percent complete: 56.5%; Average loss: 2.9775
Iteration: 2263; Percent complete: 56.6%; Average loss: 2.8061
Iteration: 2264; Percent complete: 56.6%; Average loss: 2.8692
Iteration: 2265; Percent complete: 56.6%; Average loss: 2.7864
Iteration: 2266; Percent complete: 56.6%; Average loss: 3.1633
Iteration: 2267; Percent complete: 56.7%; Average loss: 3.0564
Iteration: 2268; Percent complete: 56.7%; Average loss: 2.8535
Iteration: 2269; Percent complete: 56.7%; Average loss: 3.1145
Iteration: 2270; Percent complete: 56.8%; Average loss: 2.7544
Iteration: 2271; Percent complete: 56.8%; Average loss: 3.2477
Iteration: 2272; Percent complete: 56.8%; Average loss: 2.8888
Iteration: 2273; Percent complete: 56.8%; Average loss: 3.0928
Iteration: 2274; Percent complete: 56.9%; Average loss: 2.9278
Iteration: 2275; Percent complete: 56.9%; Average loss: 3.0437
Iteration: 2276; Percent complete: 56.9%; Average loss: 3.1166
Iteration: 2277; Percent complete: 56.9%; Average loss: 3.0004
Iteration: 2278; Percent complete: 57.0%; Average loss: 3.1160
Iteration: 2279; Percent complete: 57.0%; Average loss: 3.2362
Iteration: 2280; Percent complete: 57.0%; Average loss: 3.1360
Iteration: 2281; Percent complete: 57.0%; Average loss: 3.0532
Iteration: 2282; Percent complete: 57.0%; Average loss: 3.2955
Iteration: 2283; Percent complete: 57.1%; Average loss: 3.1674
Iteration: 2284; Percent complete: 57.1%; Average loss: 3.2263
Iteration: 2285; Percent complete: 57.1%; Average loss: 3.0422
Iteration: 2286; Percent complete: 57.1%; Average loss: 3.1102
Iteration: 2287; Percent complete: 57.2%; Average loss: 3.0151
Iteration: 2288; Percent complete: 57.2%; Average loss: 2.9713
Iteration: 2289; Percent complete: 57.2%; Average loss: 2.9456
Iteration: 2290; Percent complete: 57.2%; Average loss: 2.9819
Iteration: 2291; Percent complete: 57.3%; Average loss: 2.8250
Iteration: 2292; Percent complete: 57.3%; Average loss: 3.0092
Iteration: 2293; Percent complete: 57.3%; Average loss: 3.1017
Iteration: 2294; Percent complete: 57.4%; Average loss: 3.0883
Iteration: 2295; Percent complete: 57.4%; Average loss: 2.9398
Iteration: 2296; Percent complete: 57.4%; Average loss: 3.0450
Iteration: 2297; Percent complete: 57.4%; Average loss: 2.9996
Iteration: 2298; Percent complete: 57.5%; Average loss: 3.1310
Iteration: 2299; Percent complete: 57.5%; Average loss: 2.8010
Iteration: 2300; Percent complete: 57.5%; Average loss: 2.8593
Iteration: 2301; Percent complete: 57.5%; Average loss: 3.1683
Iteration: 2302; Percent complete: 57.6%; Average loss: 3.0818
Iteration: 2303; Percent complete: 57.6%; Average loss: 3.5843
Iteration: 2304; Percent complete: 57.6%; Average loss: 3.1267
Iteration: 2305; Percent complete: 57.6%; Average loss: 3.0752
Iteration: 2306; Percent complete: 57.6%; Average loss: 3.3129
Iteration: 2307; Percent complete: 57.7%; Average loss: 2.8716
Iteration: 2308; Percent complete: 57.7%; Average loss: 3.1112
Iteration: 2309; Percent complete: 57.7%; Average loss: 2.9868
Iteration: 2310; Percent complete: 57.8%; Average loss: 3.0652
Iteration: 2311; Percent complete: 57.8%; Average loss: 3.0736
Iteration: 2312; Percent complete: 57.8%; Average loss: 3.1129
Iteration: 2313; Percent complete: 57.8%; Average loss: 2.9390
Iteration: 2314; Percent complete: 57.9%; Average loss: 2.8676
Iteration: 2315; Percent complete: 57.9%; Average loss: 3.0772
Iteration: 2316; Percent complete: 57.9%; Average loss: 3.0162
Iteration: 2317; Percent complete: 57.9%; Average loss: 3.3064
Iteration: 2318; Percent complete: 58.0%; Average loss: 3.0727
Iteration: 2319; Percent complete: 58.0%; Average loss: 3.0232
Iteration: 2320; Percent complete: 58.0%; Average loss: 2.9897
Iteration: 2321; Percent complete: 58.0%; Average loss: 3.1535
Iteration: 2322; Percent complete: 58.1%; Average loss: 3.0210
Iteration: 2323; Percent complete: 58.1%; Average loss: 3.2153
Iteration: 2324; Percent complete: 58.1%; Average loss: 2.9442
Iteration: 2325; Percent complete: 58.1%; Average loss: 3.1183
Iteration: 2326; Percent complete: 58.1%; Average loss: 3.0078
Iteration: 2327; Percent complete: 58.2%; Average loss: 3.0243
Iteration: 2328; Percent complete: 58.2%; Average loss: 3.0384
Iteration: 2329; Percent complete: 58.2%; Average loss: 2.9314
Iteration: 2330; Percent complete: 58.2%; Average loss: 3.0747
Iteration: 2331; Percent complete: 58.3%; Average loss: 3.3255
Iteration: 2332; Percent complete: 58.3%; Average loss: 3.1679
Iteration: 2333; Percent complete: 58.3%; Average loss: 3.0622
Iteration: 2334; Percent complete: 58.4%; Average loss: 2.8509
Iteration: 2335; Percent complete: 58.4%; Average loss: 3.1293
Iteration: 2336; Percent complete: 58.4%; Average loss: 3.1161
Iteration: 2337; Percent complete: 58.4%; Average loss: 3.0836
Iteration: 2338; Percent complete: 58.5%; Average loss: 3.0401
Iteration: 2339; Percent complete: 58.5%; Average loss: 3.1791
Iteration: 2340; Percent complete: 58.5%; Average loss: 3.0428
Iteration: 2341; Percent complete: 58.5%; Average loss: 3.0045
Iteration: 2342; Percent complete: 58.6%; Average loss: 3.1148
Iteration: 2343; Percent complete: 58.6%; Average loss: 3.1060
Iteration: 2344; Percent complete: 58.6%; Average loss: 2.9190
Iteration: 2345; Percent complete: 58.6%; Average loss: 3.0762
Iteration: 2346; Percent complete: 58.7%; Average loss: 3.2960
Iteration: 2347; Percent complete: 58.7%; Average loss: 3.0610
Iteration: 2348; Percent complete: 58.7%; Average loss: 2.9436
Iteration: 2349; Percent complete: 58.7%; Average loss: 3.0218
Iteration: 2350; Percent complete: 58.8%; Average loss: 3.1972
Iteration: 2351; Percent complete: 58.8%; Average loss: 2.9246
Iteration: 2352; Percent complete: 58.8%; Average loss: 2.9806
Iteration: 2353; Percent complete: 58.8%; Average loss: 2.9844
Iteration: 2354; Percent complete: 58.9%; Average loss: 3.0761
Iteration: 2355; Percent complete: 58.9%; Average loss: 3.1563
Iteration: 2356; Percent complete: 58.9%; Average loss: 3.1000
Iteration: 2357; Percent complete: 58.9%; Average loss: 3.0744
Iteration: 2358; Percent complete: 59.0%; Average loss: 3.3202
Iteration: 2359; Percent complete: 59.0%; Average loss: 3.1427
Iteration: 2360; Percent complete: 59.0%; Average loss: 2.8752
Iteration: 2361; Percent complete: 59.0%; Average loss: 2.9509
Iteration: 2362; Percent complete: 59.1%; Average loss: 3.3466
Iteration: 2363; Percent complete: 59.1%; Average loss: 3.0502
Iteration: 2364; Percent complete: 59.1%; Average loss: 3.2602
Iteration: 2365; Percent complete: 59.1%; Average loss: 3.2599
Iteration: 2366; Percent complete: 59.2%; Average loss: 3.2664
Iteration: 2367; Percent complete: 59.2%; Average loss: 3.0201
Iteration: 2368; Percent complete: 59.2%; Average loss: 3.0388
Iteration: 2369; Percent complete: 59.2%; Average loss: 3.1378
Iteration: 2370; Percent complete: 59.2%; Average loss: 3.0384
Iteration: 2371; Percent complete: 59.3%; Average loss: 3.0904
Iteration: 2372; Percent complete: 59.3%; Average loss: 2.9159
Iteration: 2373; Percent complete: 59.3%; Average loss: 2.9554
Iteration: 2374; Percent complete: 59.4%; Average loss: 2.9580
Iteration: 2375; Percent complete: 59.4%; Average loss: 3.1549
Iteration: 2376; Percent complete: 59.4%; Average loss: 2.9553
Iteration: 2377; Percent complete: 59.4%; Average loss: 3.1021
Iteration: 2378; Percent complete: 59.5%; Average loss: 3.0800
Iteration: 2379; Percent complete: 59.5%; Average loss: 2.9453
Iteration: 2380; Percent complete: 59.5%; Average loss: 3.1070
Iteration: 2381; Percent complete: 59.5%; Average loss: 3.0925
Iteration: 2382; Percent complete: 59.6%; Average loss: 3.3733
Iteration: 2383; Percent complete: 59.6%; Average loss: 3.1546
Iteration: 2384; Percent complete: 59.6%; Average loss: 2.8652
Iteration: 2385; Percent complete: 59.6%; Average loss: 3.2393
Iteration: 2386; Percent complete: 59.7%; Average loss: 3.2042
Iteration: 2387; Percent complete: 59.7%; Average loss: 2.8791
Iteration: 2388; Percent complete: 59.7%; Average loss: 2.9418
Iteration: 2389; Percent complete: 59.7%; Average loss: 2.8363
Iteration: 2390; Percent complete: 59.8%; Average loss: 2.9549
Iteration: 2391; Percent complete: 59.8%; Average loss: 3.2512
Iteration: 2392; Percent complete: 59.8%; Average loss: 3.1164
Iteration: 2393; Percent complete: 59.8%; Average loss: 3.2587
Iteration: 2394; Percent complete: 59.9%; Average loss: 2.9347
Iteration: 2395; Percent complete: 59.9%; Average loss: 3.0743
Iteration: 2396; Percent complete: 59.9%; Average loss: 3.1110
Iteration: 2397; Percent complete: 59.9%; Average loss: 2.8222
Iteration: 2398; Percent complete: 60.0%; Average loss: 3.1630
Iteration: 2399; Percent complete: 60.0%; Average loss: 2.8565
Iteration: 2400; Percent complete: 60.0%; Average loss: 2.6509
Iteration: 2401; Percent complete: 60.0%; Average loss: 2.9225
Iteration: 2402; Percent complete: 60.1%; Average loss: 2.8848
Iteration: 2403; Percent complete: 60.1%; Average loss: 2.7846
Iteration: 2404; Percent complete: 60.1%; Average loss: 2.7785
Iteration: 2405; Percent complete: 60.1%; Average loss: 3.2029
Iteration: 2406; Percent complete: 60.2%; Average loss: 3.1734
Iteration: 2407; Percent complete: 60.2%; Average loss: 3.0964
Iteration: 2408; Percent complete: 60.2%; Average loss: 3.0109
Iteration: 2409; Percent complete: 60.2%; Average loss: 3.1598
Iteration: 2410; Percent complete: 60.2%; Average loss: 2.9957
Iteration: 2411; Percent complete: 60.3%; Average loss: 2.9907
Iteration: 2412; Percent complete: 60.3%; Average loss: 3.1935
Iteration: 2413; Percent complete: 60.3%; Average loss: 3.2891
Iteration: 2414; Percent complete: 60.4%; Average loss: 3.3107
Iteration: 2415; Percent complete: 60.4%; Average loss: 3.1740
Iteration: 2416; Percent complete: 60.4%; Average loss: 3.1878
Iteration: 2417; Percent complete: 60.4%; Average loss: 3.1262
Iteration: 2418; Percent complete: 60.5%; Average loss: 3.1831
Iteration: 2419; Percent complete: 60.5%; Average loss: 3.2178
Iteration: 2420; Percent complete: 60.5%; Average loss: 3.1775
Iteration: 2421; Percent complete: 60.5%; Average loss: 3.1689
Iteration: 2422; Percent complete: 60.6%; Average loss: 2.9597
Iteration: 2423; Percent complete: 60.6%; Average loss: 3.0766
Iteration: 2424; Percent complete: 60.6%; Average loss: 2.8048
Iteration: 2425; Percent complete: 60.6%; Average loss: 2.9344
Iteration: 2426; Percent complete: 60.7%; Average loss: 2.9793
Iteration: 2427; Percent complete: 60.7%; Average loss: 2.9215
Iteration: 2428; Percent complete: 60.7%; Average loss: 2.8392
Iteration: 2429; Percent complete: 60.7%; Average loss: 3.1669
Iteration: 2430; Percent complete: 60.8%; Average loss: 3.0947
Iteration: 2431; Percent complete: 60.8%; Average loss: 2.8993
Iteration: 2432; Percent complete: 60.8%; Average loss: 3.0709
Iteration: 2433; Percent complete: 60.8%; Average loss: 2.9329
Iteration: 2434; Percent complete: 60.9%; Average loss: 3.0405
Iteration: 2435; Percent complete: 60.9%; Average loss: 3.0742
Iteration: 2436; Percent complete: 60.9%; Average loss: 2.9715
Iteration: 2437; Percent complete: 60.9%; Average loss: 3.1307
Iteration: 2438; Percent complete: 61.0%; Average loss: 2.8098
Iteration: 2439; Percent complete: 61.0%; Average loss: 2.8850
Iteration: 2440; Percent complete: 61.0%; Average loss: 2.8758
Iteration: 2441; Percent complete: 61.0%; Average loss: 2.8646
Iteration: 2442; Percent complete: 61.1%; Average loss: 2.9402
Iteration: 2443; Percent complete: 61.1%; Average loss: 2.9933
Iteration: 2444; Percent complete: 61.1%; Average loss: 3.0753
Iteration: 2445; Percent complete: 61.1%; Average loss: 2.9071
Iteration: 2446; Percent complete: 61.2%; Average loss: 3.0659
Iteration: 2447; Percent complete: 61.2%; Average loss: 3.0112
Iteration: 2448; Percent complete: 61.2%; Average loss: 2.8507
Iteration: 2449; Percent complete: 61.2%; Average loss: 2.8009
Iteration: 2450; Percent complete: 61.3%; Average loss: 2.9761
Iteration: 2451; Percent complete: 61.3%; Average loss: 2.8785
Iteration: 2452; Percent complete: 61.3%; Average loss: 2.9778
Iteration: 2453; Percent complete: 61.3%; Average loss: 3.0782
Iteration: 2454; Percent complete: 61.4%; Average loss: 3.1972
Iteration: 2455; Percent complete: 61.4%; Average loss: 2.9746
Iteration: 2456; Percent complete: 61.4%; Average loss: 2.9800
Iteration: 2457; Percent complete: 61.4%; Average loss: 3.0350
Iteration: 2458; Percent complete: 61.5%; Average loss: 3.2193
Iteration: 2459; Percent complete: 61.5%; Average loss: 3.1953
Iteration: 2460; Percent complete: 61.5%; Average loss: 3.1009
Iteration: 2461; Percent complete: 61.5%; Average loss: 3.0594
Iteration: 2462; Percent complete: 61.6%; Average loss: 2.9035
Iteration: 2463; Percent complete: 61.6%; Average loss: 2.9778
Iteration: 2464; Percent complete: 61.6%; Average loss: 2.8606
Iteration: 2465; Percent complete: 61.6%; Average loss: 2.9781
Iteration: 2466; Percent complete: 61.7%; Average loss: 3.1709
Iteration: 2467; Percent complete: 61.7%; Average loss: 2.8020
Iteration: 2468; Percent complete: 61.7%; Average loss: 2.9450
Iteration: 2469; Percent complete: 61.7%; Average loss: 2.9630
Iteration: 2470; Percent complete: 61.8%; Average loss: 2.8761
Iteration: 2471; Percent complete: 61.8%; Average loss: 3.1787
Iteration: 2472; Percent complete: 61.8%; Average loss: 2.9714
Iteration: 2473; Percent complete: 61.8%; Average loss: 3.1867
Iteration: 2474; Percent complete: 61.9%; Average loss: 3.0304
Iteration: 2475; Percent complete: 61.9%; Average loss: 2.7913
Iteration: 2476; Percent complete: 61.9%; Average loss: 3.3231
Iteration: 2477; Percent complete: 61.9%; Average loss: 2.7211
Iteration: 2478; Percent complete: 62.0%; Average loss: 3.0938
Iteration: 2479; Percent complete: 62.0%; Average loss: 3.2889
Iteration: 2480; Percent complete: 62.0%; Average loss: 3.0758
Iteration: 2481; Percent complete: 62.0%; Average loss: 3.2690
Iteration: 2482; Percent complete: 62.1%; Average loss: 3.1744
Iteration: 2483; Percent complete: 62.1%; Average loss: 2.9487
Iteration: 2484; Percent complete: 62.1%; Average loss: 3.0104
Iteration: 2485; Percent complete: 62.1%; Average loss: 3.0319
Iteration: 2486; Percent complete: 62.2%; Average loss: 2.9444
Iteration: 2487; Percent complete: 62.2%; Average loss: 3.1453
Iteration: 2488; Percent complete: 62.2%; Average loss: 2.7463
Iteration: 2489; Percent complete: 62.2%; Average loss: 2.9355
Iteration: 2490; Percent complete: 62.3%; Average loss: 3.0119
Iteration: 2491; Percent complete: 62.3%; Average loss: 3.0427
Iteration: 2492; Percent complete: 62.3%; Average loss: 3.1642
Iteration: 2493; Percent complete: 62.3%; Average loss: 2.9699
Iteration: 2494; Percent complete: 62.4%; Average loss: 3.4102
Iteration: 2495; Percent complete: 62.4%; Average loss: 3.2116
Iteration: 2496; Percent complete: 62.4%; Average loss: 2.9830
Iteration: 2497; Percent complete: 62.4%; Average loss: 3.1177
Iteration: 2498; Percent complete: 62.5%; Average loss: 2.9563
Iteration: 2499; Percent complete: 62.5%; Average loss: 3.0650
Iteration: 2500; Percent complete: 62.5%; Average loss: 3.0865
Iteration: 2501; Percent complete: 62.5%; Average loss: 2.9232
Iteration: 2502; Percent complete: 62.5%; Average loss: 2.9820
Iteration: 2503; Percent complete: 62.6%; Average loss: 3.0933
Iteration: 2504; Percent complete: 62.6%; Average loss: 2.9038
Iteration: 2505; Percent complete: 62.6%; Average loss: 3.0606
Iteration: 2506; Percent complete: 62.6%; Average loss: 2.9566
Iteration: 2507; Percent complete: 62.7%; Average loss: 3.1317
Iteration: 2508; Percent complete: 62.7%; Average loss: 3.0128
Iteration: 2509; Percent complete: 62.7%; Average loss: 2.8879
Iteration: 2510; Percent complete: 62.7%; Average loss: 2.8615
Iteration: 2511; Percent complete: 62.8%; Average loss: 2.8921
Iteration: 2512; Percent complete: 62.8%; Average loss: 3.0534
Iteration: 2513; Percent complete: 62.8%; Average loss: 3.0897
Iteration: 2514; Percent complete: 62.8%; Average loss: 2.7838
Iteration: 2515; Percent complete: 62.9%; Average loss: 2.8472
Iteration: 2516; Percent complete: 62.9%; Average loss: 3.0137
Iteration: 2517; Percent complete: 62.9%; Average loss: 3.2288
Iteration: 2518; Percent complete: 62.9%; Average loss: 2.9755
Iteration: 2519; Percent complete: 63.0%; Average loss: 3.2579
Iteration: 2520; Percent complete: 63.0%; Average loss: 2.7489
Iteration: 2521; Percent complete: 63.0%; Average loss: 3.1481
Iteration: 2522; Percent complete: 63.0%; Average loss: 2.9058
Iteration: 2523; Percent complete: 63.1%; Average loss: 3.0740
Iteration: 2524; Percent complete: 63.1%; Average loss: 2.8643
Iteration: 2525; Percent complete: 63.1%; Average loss: 3.0609
Iteration: 2526; Percent complete: 63.1%; Average loss: 2.9330
Iteration: 2527; Percent complete: 63.2%; Average loss: 3.1945
Iteration: 2528; Percent complete: 63.2%; Average loss: 2.9167
Iteration: 2529; Percent complete: 63.2%; Average loss: 3.0811
Iteration: 2530; Percent complete: 63.2%; Average loss: 3.1511
Iteration: 2531; Percent complete: 63.3%; Average loss: 2.9722
Iteration: 2532; Percent complete: 63.3%; Average loss: 2.9541
Iteration: 2533; Percent complete: 63.3%; Average loss: 3.1472
Iteration: 2534; Percent complete: 63.3%; Average loss: 2.8963
Iteration: 2535; Percent complete: 63.4%; Average loss: 3.1040
Iteration: 2536; Percent complete: 63.4%; Average loss: 3.0082
Iteration: 2537; Percent complete: 63.4%; Average loss: 2.7428
Iteration: 2538; Percent complete: 63.4%; Average loss: 3.1276
Iteration: 2539; Percent complete: 63.5%; Average loss: 3.1702
Iteration: 2540; Percent complete: 63.5%; Average loss: 3.0390
Iteration: 2541; Percent complete: 63.5%; Average loss: 3.0735
Iteration: 2542; Percent complete: 63.5%; Average loss: 2.9593
Iteration: 2543; Percent complete: 63.6%; Average loss: 3.1316
Iteration: 2544; Percent complete: 63.6%; Average loss: 2.9566
Iteration: 2545; Percent complete: 63.6%; Average loss: 3.0541
Iteration: 2546; Percent complete: 63.6%; Average loss: 2.8510
Iteration: 2547; Percent complete: 63.7%; Average loss: 3.1570
Iteration: 2548; Percent complete: 63.7%; Average loss: 3.3161
Iteration: 2549; Percent complete: 63.7%; Average loss: 3.0934
Iteration: 2550; Percent complete: 63.7%; Average loss: 2.7384
Iteration: 2551; Percent complete: 63.8%; Average loss: 2.8517
Iteration: 2552; Percent complete: 63.8%; Average loss: 2.8114
Iteration: 2553; Percent complete: 63.8%; Average loss: 2.9827
Iteration: 2554; Percent complete: 63.8%; Average loss: 2.9104
Iteration: 2555; Percent complete: 63.9%; Average loss: 3.0919
Iteration: 2556; Percent complete: 63.9%; Average loss: 3.0690
Iteration: 2557; Percent complete: 63.9%; Average loss: 3.0957
Iteration: 2558; Percent complete: 63.9%; Average loss: 2.9921
Iteration: 2559; Percent complete: 64.0%; Average loss: 2.9404
Iteration: 2560; Percent complete: 64.0%; Average loss: 2.9503
Iteration: 2561; Percent complete: 64.0%; Average loss: 3.0078
Iteration: 2562; Percent complete: 64.0%; Average loss: 3.1286
Iteration: 2563; Percent complete: 64.1%; Average loss: 2.8652
Iteration: 2564; Percent complete: 64.1%; Average loss: 3.0342
Iteration: 2565; Percent complete: 64.1%; Average loss: 2.9201
Iteration: 2566; Percent complete: 64.1%; Average loss: 2.8465
Iteration: 2567; Percent complete: 64.2%; Average loss: 3.0654
Iteration: 2568; Percent complete: 64.2%; Average loss: 3.1371
Iteration: 2569; Percent complete: 64.2%; Average loss: 3.0328
Iteration: 2570; Percent complete: 64.2%; Average loss: 3.0551
Iteration: 2571; Percent complete: 64.3%; Average loss: 2.9468
Iteration: 2572; Percent complete: 64.3%; Average loss: 3.0390
Iteration: 2573; Percent complete: 64.3%; Average loss: 2.9121
Iteration: 2574; Percent complete: 64.3%; Average loss: 3.0295
Iteration: 2575; Percent complete: 64.4%; Average loss: 2.8644
Iteration: 2576; Percent complete: 64.4%; Average loss: 2.8744
Iteration: 2577; Percent complete: 64.4%; Average loss: 2.8617
Iteration: 2578; Percent complete: 64.5%; Average loss: 2.9077
Iteration: 2579; Percent complete: 64.5%; Average loss: 2.9754
Iteration: 2580; Percent complete: 64.5%; Average loss: 3.1065
Iteration: 2581; Percent complete: 64.5%; Average loss: 3.0537
Iteration: 2582; Percent complete: 64.5%; Average loss: 2.9967
Iteration: 2583; Percent complete: 64.6%; Average loss: 2.9721
Iteration: 2584; Percent complete: 64.6%; Average loss: 2.9958
Iteration: 2585; Percent complete: 64.6%; Average loss: 2.9881
Iteration: 2586; Percent complete: 64.6%; Average loss: 3.0088
Iteration: 2587; Percent complete: 64.7%; Average loss: 3.2258
Iteration: 2588; Percent complete: 64.7%; Average loss: 3.0431
Iteration: 2589; Percent complete: 64.7%; Average loss: 2.7865
Iteration: 2590; Percent complete: 64.8%; Average loss: 3.0031
Iteration: 2591; Percent complete: 64.8%; Average loss: 3.1517
Iteration: 2592; Percent complete: 64.8%; Average loss: 3.0455
Iteration: 2593; Percent complete: 64.8%; Average loss: 2.9903
Iteration: 2594; Percent complete: 64.8%; Average loss: 3.1832
Iteration: 2595; Percent complete: 64.9%; Average loss: 3.0362
Iteration: 2596; Percent complete: 64.9%; Average loss: 2.9187
Iteration: 2597; Percent complete: 64.9%; Average loss: 2.9790
Iteration: 2598; Percent complete: 65.0%; Average loss: 2.8725
Iteration: 2599; Percent complete: 65.0%; Average loss: 2.9556
Iteration: 2600; Percent complete: 65.0%; Average loss: 3.1295
Iteration: 2601; Percent complete: 65.0%; Average loss: 2.7896
Iteration: 2602; Percent complete: 65.0%; Average loss: 2.7533
Iteration: 2603; Percent complete: 65.1%; Average loss: 2.6595
Iteration: 2604; Percent complete: 65.1%; Average loss: 2.9213
Iteration: 2605; Percent complete: 65.1%; Average loss: 2.9867
Iteration: 2606; Percent complete: 65.1%; Average loss: 2.8525
Iteration: 2607; Percent complete: 65.2%; Average loss: 2.9954
Iteration: 2608; Percent complete: 65.2%; Average loss: 3.0242
Iteration: 2609; Percent complete: 65.2%; Average loss: 2.9411
Iteration: 2610; Percent complete: 65.2%; Average loss: 2.9791
Iteration: 2611; Percent complete: 65.3%; Average loss: 2.9898
Iteration: 2612; Percent complete: 65.3%; Average loss: 3.1907
Iteration: 2613; Percent complete: 65.3%; Average loss: 2.9187
Iteration: 2614; Percent complete: 65.3%; Average loss: 2.9411
Iteration: 2615; Percent complete: 65.4%; Average loss: 2.9931
Iteration: 2616; Percent complete: 65.4%; Average loss: 2.9434
Iteration: 2617; Percent complete: 65.4%; Average loss: 2.9787
Iteration: 2618; Percent complete: 65.5%; Average loss: 3.0412
Iteration: 2619; Percent complete: 65.5%; Average loss: 2.9322
Iteration: 2620; Percent complete: 65.5%; Average loss: 3.2142
Iteration: 2621; Percent complete: 65.5%; Average loss: 2.8550
Iteration: 2622; Percent complete: 65.5%; Average loss: 2.8026
Iteration: 2623; Percent complete: 65.6%; Average loss: 2.8920
Iteration: 2624; Percent complete: 65.6%; Average loss: 2.8633
Iteration: 2625; Percent complete: 65.6%; Average loss: 3.0554
Iteration: 2626; Percent complete: 65.6%; Average loss: 2.9736
Iteration: 2627; Percent complete: 65.7%; Average loss: 2.9830
Iteration: 2628; Percent complete: 65.7%; Average loss: 3.0041
Iteration: 2629; Percent complete: 65.7%; Average loss: 2.7545
Iteration: 2630; Percent complete: 65.8%; Average loss: 2.9692
Iteration: 2631; Percent complete: 65.8%; Average loss: 3.1761
Iteration: 2632; Percent complete: 65.8%; Average loss: 2.8432
Iteration: 2633; Percent complete: 65.8%; Average loss: 2.9829
Iteration: 2634; Percent complete: 65.8%; Average loss: 2.9266
Iteration: 2635; Percent complete: 65.9%; Average loss: 3.1029
Iteration: 2636; Percent complete: 65.9%; Average loss: 2.8519
Iteration: 2637; Percent complete: 65.9%; Average loss: 2.9450
Iteration: 2638; Percent complete: 66.0%; Average loss: 2.8228
Iteration: 2639; Percent complete: 66.0%; Average loss: 2.8476
Iteration: 2640; Percent complete: 66.0%; Average loss: 2.8644
Iteration: 2641; Percent complete: 66.0%; Average loss: 2.9213
Iteration: 2642; Percent complete: 66.0%; Average loss: 3.0804
Iteration: 2643; Percent complete: 66.1%; Average loss: 3.0568
Iteration: 2644; Percent complete: 66.1%; Average loss: 2.8744
Iteration: 2645; Percent complete: 66.1%; Average loss: 3.0653
Iteration: 2646; Percent complete: 66.1%; Average loss: 3.3139
Iteration: 2647; Percent complete: 66.2%; Average loss: 2.9657
Iteration: 2648; Percent complete: 66.2%; Average loss: 2.8673
Iteration: 2649; Percent complete: 66.2%; Average loss: 2.8463
Iteration: 2650; Percent complete: 66.2%; Average loss: 2.8480
Iteration: 2651; Percent complete: 66.3%; Average loss: 2.8807
Iteration: 2652; Percent complete: 66.3%; Average loss: 3.1087
Iteration: 2653; Percent complete: 66.3%; Average loss: 2.9096
Iteration: 2654; Percent complete: 66.3%; Average loss: 2.6968
Iteration: 2655; Percent complete: 66.4%; Average loss: 2.9342
Iteration: 2656; Percent complete: 66.4%; Average loss: 3.1519
Iteration: 2657; Percent complete: 66.4%; Average loss: 2.8634
Iteration: 2658; Percent complete: 66.5%; Average loss: 2.7274
Iteration: 2659; Percent complete: 66.5%; Average loss: 3.2263
Iteration: 2660; Percent complete: 66.5%; Average loss: 3.0311
Iteration: 2661; Percent complete: 66.5%; Average loss: 2.9810
Iteration: 2662; Percent complete: 66.5%; Average loss: 2.8290
Iteration: 2663; Percent complete: 66.6%; Average loss: 3.2688
Iteration: 2664; Percent complete: 66.6%; Average loss: 2.9068
Iteration: 2665; Percent complete: 66.6%; Average loss: 3.0316
Iteration: 2666; Percent complete: 66.6%; Average loss: 2.8046
Iteration: 2667; Percent complete: 66.7%; Average loss: 2.9919
Iteration: 2668; Percent complete: 66.7%; Average loss: 2.9210
Iteration: 2669; Percent complete: 66.7%; Average loss: 3.1405
Iteration: 2670; Percent complete: 66.8%; Average loss: 3.1468
Iteration: 2671; Percent complete: 66.8%; Average loss: 2.8994
Iteration: 2672; Percent complete: 66.8%; Average loss: 3.1178
Iteration: 2673; Percent complete: 66.8%; Average loss: 3.0923
Iteration: 2674; Percent complete: 66.8%; Average loss: 2.8226
Iteration: 2675; Percent complete: 66.9%; Average loss: 2.9602
Iteration: 2676; Percent complete: 66.9%; Average loss: 2.9431
Iteration: 2677; Percent complete: 66.9%; Average loss: 2.9174
Iteration: 2678; Percent complete: 67.0%; Average loss: 2.9096
Iteration: 2679; Percent complete: 67.0%; Average loss: 2.7657
Iteration: 2680; Percent complete: 67.0%; Average loss: 3.0630
Iteration: 2681; Percent complete: 67.0%; Average loss: 2.7392
Iteration: 2682; Percent complete: 67.0%; Average loss: 2.9533
Iteration: 2683; Percent complete: 67.1%; Average loss: 2.8859
Iteration: 2684; Percent complete: 67.1%; Average loss: 2.9039
Iteration: 2685; Percent complete: 67.1%; Average loss: 2.8336
Iteration: 2686; Percent complete: 67.2%; Average loss: 2.8811
Iteration: 2687; Percent complete: 67.2%; Average loss: 3.0752
Iteration: 2688; Percent complete: 67.2%; Average loss: 2.8744
Iteration: 2689; Percent complete: 67.2%; Average loss: 2.8814
Iteration: 2690; Percent complete: 67.2%; Average loss: 3.0468
Iteration: 2691; Percent complete: 67.3%; Average loss: 2.6993
Iteration: 2692; Percent complete: 67.3%; Average loss: 3.0364
Iteration: 2693; Percent complete: 67.3%; Average loss: 3.3457
Iteration: 2694; Percent complete: 67.3%; Average loss: 3.0691
Iteration: 2695; Percent complete: 67.4%; Average loss: 3.0665
Iteration: 2696; Percent complete: 67.4%; Average loss: 2.8923
Iteration: 2697; Percent complete: 67.4%; Average loss: 2.9253
Iteration: 2698; Percent complete: 67.5%; Average loss: 3.1286
Iteration: 2699; Percent complete: 67.5%; Average loss: 2.7347
Iteration: 2700; Percent complete: 67.5%; Average loss: 2.9066
Iteration: 2701; Percent complete: 67.5%; Average loss: 3.0351
Iteration: 2702; Percent complete: 67.5%; Average loss: 2.8359
Iteration: 2703; Percent complete: 67.6%; Average loss: 2.8236
Iteration: 2704; Percent complete: 67.6%; Average loss: 3.2896
Iteration: 2705; Percent complete: 67.6%; Average loss: 2.7712
Iteration: 2706; Percent complete: 67.7%; Average loss: 2.7662
Iteration: 2707; Percent complete: 67.7%; Average loss: 2.7613
Iteration: 2708; Percent complete: 67.7%; Average loss: 2.9348
Iteration: 2709; Percent complete: 67.7%; Average loss: 3.1444
Iteration: 2710; Percent complete: 67.8%; Average loss: 2.9050
Iteration: 2711; Percent complete: 67.8%; Average loss: 2.9515
Iteration: 2712; Percent complete: 67.8%; Average loss: 3.0379
Iteration: 2713; Percent complete: 67.8%; Average loss: 3.0263
Iteration: 2714; Percent complete: 67.8%; Average loss: 3.0578
Iteration: 2715; Percent complete: 67.9%; Average loss: 3.0283
Iteration: 2716; Percent complete: 67.9%; Average loss: 2.9111
Iteration: 2717; Percent complete: 67.9%; Average loss: 2.6511
Iteration: 2718; Percent complete: 68.0%; Average loss: 2.7859
Iteration: 2719; Percent complete: 68.0%; Average loss: 2.8902
Iteration: 2720; Percent complete: 68.0%; Average loss: 2.8789
Iteration: 2721; Percent complete: 68.0%; Average loss: 2.9289
Iteration: 2722; Percent complete: 68.0%; Average loss: 2.9644
Iteration: 2723; Percent complete: 68.1%; Average loss: 3.0896
Iteration: 2724; Percent complete: 68.1%; Average loss: 3.0791
Iteration: 2725; Percent complete: 68.1%; Average loss: 3.1497
Iteration: 2726; Percent complete: 68.2%; Average loss: 2.7770
Iteration: 2727; Percent complete: 68.2%; Average loss: 3.1052
Iteration: 2728; Percent complete: 68.2%; Average loss: 2.7897
Iteration: 2729; Percent complete: 68.2%; Average loss: 2.7800
Iteration: 2730; Percent complete: 68.2%; Average loss: 3.0559
Iteration: 2731; Percent complete: 68.3%; Average loss: 2.8990
Iteration: 2732; Percent complete: 68.3%; Average loss: 3.0887
Iteration: 2733; Percent complete: 68.3%; Average loss: 2.9491
Iteration: 2734; Percent complete: 68.3%; Average loss: 3.1293
Iteration: 2735; Percent complete: 68.4%; Average loss: 2.8100
Iteration: 2736; Percent complete: 68.4%; Average loss: 3.0628
Iteration: 2737; Percent complete: 68.4%; Average loss: 2.9040
Iteration: 2738; Percent complete: 68.5%; Average loss: 2.9025
Iteration: 2739; Percent complete: 68.5%; Average loss: 2.9551
Iteration: 2740; Percent complete: 68.5%; Average loss: 3.0432
Iteration: 2741; Percent complete: 68.5%; Average loss: 2.6855
Iteration: 2742; Percent complete: 68.5%; Average loss: 3.1136
Iteration: 2743; Percent complete: 68.6%; Average loss: 2.8243
Iteration: 2744; Percent complete: 68.6%; Average loss: 3.0773
Iteration: 2745; Percent complete: 68.6%; Average loss: 3.1913
Iteration: 2746; Percent complete: 68.7%; Average loss: 2.8263
Iteration: 2747; Percent complete: 68.7%; Average loss: 2.6228
Iteration: 2748; Percent complete: 68.7%; Average loss: 2.6747
Iteration: 2749; Percent complete: 68.7%; Average loss: 2.9337
Iteration: 2750; Percent complete: 68.8%; Average loss: 2.8996
Iteration: 2751; Percent complete: 68.8%; Average loss: 2.8538
Iteration: 2752; Percent complete: 68.8%; Average loss: 2.9855
Iteration: 2753; Percent complete: 68.8%; Average loss: 2.9175
Iteration: 2754; Percent complete: 68.8%; Average loss: 2.8772
Iteration: 2755; Percent complete: 68.9%; Average loss: 3.1281
Iteration: 2756; Percent complete: 68.9%; Average loss: 2.7937
Iteration: 2757; Percent complete: 68.9%; Average loss: 3.0514
Iteration: 2758; Percent complete: 69.0%; Average loss: 3.2295
Iteration: 2759; Percent complete: 69.0%; Average loss: 2.8074
Iteration: 2760; Percent complete: 69.0%; Average loss: 2.8993
Iteration: 2761; Percent complete: 69.0%; Average loss: 2.9323
Iteration: 2762; Percent complete: 69.0%; Average loss: 2.8051
Iteration: 2763; Percent complete: 69.1%; Average loss: 2.9703
Iteration: 2764; Percent complete: 69.1%; Average loss: 2.9206
Iteration: 2765; Percent complete: 69.1%; Average loss: 2.8816
Iteration: 2766; Percent complete: 69.2%; Average loss: 3.0397
Iteration: 2767; Percent complete: 69.2%; Average loss: 2.9311
Iteration: 2768; Percent complete: 69.2%; Average loss: 2.8098
Iteration: 2769; Percent complete: 69.2%; Average loss: 3.2060
Iteration: 2770; Percent complete: 69.2%; Average loss: 3.0123
Iteration: 2771; Percent complete: 69.3%; Average loss: 2.9479
Iteration: 2772; Percent complete: 69.3%; Average loss: 3.0342
Iteration: 2773; Percent complete: 69.3%; Average loss: 2.7490
Iteration: 2774; Percent complete: 69.3%; Average loss: 3.0704
Iteration: 2775; Percent complete: 69.4%; Average loss: 2.8406
Iteration: 2776; Percent complete: 69.4%; Average loss: 3.0020
Iteration: 2777; Percent complete: 69.4%; Average loss: 3.2553
Iteration: 2778; Percent complete: 69.5%; Average loss: 2.8699
Iteration: 2779; Percent complete: 69.5%; Average loss: 2.9673
Iteration: 2780; Percent complete: 69.5%; Average loss: 3.0152
Iteration: 2781; Percent complete: 69.5%; Average loss: 2.9098
Iteration: 2782; Percent complete: 69.5%; Average loss: 3.0996
Iteration: 2783; Percent complete: 69.6%; Average loss: 2.8998
Iteration: 2784; Percent complete: 69.6%; Average loss: 2.6669
Iteration: 2785; Percent complete: 69.6%; Average loss: 2.9219
Iteration: 2786; Percent complete: 69.7%; Average loss: 3.0511
Iteration: 2787; Percent complete: 69.7%; Average loss: 2.9774
Iteration: 2788; Percent complete: 69.7%; Average loss: 2.8367
Iteration: 2789; Percent complete: 69.7%; Average loss: 2.9668
Iteration: 2790; Percent complete: 69.8%; Average loss: 2.9426
Iteration: 2791; Percent complete: 69.8%; Average loss: 2.9635
Iteration: 2792; Percent complete: 69.8%; Average loss: 3.0329
Iteration: 2793; Percent complete: 69.8%; Average loss: 2.9420
Iteration: 2794; Percent complete: 69.8%; Average loss: 3.0063
Iteration: 2795; Percent complete: 69.9%; Average loss: 2.8806
Iteration: 2796; Percent complete: 69.9%; Average loss: 2.9448
Iteration: 2797; Percent complete: 69.9%; Average loss: 3.1839
Iteration: 2798; Percent complete: 70.0%; Average loss: 2.7731
Iteration: 2799; Percent complete: 70.0%; Average loss: 3.0173
Iteration: 2800; Percent complete: 70.0%; Average loss: 3.0754
Iteration: 2801; Percent complete: 70.0%; Average loss: 2.9319
Iteration: 2802; Percent complete: 70.0%; Average loss: 2.9510
Iteration: 2803; Percent complete: 70.1%; Average loss: 2.8086
Iteration: 2804; Percent complete: 70.1%; Average loss: 2.7560
Iteration: 2805; Percent complete: 70.1%; Average loss: 2.7977
Iteration: 2806; Percent complete: 70.2%; Average loss: 2.9799
Iteration: 2807; Percent complete: 70.2%; Average loss: 2.9387
Iteration: 2808; Percent complete: 70.2%; Average loss: 3.0709
Iteration: 2809; Percent complete: 70.2%; Average loss: 2.8732
Iteration: 2810; Percent complete: 70.2%; Average loss: 2.7635
Iteration: 2811; Percent complete: 70.3%; Average loss: 3.1909
Iteration: 2812; Percent complete: 70.3%; Average loss: 2.6149
Iteration: 2813; Percent complete: 70.3%; Average loss: 2.7763
Iteration: 2814; Percent complete: 70.3%; Average loss: 2.8487
Iteration: 2815; Percent complete: 70.4%; Average loss: 2.9606
Iteration: 2816; Percent complete: 70.4%; Average loss: 2.9671
Iteration: 2817; Percent complete: 70.4%; Average loss: 3.0499
Iteration: 2818; Percent complete: 70.5%; Average loss: 2.9161
Iteration: 2819; Percent complete: 70.5%; Average loss: 2.8150
Iteration: 2820; Percent complete: 70.5%; Average loss: 2.8929
Iteration: 2821; Percent complete: 70.5%; Average loss: 2.7976
Iteration: 2822; Percent complete: 70.5%; Average loss: 2.9606
Iteration: 2823; Percent complete: 70.6%; Average loss: 3.0420
Iteration: 2824; Percent complete: 70.6%; Average loss: 3.0610
Iteration: 2825; Percent complete: 70.6%; Average loss: 2.7344
Iteration: 2826; Percent complete: 70.7%; Average loss: 2.9405
Iteration: 2827; Percent complete: 70.7%; Average loss: 2.7650
Iteration: 2828; Percent complete: 70.7%; Average loss: 2.8716
Iteration: 2829; Percent complete: 70.7%; Average loss: 2.7894
Iteration: 2830; Percent complete: 70.8%; Average loss: 2.7876
Iteration: 2831; Percent complete: 70.8%; Average loss: 2.6531
Iteration: 2832; Percent complete: 70.8%; Average loss: 2.6075
Iteration: 2833; Percent complete: 70.8%; Average loss: 2.9735
Iteration: 2834; Percent complete: 70.9%; Average loss: 2.9563
Iteration: 2835; Percent complete: 70.9%; Average loss: 2.8260
Iteration: 2836; Percent complete: 70.9%; Average loss: 3.0925
Iteration: 2837; Percent complete: 70.9%; Average loss: 2.7571
Iteration: 2838; Percent complete: 71.0%; Average loss: 2.7115
Iteration: 2839; Percent complete: 71.0%; Average loss: 2.8734
Iteration: 2840; Percent complete: 71.0%; Average loss: 2.8697
Iteration: 2841; Percent complete: 71.0%; Average loss: 2.8601
Iteration: 2842; Percent complete: 71.0%; Average loss: 2.8507
Iteration: 2843; Percent complete: 71.1%; Average loss: 2.9071
Iteration: 2844; Percent complete: 71.1%; Average loss: 3.1631
Iteration: 2845; Percent complete: 71.1%; Average loss: 2.9049
Iteration: 2846; Percent complete: 71.2%; Average loss: 2.8842
Iteration: 2847; Percent complete: 71.2%; Average loss: 3.0264
Iteration: 2848; Percent complete: 71.2%; Average loss: 3.3051
Iteration: 2849; Percent complete: 71.2%; Average loss: 3.0651
Iteration: 2850; Percent complete: 71.2%; Average loss: 2.8498
Iteration: 2851; Percent complete: 71.3%; Average loss: 3.1002
Iteration: 2852; Percent complete: 71.3%; Average loss: 2.8427
Iteration: 2853; Percent complete: 71.3%; Average loss: 2.9740
Iteration: 2854; Percent complete: 71.4%; Average loss: 2.9746
Iteration: 2855; Percent complete: 71.4%; Average loss: 2.8732
Iteration: 2856; Percent complete: 71.4%; Average loss: 2.7279
Iteration: 2857; Percent complete: 71.4%; Average loss: 3.1034
Iteration: 2858; Percent complete: 71.5%; Average loss: 2.9281
Iteration: 2859; Percent complete: 71.5%; Average loss: 3.1023
Iteration: 2860; Percent complete: 71.5%; Average loss: 2.9999
Iteration: 2861; Percent complete: 71.5%; Average loss: 2.8239
Iteration: 2862; Percent complete: 71.5%; Average loss: 2.9745
Iteration: 2863; Percent complete: 71.6%; Average loss: 2.6461
Iteration: 2864; Percent complete: 71.6%; Average loss: 2.9835
Iteration: 2865; Percent complete: 71.6%; Average loss: 2.9394
Iteration: 2866; Percent complete: 71.7%; Average loss: 3.1531
Iteration: 2867; Percent complete: 71.7%; Average loss: 2.6448
Iteration: 2868; Percent complete: 71.7%; Average loss: 2.9850
Iteration: 2869; Percent complete: 71.7%; Average loss: 2.6996
Iteration: 2870; Percent complete: 71.8%; Average loss: 2.8735
Iteration: 2871; Percent complete: 71.8%; Average loss: 2.8405
Iteration: 2872; Percent complete: 71.8%; Average loss: 2.6348
Iteration: 2873; Percent complete: 71.8%; Average loss: 2.9328
Iteration: 2874; Percent complete: 71.9%; Average loss: 2.9802
Iteration: 2875; Percent complete: 71.9%; Average loss: 2.8764
Iteration: 2876; Percent complete: 71.9%; Average loss: 2.9751
Iteration: 2877; Percent complete: 71.9%; Average loss: 2.7779
Iteration: 2878; Percent complete: 72.0%; Average loss: 3.1414
Iteration: 2879; Percent complete: 72.0%; Average loss: 2.9030
Iteration: 2880; Percent complete: 72.0%; Average loss: 3.0445
Iteration: 2881; Percent complete: 72.0%; Average loss: 2.7660
Iteration: 2882; Percent complete: 72.0%; Average loss: 2.8299
Iteration: 2883; Percent complete: 72.1%; Average loss: 2.9405
Iteration: 2884; Percent complete: 72.1%; Average loss: 2.6777
Iteration: 2885; Percent complete: 72.1%; Average loss: 2.9782
Iteration: 2886; Percent complete: 72.2%; Average loss: 3.2044
Iteration: 2887; Percent complete: 72.2%; Average loss: 2.7055
Iteration: 2888; Percent complete: 72.2%; Average loss: 2.6670
Iteration: 2889; Percent complete: 72.2%; Average loss: 3.0082
Iteration: 2890; Percent complete: 72.2%; Average loss: 2.8225
Iteration: 2891; Percent complete: 72.3%; Average loss: 2.9088
Iteration: 2892; Percent complete: 72.3%; Average loss: 2.8167
Iteration: 2893; Percent complete: 72.3%; Average loss: 3.0628
Iteration: 2894; Percent complete: 72.4%; Average loss: 3.0006
Iteration: 2895; Percent complete: 72.4%; Average loss: 3.0637
Iteration: 2896; Percent complete: 72.4%; Average loss: 3.0144
Iteration: 2897; Percent complete: 72.4%; Average loss: 3.0548
Iteration: 2898; Percent complete: 72.5%; Average loss: 2.8918
Iteration: 2899; Percent complete: 72.5%; Average loss: 2.9062
Iteration: 2900; Percent complete: 72.5%; Average loss: 2.6467
Iteration: 2901; Percent complete: 72.5%; Average loss: 2.9629
Iteration: 2902; Percent complete: 72.5%; Average loss: 2.8660
Iteration: 2903; Percent complete: 72.6%; Average loss: 3.0495
Iteration: 2904; Percent complete: 72.6%; Average loss: 2.8643
Iteration: 2905; Percent complete: 72.6%; Average loss: 2.8103
Iteration: 2906; Percent complete: 72.7%; Average loss: 2.8733
Iteration: 2907; Percent complete: 72.7%; Average loss: 2.8818
Iteration: 2908; Percent complete: 72.7%; Average loss: 2.6980
Iteration: 2909; Percent complete: 72.7%; Average loss: 3.0065
Iteration: 2910; Percent complete: 72.8%; Average loss: 2.9861
Iteration: 2911; Percent complete: 72.8%; Average loss: 2.9519
Iteration: 2912; Percent complete: 72.8%; Average loss: 2.7734
Iteration: 2913; Percent complete: 72.8%; Average loss: 2.9950
Iteration: 2914; Percent complete: 72.9%; Average loss: 2.9318
Iteration: 2915; Percent complete: 72.9%; Average loss: 2.9005
Iteration: 2916; Percent complete: 72.9%; Average loss: 2.7580
Iteration: 2917; Percent complete: 72.9%; Average loss: 2.6947
Iteration: 2918; Percent complete: 73.0%; Average loss: 2.8509
Iteration: 2919; Percent complete: 73.0%; Average loss: 2.9080
Iteration: 2920; Percent complete: 73.0%; Average loss: 2.8826
Iteration: 2921; Percent complete: 73.0%; Average loss: 2.6888
Iteration: 2922; Percent complete: 73.0%; Average loss: 2.6103
Iteration: 2923; Percent complete: 73.1%; Average loss: 3.0272
Iteration: 2924; Percent complete: 73.1%; Average loss: 2.8656
Iteration: 2925; Percent complete: 73.1%; Average loss: 3.0559
Iteration: 2926; Percent complete: 73.2%; Average loss: 2.9893
Iteration: 2927; Percent complete: 73.2%; Average loss: 2.9656
Iteration: 2928; Percent complete: 73.2%; Average loss: 3.0029
Iteration: 2929; Percent complete: 73.2%; Average loss: 2.8631
Iteration: 2930; Percent complete: 73.2%; Average loss: 2.7385
Iteration: 2931; Percent complete: 73.3%; Average loss: 2.9353
Iteration: 2932; Percent complete: 73.3%; Average loss: 2.7064
Iteration: 2933; Percent complete: 73.3%; Average loss: 2.7958
Iteration: 2934; Percent complete: 73.4%; Average loss: 2.9631
Iteration: 2935; Percent complete: 73.4%; Average loss: 2.9521
Iteration: 2936; Percent complete: 73.4%; Average loss: 2.7764
Iteration: 2937; Percent complete: 73.4%; Average loss: 2.7716
Iteration: 2938; Percent complete: 73.5%; Average loss: 2.9591
Iteration: 2939; Percent complete: 73.5%; Average loss: 2.9168
Iteration: 2940; Percent complete: 73.5%; Average loss: 2.8270
Iteration: 2941; Percent complete: 73.5%; Average loss: 2.7511
Iteration: 2942; Percent complete: 73.6%; Average loss: 2.7074
Iteration: 2943; Percent complete: 73.6%; Average loss: 2.8905
Iteration: 2944; Percent complete: 73.6%; Average loss: 2.7952
Iteration: 2945; Percent complete: 73.6%; Average loss: 2.6676
Iteration: 2946; Percent complete: 73.7%; Average loss: 2.8904
Iteration: 2947; Percent complete: 73.7%; Average loss: 2.8571
Iteration: 2948; Percent complete: 73.7%; Average loss: 3.0336
Iteration: 2949; Percent complete: 73.7%; Average loss: 2.8534
Iteration: 2950; Percent complete: 73.8%; Average loss: 2.8264
Iteration: 2951; Percent complete: 73.8%; Average loss: 2.8189
Iteration: 2952; Percent complete: 73.8%; Average loss: 2.8780
Iteration: 2953; Percent complete: 73.8%; Average loss: 2.8670
Iteration: 2954; Percent complete: 73.9%; Average loss: 2.6855
Iteration: 2955; Percent complete: 73.9%; Average loss: 2.8326
Iteration: 2956; Percent complete: 73.9%; Average loss: 2.9385
Iteration: 2957; Percent complete: 73.9%; Average loss: 2.8377
Iteration: 2958; Percent complete: 74.0%; Average loss: 2.7470
Iteration: 2959; Percent complete: 74.0%; Average loss: 2.7453
Iteration: 2960; Percent complete: 74.0%; Average loss: 2.9980
Iteration: 2961; Percent complete: 74.0%; Average loss: 2.7691
Iteration: 2962; Percent complete: 74.1%; Average loss: 2.7939
Iteration: 2963; Percent complete: 74.1%; Average loss: 2.8768
Iteration: 2964; Percent complete: 74.1%; Average loss: 2.8439
Iteration: 2965; Percent complete: 74.1%; Average loss: 2.9102
Iteration: 2966; Percent complete: 74.2%; Average loss: 2.9781
Iteration: 2967; Percent complete: 74.2%; Average loss: 2.9837
Iteration: 2968; Percent complete: 74.2%; Average loss: 2.8725
Iteration: 2969; Percent complete: 74.2%; Average loss: 2.7214
Iteration: 2970; Percent complete: 74.2%; Average loss: 2.7303
Iteration: 2971; Percent complete: 74.3%; Average loss: 2.6839
Iteration: 2972; Percent complete: 74.3%; Average loss: 2.7410
Iteration: 2973; Percent complete: 74.3%; Average loss: 2.6838
Iteration: 2974; Percent complete: 74.4%; Average loss: 2.8844
Iteration: 2975; Percent complete: 74.4%; Average loss: 2.7657
Iteration: 2976; Percent complete: 74.4%; Average loss: 3.0007
Iteration: 2977; Percent complete: 74.4%; Average loss: 2.7683
Iteration: 2978; Percent complete: 74.5%; Average loss: 2.7754
Iteration: 2979; Percent complete: 74.5%; Average loss: 2.9418
Iteration: 2980; Percent complete: 74.5%; Average loss: 2.9081
Iteration: 2981; Percent complete: 74.5%; Average loss: 2.6613
Iteration: 2982; Percent complete: 74.6%; Average loss: 2.9718
Iteration: 2983; Percent complete: 74.6%; Average loss: 2.9895
Iteration: 2984; Percent complete: 74.6%; Average loss: 2.9702
Iteration: 2985; Percent complete: 74.6%; Average loss: 2.7908
Iteration: 2986; Percent complete: 74.7%; Average loss: 2.8434
Iteration: 2987; Percent complete: 74.7%; Average loss: 2.7384
Iteration: 2988; Percent complete: 74.7%; Average loss: 2.8005
Iteration: 2989; Percent complete: 74.7%; Average loss: 2.7824
Iteration: 2990; Percent complete: 74.8%; Average loss: 3.1291
Iteration: 2991; Percent complete: 74.8%; Average loss: 3.1140
Iteration: 2992; Percent complete: 74.8%; Average loss: 2.6581
Iteration: 2993; Percent complete: 74.8%; Average loss: 2.9030
Iteration: 2994; Percent complete: 74.9%; Average loss: 2.9360
Iteration: 2995; Percent complete: 74.9%; Average loss: 2.7942
Iteration: 2996; Percent complete: 74.9%; Average loss: 3.0128
Iteration: 2997; Percent complete: 74.9%; Average loss: 2.8045
Iteration: 2998; Percent complete: 75.0%; Average loss: 2.9057
Iteration: 2999; Percent complete: 75.0%; Average loss: 2.9687
Iteration: 3000; Percent complete: 75.0%; Average loss: 2.7950
Iteration: 3001; Percent complete: 75.0%; Average loss: 3.0979
Iteration: 3002; Percent complete: 75.0%; Average loss: 2.8560
Iteration: 3003; Percent complete: 75.1%; Average loss: 2.8208
Iteration: 3004; Percent complete: 75.1%; Average loss: 2.9010
Iteration: 3005; Percent complete: 75.1%; Average loss: 2.9888
Iteration: 3006; Percent complete: 75.1%; Average loss: 3.0923
Iteration: 3007; Percent complete: 75.2%; Average loss: 2.7891
Iteration: 3008; Percent complete: 75.2%; Average loss: 2.7827
Iteration: 3009; Percent complete: 75.2%; Average loss: 3.0056
Iteration: 3010; Percent complete: 75.2%; Average loss: 2.6493
Iteration: 3011; Percent complete: 75.3%; Average loss: 2.9089
Iteration: 3012; Percent complete: 75.3%; Average loss: 3.0040
Iteration: 3013; Percent complete: 75.3%; Average loss: 2.7856
Iteration: 3014; Percent complete: 75.3%; Average loss: 2.8520
Iteration: 3015; Percent complete: 75.4%; Average loss: 2.8815
Iteration: 3016; Percent complete: 75.4%; Average loss: 2.9201
Iteration: 3017; Percent complete: 75.4%; Average loss: 2.9489
Iteration: 3018; Percent complete: 75.4%; Average loss: 3.1400
Iteration: 3019; Percent complete: 75.5%; Average loss: 2.7049
Iteration: 3020; Percent complete: 75.5%; Average loss: 2.6831
Iteration: 3021; Percent complete: 75.5%; Average loss: 2.9212
Iteration: 3022; Percent complete: 75.5%; Average loss: 2.7993
Iteration: 3023; Percent complete: 75.6%; Average loss: 2.9870
Iteration: 3024; Percent complete: 75.6%; Average loss: 3.0753
Iteration: 3025; Percent complete: 75.6%; Average loss: 2.8577
Iteration: 3026; Percent complete: 75.6%; Average loss: 2.9678
Iteration: 3027; Percent complete: 75.7%; Average loss: 2.9237
Iteration: 3028; Percent complete: 75.7%; Average loss: 2.7608
Iteration: 3029; Percent complete: 75.7%; Average loss: 2.8617
Iteration: 3030; Percent complete: 75.8%; Average loss: 2.7351
Iteration: 3031; Percent complete: 75.8%; Average loss: 2.7582
Iteration: 3032; Percent complete: 75.8%; Average loss: 2.9949
Iteration: 3033; Percent complete: 75.8%; Average loss: 2.7493
Iteration: 3034; Percent complete: 75.8%; Average loss: 2.9363
Iteration: 3035; Percent complete: 75.9%; Average loss: 2.6651
Iteration: 3036; Percent complete: 75.9%; Average loss: 2.6201
Iteration: 3037; Percent complete: 75.9%; Average loss: 2.9805
Iteration: 3038; Percent complete: 75.9%; Average loss: 2.5554
Iteration: 3039; Percent complete: 76.0%; Average loss: 2.9647
Iteration: 3040; Percent complete: 76.0%; Average loss: 2.7370
Iteration: 3041; Percent complete: 76.0%; Average loss: 2.8865
Iteration: 3042; Percent complete: 76.0%; Average loss: 2.7523
Iteration: 3043; Percent complete: 76.1%; Average loss: 2.8022
Iteration: 3044; Percent complete: 76.1%; Average loss: 3.1104
Iteration: 3045; Percent complete: 76.1%; Average loss: 3.0355
Iteration: 3046; Percent complete: 76.1%; Average loss: 3.0842
Iteration: 3047; Percent complete: 76.2%; Average loss: 2.8329
Iteration: 3048; Percent complete: 76.2%; Average loss: 2.5439
Iteration: 3049; Percent complete: 76.2%; Average loss: 3.0823
Iteration: 3050; Percent complete: 76.2%; Average loss: 3.0757
Iteration: 3051; Percent complete: 76.3%; Average loss: 3.0922
Iteration: 3052; Percent complete: 76.3%; Average loss: 2.7747
Iteration: 3053; Percent complete: 76.3%; Average loss: 2.9779
Iteration: 3054; Percent complete: 76.3%; Average loss: 2.8833
Iteration: 3055; Percent complete: 76.4%; Average loss: 2.7734
Iteration: 3056; Percent complete: 76.4%; Average loss: 3.0928
Iteration: 3057; Percent complete: 76.4%; Average loss: 2.9566
Iteration: 3058; Percent complete: 76.4%; Average loss: 2.8484
Iteration: 3059; Percent complete: 76.5%; Average loss: 2.8120
Iteration: 3060; Percent complete: 76.5%; Average loss: 2.6526
Iteration: 3061; Percent complete: 76.5%; Average loss: 3.0492
Iteration: 3062; Percent complete: 76.5%; Average loss: 2.8233
Iteration: 3063; Percent complete: 76.6%; Average loss: 2.9126
Iteration: 3064; Percent complete: 76.6%; Average loss: 2.7894
Iteration: 3065; Percent complete: 76.6%; Average loss: 2.8252
Iteration: 3066; Percent complete: 76.6%; Average loss: 2.8729
Iteration: 3067; Percent complete: 76.7%; Average loss: 2.8385
Iteration: 3068; Percent complete: 76.7%; Average loss: 2.8218
Iteration: 3069; Percent complete: 76.7%; Average loss: 2.7631
Iteration: 3070; Percent complete: 76.8%; Average loss: 2.8235
Iteration: 3071; Percent complete: 76.8%; Average loss: 2.7714
Iteration: 3072; Percent complete: 76.8%; Average loss: 3.0605
Iteration: 3073; Percent complete: 76.8%; Average loss: 2.9724
Iteration: 3074; Percent complete: 76.8%; Average loss: 2.7732
Iteration: 3075; Percent complete: 76.9%; Average loss: 2.8887
Iteration: 3076; Percent complete: 76.9%; Average loss: 2.7575
Iteration: 3077; Percent complete: 76.9%; Average loss: 2.7968
Iteration: 3078; Percent complete: 77.0%; Average loss: 2.8895
Iteration: 3079; Percent complete: 77.0%; Average loss: 2.9905
Iteration: 3080; Percent complete: 77.0%; Average loss: 2.8044
Iteration: 3081; Percent complete: 77.0%; Average loss: 2.9526
Iteration: 3082; Percent complete: 77.0%; Average loss: 2.5864
Iteration: 3083; Percent complete: 77.1%; Average loss: 2.9612
Iteration: 3084; Percent complete: 77.1%; Average loss: 2.9876
Iteration: 3085; Percent complete: 77.1%; Average loss: 2.8911
Iteration: 3086; Percent complete: 77.1%; Average loss: 2.8401
Iteration: 3087; Percent complete: 77.2%; Average loss: 2.8640
Iteration: 3088; Percent complete: 77.2%; Average loss: 2.8821
Iteration: 3089; Percent complete: 77.2%; Average loss: 2.6638
Iteration: 3090; Percent complete: 77.2%; Average loss: 2.8038
Iteration: 3091; Percent complete: 77.3%; Average loss: 2.7707
Iteration: 3092; Percent complete: 77.3%; Average loss: 2.6988
Iteration: 3093; Percent complete: 77.3%; Average loss: 2.8855
Iteration: 3094; Percent complete: 77.3%; Average loss: 2.6391
Iteration: 3095; Percent complete: 77.4%; Average loss: 2.7761
Iteration: 3096; Percent complete: 77.4%; Average loss: 2.7997
Iteration: 3097; Percent complete: 77.4%; Average loss: 2.7666
Iteration: 3098; Percent complete: 77.5%; Average loss: 2.8814
Iteration: 3099; Percent complete: 77.5%; Average loss: 2.6656
Iteration: 3100; Percent complete: 77.5%; Average loss: 2.9670
Iteration: 3101; Percent complete: 77.5%; Average loss: 2.6348
Iteration: 3102; Percent complete: 77.5%; Average loss: 2.8028
Iteration: 3103; Percent complete: 77.6%; Average loss: 2.7795
Iteration: 3104; Percent complete: 77.6%; Average loss: 2.8384
Iteration: 3105; Percent complete: 77.6%; Average loss: 3.0241
Iteration: 3106; Percent complete: 77.6%; Average loss: 3.0847
Iteration: 3107; Percent complete: 77.7%; Average loss: 2.7715
Iteration: 3108; Percent complete: 77.7%; Average loss: 2.7053
Iteration: 3109; Percent complete: 77.7%; Average loss: 3.0693
Iteration: 3110; Percent complete: 77.8%; Average loss: 2.7329
Iteration: 3111; Percent complete: 77.8%; Average loss: 2.7823
Iteration: 3112; Percent complete: 77.8%; Average loss: 3.0488
Iteration: 3113; Percent complete: 77.8%; Average loss: 2.9797
Iteration: 3114; Percent complete: 77.8%; Average loss: 2.8829
Iteration: 3115; Percent complete: 77.9%; Average loss: 2.9516
Iteration: 3116; Percent complete: 77.9%; Average loss: 2.8601
Iteration: 3117; Percent complete: 77.9%; Average loss: 2.8856
Iteration: 3118; Percent complete: 78.0%; Average loss: 2.7686
Iteration: 3119; Percent complete: 78.0%; Average loss: 2.7822
Iteration: 3120; Percent complete: 78.0%; Average loss: 3.1027
Iteration: 3121; Percent complete: 78.0%; Average loss: 2.8675
Iteration: 3122; Percent complete: 78.0%; Average loss: 2.8810
Iteration: 3123; Percent complete: 78.1%; Average loss: 2.6273
Iteration: 3124; Percent complete: 78.1%; Average loss: 2.9783
Iteration: 3125; Percent complete: 78.1%; Average loss: 2.9352
Iteration: 3126; Percent complete: 78.1%; Average loss: 2.9763
Iteration: 3127; Percent complete: 78.2%; Average loss: 2.5655
Iteration: 3128; Percent complete: 78.2%; Average loss: 2.9364
Iteration: 3129; Percent complete: 78.2%; Average loss: 2.7606
Iteration: 3130; Percent complete: 78.2%; Average loss: 2.9881
Iteration: 3131; Percent complete: 78.3%; Average loss: 2.8544
Iteration: 3132; Percent complete: 78.3%; Average loss: 2.7054
Iteration: 3133; Percent complete: 78.3%; Average loss: 2.6495
Iteration: 3134; Percent complete: 78.3%; Average loss: 2.9616
Iteration: 3135; Percent complete: 78.4%; Average loss: 2.7140
Iteration: 3136; Percent complete: 78.4%; Average loss: 2.5602
Iteration: 3137; Percent complete: 78.4%; Average loss: 2.8600
Iteration: 3138; Percent complete: 78.5%; Average loss: 2.9266
Iteration: 3139; Percent complete: 78.5%; Average loss: 2.7949
Iteration: 3140; Percent complete: 78.5%; Average loss: 2.8710
Iteration: 3141; Percent complete: 78.5%; Average loss: 2.6866
Iteration: 3142; Percent complete: 78.5%; Average loss: 2.7120
Iteration: 3143; Percent complete: 78.6%; Average loss: 2.7020
Iteration: 3144; Percent complete: 78.6%; Average loss: 2.9507
Iteration: 3145; Percent complete: 78.6%; Average loss: 2.8417
Iteration: 3146; Percent complete: 78.6%; Average loss: 3.0305
Iteration: 3147; Percent complete: 78.7%; Average loss: 2.7897
Iteration: 3148; Percent complete: 78.7%; Average loss: 2.8635
Iteration: 3149; Percent complete: 78.7%; Average loss: 2.7452
Iteration: 3150; Percent complete: 78.8%; Average loss: 2.8818
Iteration: 3151; Percent complete: 78.8%; Average loss: 2.9060
Iteration: 3152; Percent complete: 78.8%; Average loss: 2.9719
Iteration: 3153; Percent complete: 78.8%; Average loss: 2.8219
Iteration: 3154; Percent complete: 78.8%; Average loss: 2.9910
Iteration: 3155; Percent complete: 78.9%; Average loss: 2.6852
Iteration: 3156; Percent complete: 78.9%; Average loss: 2.7237
Iteration: 3157; Percent complete: 78.9%; Average loss: 3.0948
Iteration: 3158; Percent complete: 79.0%; Average loss: 2.5537
Iteration: 3159; Percent complete: 79.0%; Average loss: 2.9361
Iteration: 3160; Percent complete: 79.0%; Average loss: 2.7377
Iteration: 3161; Percent complete: 79.0%; Average loss: 2.8364
Iteration: 3162; Percent complete: 79.0%; Average loss: 3.2526
Iteration: 3163; Percent complete: 79.1%; Average loss: 2.9088
Iteration: 3164; Percent complete: 79.1%; Average loss: 2.7325
Iteration: 3165; Percent complete: 79.1%; Average loss: 2.7050
Iteration: 3166; Percent complete: 79.1%; Average loss: 2.9021
Iteration: 3167; Percent complete: 79.2%; Average loss: 2.6845
Iteration: 3168; Percent complete: 79.2%; Average loss: 2.5682
Iteration: 3169; Percent complete: 79.2%; Average loss: 2.7566
Iteration: 3170; Percent complete: 79.2%; Average loss: 2.8539
Iteration: 3171; Percent complete: 79.3%; Average loss: 2.8497
Iteration: 3172; Percent complete: 79.3%; Average loss: 2.8065
Iteration: 3173; Percent complete: 79.3%; Average loss: 2.7172
Iteration: 3174; Percent complete: 79.3%; Average loss: 2.5737
Iteration: 3175; Percent complete: 79.4%; Average loss: 2.7724
Iteration: 3176; Percent complete: 79.4%; Average loss: 2.9767
Iteration: 3177; Percent complete: 79.4%; Average loss: 2.7925
Iteration: 3178; Percent complete: 79.5%; Average loss: 2.8701
Iteration: 3179; Percent complete: 79.5%; Average loss: 2.7467
Iteration: 3180; Percent complete: 79.5%; Average loss: 2.9660
Iteration: 3181; Percent complete: 79.5%; Average loss: 2.6708
Iteration: 3182; Percent complete: 79.5%; Average loss: 2.9272
Iteration: 3183; Percent complete: 79.6%; Average loss: 2.9828
Iteration: 3184; Percent complete: 79.6%; Average loss: 2.7157
Iteration: 3185; Percent complete: 79.6%; Average loss: 2.8571
Iteration: 3186; Percent complete: 79.7%; Average loss: 3.0375
Iteration: 3187; Percent complete: 79.7%; Average loss: 2.9035
Iteration: 3188; Percent complete: 79.7%; Average loss: 2.7447
Iteration: 3189; Percent complete: 79.7%; Average loss: 2.9283
Iteration: 3190; Percent complete: 79.8%; Average loss: 2.8920
Iteration: 3191; Percent complete: 79.8%; Average loss: 2.7226
Iteration: 3192; Percent complete: 79.8%; Average loss: 2.8985
Iteration: 3193; Percent complete: 79.8%; Average loss: 2.6745
Iteration: 3194; Percent complete: 79.8%; Average loss: 2.8041
Iteration: 3195; Percent complete: 79.9%; Average loss: 2.8140
Iteration: 3196; Percent complete: 79.9%; Average loss: 2.8556
Iteration: 3197; Percent complete: 79.9%; Average loss: 2.9889
Iteration: 3198; Percent complete: 80.0%; Average loss: 2.7957
Iteration: 3199; Percent complete: 80.0%; Average loss: 2.6416
Iteration: 3200; Percent complete: 80.0%; Average loss: 2.6357
Iteration: 3201; Percent complete: 80.0%; Average loss: 2.9236
Iteration: 3202; Percent complete: 80.0%; Average loss: 2.9670
Iteration: 3203; Percent complete: 80.1%; Average loss: 2.7551
Iteration: 3204; Percent complete: 80.1%; Average loss: 3.1495
Iteration: 3205; Percent complete: 80.1%; Average loss: 2.8007
Iteration: 3206; Percent complete: 80.2%; Average loss: 2.8798
Iteration: 3207; Percent complete: 80.2%; Average loss: 2.8633
Iteration: 3208; Percent complete: 80.2%; Average loss: 2.6346
Iteration: 3209; Percent complete: 80.2%; Average loss: 2.8682
Iteration: 3210; Percent complete: 80.2%; Average loss: 2.7418
Iteration: 3211; Percent complete: 80.3%; Average loss: 2.8445
Iteration: 3212; Percent complete: 80.3%; Average loss: 2.5554
Iteration: 3213; Percent complete: 80.3%; Average loss: 2.9644
Iteration: 3214; Percent complete: 80.3%; Average loss: 2.4941
Iteration: 3215; Percent complete: 80.4%; Average loss: 2.9205
Iteration: 3216; Percent complete: 80.4%; Average loss: 2.7244
Iteration: 3217; Percent complete: 80.4%; Average loss: 2.5898
Iteration: 3218; Percent complete: 80.5%; Average loss: 2.7986
Iteration: 3219; Percent complete: 80.5%; Average loss: 2.8456
Iteration: 3220; Percent complete: 80.5%; Average loss: 2.4821
Iteration: 3221; Percent complete: 80.5%; Average loss: 2.7154
Iteration: 3222; Percent complete: 80.5%; Average loss: 2.9628
Iteration: 3223; Percent complete: 80.6%; Average loss: 2.7060
Iteration: 3224; Percent complete: 80.6%; Average loss: 2.6977
Iteration: 3225; Percent complete: 80.6%; Average loss: 2.5510
Iteration: 3226; Percent complete: 80.7%; Average loss: 2.7198
Iteration: 3227; Percent complete: 80.7%; Average loss: 2.6043
Iteration: 3228; Percent complete: 80.7%; Average loss: 2.9380
Iteration: 3229; Percent complete: 80.7%; Average loss: 2.6815
Iteration: 3230; Percent complete: 80.8%; Average loss: 2.8091
Iteration: 3231; Percent complete: 80.8%; Average loss: 2.8218
Iteration: 3232; Percent complete: 80.8%; Average loss: 2.9432
Iteration: 3233; Percent complete: 80.8%; Average loss: 3.0699
Iteration: 3234; Percent complete: 80.8%; Average loss: 2.8278
Iteration: 3235; Percent complete: 80.9%; Average loss: 3.0983
Iteration: 3236; Percent complete: 80.9%; Average loss: 2.8154
Iteration: 3237; Percent complete: 80.9%; Average loss: 2.8086
Iteration: 3238; Percent complete: 81.0%; Average loss: 2.9475
Iteration: 3239; Percent complete: 81.0%; Average loss: 2.9266
Iteration: 3240; Percent complete: 81.0%; Average loss: 2.8253
Iteration: 3241; Percent complete: 81.0%; Average loss: 2.7953
Iteration: 3242; Percent complete: 81.0%; Average loss: 2.9004
Iteration: 3243; Percent complete: 81.1%; Average loss: 2.8787
Iteration: 3244; Percent complete: 81.1%; Average loss: 2.8104
Iteration: 3245; Percent complete: 81.1%; Average loss: 2.6948
Iteration: 3246; Percent complete: 81.2%; Average loss: 2.6422
Iteration: 3247; Percent complete: 81.2%; Average loss: 2.9437
Iteration: 3248; Percent complete: 81.2%; Average loss: 2.7166
Iteration: 3249; Percent complete: 81.2%; Average loss: 2.8278
Iteration: 3250; Percent complete: 81.2%; Average loss: 2.8422
Iteration: 3251; Percent complete: 81.3%; Average loss: 2.5193
Iteration: 3252; Percent complete: 81.3%; Average loss: 2.7059
Iteration: 3253; Percent complete: 81.3%; Average loss: 2.9195
Iteration: 3254; Percent complete: 81.3%; Average loss: 2.8990
Iteration: 3255; Percent complete: 81.4%; Average loss: 2.6993
Iteration: 3256; Percent complete: 81.4%; Average loss: 2.6709
Iteration: 3257; Percent complete: 81.4%; Average loss: 2.7223
Iteration: 3258; Percent complete: 81.5%; Average loss: 2.8889
Iteration: 3259; Percent complete: 81.5%; Average loss: 2.9270
Iteration: 3260; Percent complete: 81.5%; Average loss: 2.6876
Iteration: 3261; Percent complete: 81.5%; Average loss: 2.7127
Iteration: 3262; Percent complete: 81.5%; Average loss: 3.0798
Iteration: 3263; Percent complete: 81.6%; Average loss: 2.8046
Iteration: 3264; Percent complete: 81.6%; Average loss: 2.7639
Iteration: 3265; Percent complete: 81.6%; Average loss: 2.9201
Iteration: 3266; Percent complete: 81.7%; Average loss: 2.7510
Iteration: 3267; Percent complete: 81.7%; Average loss: 2.7054
Iteration: 3268; Percent complete: 81.7%; Average loss: 2.6526
Iteration: 3269; Percent complete: 81.7%; Average loss: 2.8209
Iteration: 3270; Percent complete: 81.8%; Average loss: 2.9094
Iteration: 3271; Percent complete: 81.8%; Average loss: 3.0820
Iteration: 3272; Percent complete: 81.8%; Average loss: 2.6721
Iteration: 3273; Percent complete: 81.8%; Average loss: 2.7111
Iteration: 3274; Percent complete: 81.8%; Average loss: 2.7203
Iteration: 3275; Percent complete: 81.9%; Average loss: 2.7512
Iteration: 3276; Percent complete: 81.9%; Average loss: 2.8124
Iteration: 3277; Percent complete: 81.9%; Average loss: 2.7715
Iteration: 3278; Percent complete: 82.0%; Average loss: 2.8204
Iteration: 3279; Percent complete: 82.0%; Average loss: 3.0395
Iteration: 3280; Percent complete: 82.0%; Average loss: 2.8295
Iteration: 3281; Percent complete: 82.0%; Average loss: 2.7881
Iteration: 3282; Percent complete: 82.0%; Average loss: 2.6979
Iteration: 3283; Percent complete: 82.1%; Average loss: 2.6769
Iteration: 3284; Percent complete: 82.1%; Average loss: 2.6460
Iteration: 3285; Percent complete: 82.1%; Average loss: 2.7962
Iteration: 3286; Percent complete: 82.2%; Average loss: 2.7910
Iteration: 3287; Percent complete: 82.2%; Average loss: 3.0559
Iteration: 3288; Percent complete: 82.2%; Average loss: 2.9007
Iteration: 3289; Percent complete: 82.2%; Average loss: 2.8694
Iteration: 3290; Percent complete: 82.2%; Average loss: 2.7307
Iteration: 3291; Percent complete: 82.3%; Average loss: 2.6929
Iteration: 3292; Percent complete: 82.3%; Average loss: 2.7497
Iteration: 3293; Percent complete: 82.3%; Average loss: 2.8241
Iteration: 3294; Percent complete: 82.3%; Average loss: 2.7501
Iteration: 3295; Percent complete: 82.4%; Average loss: 2.5850
Iteration: 3296; Percent complete: 82.4%; Average loss: 2.6161
Iteration: 3297; Percent complete: 82.4%; Average loss: 2.7449
Iteration: 3298; Percent complete: 82.5%; Average loss: 2.8577
Iteration: 3299; Percent complete: 82.5%; Average loss: 2.7315
Iteration: 3300; Percent complete: 82.5%; Average loss: 2.7427
Iteration: 3301; Percent complete: 82.5%; Average loss: 2.6189
Iteration: 3302; Percent complete: 82.5%; Average loss: 2.9017
Iteration: 3303; Percent complete: 82.6%; Average loss: 2.5443
Iteration: 3304; Percent complete: 82.6%; Average loss: 2.9497
Iteration: 3305; Percent complete: 82.6%; Average loss: 3.0320
Iteration: 3306; Percent complete: 82.7%; Average loss: 2.9408
Iteration: 3307; Percent complete: 82.7%; Average loss: 2.8410
Iteration: 3308; Percent complete: 82.7%; Average loss: 2.6126
Iteration: 3309; Percent complete: 82.7%; Average loss: 2.8933
Iteration: 3310; Percent complete: 82.8%; Average loss: 2.5893
Iteration: 3311; Percent complete: 82.8%; Average loss: 2.7185
Iteration: 3312; Percent complete: 82.8%; Average loss: 2.8440
Iteration: 3313; Percent complete: 82.8%; Average loss: 2.8038
Iteration: 3314; Percent complete: 82.8%; Average loss: 2.7622
Iteration: 3315; Percent complete: 82.9%; Average loss: 2.7783
Iteration: 3316; Percent complete: 82.9%; Average loss: 2.8411
Iteration: 3317; Percent complete: 82.9%; Average loss: 2.7213
Iteration: 3318; Percent complete: 83.0%; Average loss: 2.8476
Iteration: 3319; Percent complete: 83.0%; Average loss: 2.5962
Iteration: 3320; Percent complete: 83.0%; Average loss: 2.5748
Iteration: 3321; Percent complete: 83.0%; Average loss: 3.0046
Iteration: 3322; Percent complete: 83.0%; Average loss: 2.8728
Iteration: 3323; Percent complete: 83.1%; Average loss: 3.0009
Iteration: 3324; Percent complete: 83.1%; Average loss: 2.8239
Iteration: 3325; Percent complete: 83.1%; Average loss: 2.6387
Iteration: 3326; Percent complete: 83.2%; Average loss: 2.7339
Iteration: 3327; Percent complete: 83.2%; Average loss: 2.7873
Iteration: 3328; Percent complete: 83.2%; Average loss: 2.7353
Iteration: 3329; Percent complete: 83.2%; Average loss: 2.6732
Iteration: 3330; Percent complete: 83.2%; Average loss: 2.9801
Iteration: 3331; Percent complete: 83.3%; Average loss: 2.9347
Iteration: 3332; Percent complete: 83.3%; Average loss: 2.7679
Iteration: 3333; Percent complete: 83.3%; Average loss: 2.9384
Iteration: 3334; Percent complete: 83.4%; Average loss: 2.9751
Iteration: 3335; Percent complete: 83.4%; Average loss: 2.5600
Iteration: 3336; Percent complete: 83.4%; Average loss: 2.7513
Iteration: 3337; Percent complete: 83.4%; Average loss: 3.0063
Iteration: 3338; Percent complete: 83.5%; Average loss: 2.9776
Iteration: 3339; Percent complete: 83.5%; Average loss: 2.9802
Iteration: 3340; Percent complete: 83.5%; Average loss: 2.5724
Iteration: 3341; Percent complete: 83.5%; Average loss: 2.6180
Iteration: 3342; Percent complete: 83.5%; Average loss: 2.8074
Iteration: 3343; Percent complete: 83.6%; Average loss: 2.8554
Iteration: 3344; Percent complete: 83.6%; Average loss: 2.7027
Iteration: 3345; Percent complete: 83.6%; Average loss: 2.4525
Iteration: 3346; Percent complete: 83.7%; Average loss: 2.6573
Iteration: 3347; Percent complete: 83.7%; Average loss: 2.8320
Iteration: 3348; Percent complete: 83.7%; Average loss: 2.8179
Iteration: 3349; Percent complete: 83.7%; Average loss: 2.6926
Iteration: 3350; Percent complete: 83.8%; Average loss: 2.7373
Iteration: 3351; Percent complete: 83.8%; Average loss: 2.8590
Iteration: 3352; Percent complete: 83.8%; Average loss: 2.6714
Iteration: 3353; Percent complete: 83.8%; Average loss: 2.9105
Iteration: 3354; Percent complete: 83.9%; Average loss: 2.8235
Iteration: 3355; Percent complete: 83.9%; Average loss: 3.0087
Iteration: 3356; Percent complete: 83.9%; Average loss: 2.7190
Iteration: 3357; Percent complete: 83.9%; Average loss: 2.5479
Iteration: 3358; Percent complete: 84.0%; Average loss: 2.4556
Iteration: 3359; Percent complete: 84.0%; Average loss: 2.8012
Iteration: 3360; Percent complete: 84.0%; Average loss: 2.6544
Iteration: 3361; Percent complete: 84.0%; Average loss: 2.9614
Iteration: 3362; Percent complete: 84.0%; Average loss: 2.6810
Iteration: 3363; Percent complete: 84.1%; Average loss: 2.9058
Iteration: 3364; Percent complete: 84.1%; Average loss: 2.9030
Iteration: 3365; Percent complete: 84.1%; Average loss: 2.6595
Iteration: 3366; Percent complete: 84.2%; Average loss: 2.5416
Iteration: 3367; Percent complete: 84.2%; Average loss: 2.8108
Iteration: 3368; Percent complete: 84.2%; Average loss: 2.6372
Iteration: 3369; Percent complete: 84.2%; Average loss: 2.8206
Iteration: 3370; Percent complete: 84.2%; Average loss: 2.8026
Iteration: 3371; Percent complete: 84.3%; Average loss: 2.7672
Iteration: 3372; Percent complete: 84.3%; Average loss: 2.6234
Iteration: 3373; Percent complete: 84.3%; Average loss: 2.4573
Iteration: 3374; Percent complete: 84.4%; Average loss: 2.9953
Iteration: 3375; Percent complete: 84.4%; Average loss: 2.9841
Iteration: 3376; Percent complete: 84.4%; Average loss: 2.7384
Iteration: 3377; Percent complete: 84.4%; Average loss: 2.8440
Iteration: 3378; Percent complete: 84.5%; Average loss: 2.8853
Iteration: 3379; Percent complete: 84.5%; Average loss: 3.0234
Iteration: 3380; Percent complete: 84.5%; Average loss: 2.8834
Iteration: 3381; Percent complete: 84.5%; Average loss: 2.6846
Iteration: 3382; Percent complete: 84.5%; Average loss: 2.6604
Iteration: 3383; Percent complete: 84.6%; Average loss: 2.6224
Iteration: 3384; Percent complete: 84.6%; Average loss: 2.6794
Iteration: 3385; Percent complete: 84.6%; Average loss: 2.7924
Iteration: 3386; Percent complete: 84.7%; Average loss: 2.6941
Iteration: 3387; Percent complete: 84.7%; Average loss: 2.7740
Iteration: 3388; Percent complete: 84.7%; Average loss: 2.7753
Iteration: 3389; Percent complete: 84.7%; Average loss: 2.7299
Iteration: 3390; Percent complete: 84.8%; Average loss: 2.7328
Iteration: 3391; Percent complete: 84.8%; Average loss: 2.8047
Iteration: 3392; Percent complete: 84.8%; Average loss: 2.7817
Iteration: 3393; Percent complete: 84.8%; Average loss: 2.7174
Iteration: 3394; Percent complete: 84.9%; Average loss: 2.8049
Iteration: 3395; Percent complete: 84.9%; Average loss: 2.6655
Iteration: 3396; Percent complete: 84.9%; Average loss: 2.7204
Iteration: 3397; Percent complete: 84.9%; Average loss: 2.8554
Iteration: 3398; Percent complete: 85.0%; Average loss: 2.8406
Iteration: 3399; Percent complete: 85.0%; Average loss: 2.9535
Iteration: 3400; Percent complete: 85.0%; Average loss: 2.6640
Iteration: 3401; Percent complete: 85.0%; Average loss: 2.7967
Iteration: 3402; Percent complete: 85.0%; Average loss: 2.7708
Iteration: 3403; Percent complete: 85.1%; Average loss: 2.6161
Iteration: 3404; Percent complete: 85.1%; Average loss: 3.0213
Iteration: 3405; Percent complete: 85.1%; Average loss: 2.7013
Iteration: 3406; Percent complete: 85.2%; Average loss: 2.7775
Iteration: 3407; Percent complete: 85.2%; Average loss: 2.7898
Iteration: 3408; Percent complete: 85.2%; Average loss: 2.6115
Iteration: 3409; Percent complete: 85.2%; Average loss: 2.8597
Iteration: 3410; Percent complete: 85.2%; Average loss: 2.9997
Iteration: 3411; Percent complete: 85.3%; Average loss: 2.8141
Iteration: 3412; Percent complete: 85.3%; Average loss: 2.8401
Iteration: 3413; Percent complete: 85.3%; Average loss: 2.7250
Iteration: 3414; Percent complete: 85.4%; Average loss: 2.8816
Iteration: 3415; Percent complete: 85.4%; Average loss: 2.7123
Iteration: 3416; Percent complete: 85.4%; Average loss: 2.8894
Iteration: 3417; Percent complete: 85.4%; Average loss: 2.5748
Iteration: 3418; Percent complete: 85.5%; Average loss: 3.0192
Iteration: 3419; Percent complete: 85.5%; Average loss: 2.9752
Iteration: 3420; Percent complete: 85.5%; Average loss: 2.7181
Iteration: 3421; Percent complete: 85.5%; Average loss: 2.6595
Iteration: 3422; Percent complete: 85.5%; Average loss: 2.4863
Iteration: 3423; Percent complete: 85.6%; Average loss: 2.8345
Iteration: 3424; Percent complete: 85.6%; Average loss: 2.8755
Iteration: 3425; Percent complete: 85.6%; Average loss: 2.8255
Iteration: 3426; Percent complete: 85.7%; Average loss: 2.9485
Iteration: 3427; Percent complete: 85.7%; Average loss: 2.7626
Iteration: 3428; Percent complete: 85.7%; Average loss: 2.7899
Iteration: 3429; Percent complete: 85.7%; Average loss: 2.8026
Iteration: 3430; Percent complete: 85.8%; Average loss: 2.8465
Iteration: 3431; Percent complete: 85.8%; Average loss: 2.6793
Iteration: 3432; Percent complete: 85.8%; Average loss: 2.8408
Iteration: 3433; Percent complete: 85.8%; Average loss: 2.7349
Iteration: 3434; Percent complete: 85.9%; Average loss: 2.8249
Iteration: 3435; Percent complete: 85.9%; Average loss: 2.8336
Iteration: 3436; Percent complete: 85.9%; Average loss: 2.7261
Iteration: 3437; Percent complete: 85.9%; Average loss: 2.8402
Iteration: 3438; Percent complete: 86.0%; Average loss: 2.7069
Iteration: 3439; Percent complete: 86.0%; Average loss: 2.6607
Iteration: 3440; Percent complete: 86.0%; Average loss: 2.7467
Iteration: 3441; Percent complete: 86.0%; Average loss: 2.9448
Iteration: 3442; Percent complete: 86.1%; Average loss: 2.8681
Iteration: 3443; Percent complete: 86.1%; Average loss: 2.8738
Iteration: 3444; Percent complete: 86.1%; Average loss: 2.8173
Iteration: 3445; Percent complete: 86.1%; Average loss: 2.8469
Iteration: 3446; Percent complete: 86.2%; Average loss: 2.7472
Iteration: 3447; Percent complete: 86.2%; Average loss: 2.7954
Iteration: 3448; Percent complete: 86.2%; Average loss: 2.7072
Iteration: 3449; Percent complete: 86.2%; Average loss: 2.5905
Iteration: 3450; Percent complete: 86.2%; Average loss: 2.5758
Iteration: 3451; Percent complete: 86.3%; Average loss: 3.0044
Iteration: 3452; Percent complete: 86.3%; Average loss: 2.7904
Iteration: 3453; Percent complete: 86.3%; Average loss: 2.7993
Iteration: 3454; Percent complete: 86.4%; Average loss: 2.6122
Iteration: 3455; Percent complete: 86.4%; Average loss: 2.7726
Iteration: 3456; Percent complete: 86.4%; Average loss: 2.8104
Iteration: 3457; Percent complete: 86.4%; Average loss: 2.8232
Iteration: 3458; Percent complete: 86.5%; Average loss: 2.5644
Iteration: 3459; Percent complete: 86.5%; Average loss: 2.8328
Iteration: 3460; Percent complete: 86.5%; Average loss: 2.6664
Iteration: 3461; Percent complete: 86.5%; Average loss: 2.8304
Iteration: 3462; Percent complete: 86.6%; Average loss: 2.9252
Iteration: 3463; Percent complete: 86.6%; Average loss: 2.6962
Iteration: 3464; Percent complete: 86.6%; Average loss: 2.5979
Iteration: 3465; Percent complete: 86.6%; Average loss: 2.9462
Iteration: 3466; Percent complete: 86.7%; Average loss: 2.7088
Iteration: 3467; Percent complete: 86.7%; Average loss: 2.7608
Iteration: 3468; Percent complete: 86.7%; Average loss: 2.4718
Iteration: 3469; Percent complete: 86.7%; Average loss: 2.6991
Iteration: 3470; Percent complete: 86.8%; Average loss: 2.5704
Iteration: 3471; Percent complete: 86.8%; Average loss: 3.0580
Iteration: 3472; Percent complete: 86.8%; Average loss: 2.7719
Iteration: 3473; Percent complete: 86.8%; Average loss: 2.4440
Iteration: 3474; Percent complete: 86.9%; Average loss: 2.6198
Iteration: 3475; Percent complete: 86.9%; Average loss: 2.7791
Iteration: 3476; Percent complete: 86.9%; Average loss: 2.7811
Iteration: 3477; Percent complete: 86.9%; Average loss: 2.6923
Iteration: 3478; Percent complete: 87.0%; Average loss: 2.7642
Iteration: 3479; Percent complete: 87.0%; Average loss: 2.7881
Iteration: 3480; Percent complete: 87.0%; Average loss: 2.8239
Iteration: 3481; Percent complete: 87.0%; Average loss: 2.6705
Iteration: 3482; Percent complete: 87.1%; Average loss: 2.8210
Iteration: 3483; Percent complete: 87.1%; Average loss: 2.6707
Iteration: 3484; Percent complete: 87.1%; Average loss: 2.8185
Iteration: 3485; Percent complete: 87.1%; Average loss: 2.7985
Iteration: 3486; Percent complete: 87.2%; Average loss: 2.7844
Iteration: 3487; Percent complete: 87.2%; Average loss: 2.8306
Iteration: 3488; Percent complete: 87.2%; Average loss: 3.1132
Iteration: 3489; Percent complete: 87.2%; Average loss: 2.6521
Iteration: 3490; Percent complete: 87.2%; Average loss: 2.4139
Iteration: 3491; Percent complete: 87.3%; Average loss: 2.6487
Iteration: 3492; Percent complete: 87.3%; Average loss: 2.6204
Iteration: 3493; Percent complete: 87.3%; Average loss: 2.7592
Iteration: 3494; Percent complete: 87.4%; Average loss: 2.6602
Iteration: 3495; Percent complete: 87.4%; Average loss: 2.5900
Iteration: 3496; Percent complete: 87.4%; Average loss: 2.5858
Iteration: 3497; Percent complete: 87.4%; Average loss: 2.6409
Iteration: 3498; Percent complete: 87.5%; Average loss: 2.5494
Iteration: 3499; Percent complete: 87.5%; Average loss: 2.7200
Iteration: 3500; Percent complete: 87.5%; Average loss: 2.6720
Iteration: 3501; Percent complete: 87.5%; Average loss: 2.7163
Iteration: 3502; Percent complete: 87.5%; Average loss: 2.7596
Iteration: 3503; Percent complete: 87.6%; Average loss: 2.7312
Iteration: 3504; Percent complete: 87.6%; Average loss: 2.7443
Iteration: 3505; Percent complete: 87.6%; Average loss: 2.8204
Iteration: 3506; Percent complete: 87.6%; Average loss: 2.7911
Iteration: 3507; Percent complete: 87.7%; Average loss: 2.9469
Iteration: 3508; Percent complete: 87.7%; Average loss: 2.7480
Iteration: 3509; Percent complete: 87.7%; Average loss: 2.6906
Iteration: 3510; Percent complete: 87.8%; Average loss: 2.8618
Iteration: 3511; Percent complete: 87.8%; Average loss: 2.8359
Iteration: 3512; Percent complete: 87.8%; Average loss: 2.5062
Iteration: 3513; Percent complete: 87.8%; Average loss: 2.7921
Iteration: 3514; Percent complete: 87.8%; Average loss: 2.6098
Iteration: 3515; Percent complete: 87.9%; Average loss: 2.6168
Iteration: 3516; Percent complete: 87.9%; Average loss: 2.5469
Iteration: 3517; Percent complete: 87.9%; Average loss: 2.7013
Iteration: 3518; Percent complete: 87.9%; Average loss: 2.8768
Iteration: 3519; Percent complete: 88.0%; Average loss: 2.8726
Iteration: 3520; Percent complete: 88.0%; Average loss: 2.9047
Iteration: 3521; Percent complete: 88.0%; Average loss: 2.8708
Iteration: 3522; Percent complete: 88.0%; Average loss: 3.1170
Iteration: 3523; Percent complete: 88.1%; Average loss: 2.7559
Iteration: 3524; Percent complete: 88.1%; Average loss: 2.8676
Iteration: 3525; Percent complete: 88.1%; Average loss: 2.6612
Iteration: 3526; Percent complete: 88.1%; Average loss: 2.8355
Iteration: 3527; Percent complete: 88.2%; Average loss: 2.7610
Iteration: 3528; Percent complete: 88.2%; Average loss: 2.7662
Iteration: 3529; Percent complete: 88.2%; Average loss: 2.7512
Iteration: 3530; Percent complete: 88.2%; Average loss: 2.9301
Iteration: 3531; Percent complete: 88.3%; Average loss: 2.7874
Iteration: 3532; Percent complete: 88.3%; Average loss: 2.5787
Iteration: 3533; Percent complete: 88.3%; Average loss: 2.7850
Iteration: 3534; Percent complete: 88.3%; Average loss: 2.7126
Iteration: 3535; Percent complete: 88.4%; Average loss: 2.7459
Iteration: 3536; Percent complete: 88.4%; Average loss: 2.9294
Iteration: 3537; Percent complete: 88.4%; Average loss: 2.5340
Iteration: 3538; Percent complete: 88.4%; Average loss: 2.6260
Iteration: 3539; Percent complete: 88.5%; Average loss: 2.8287
Iteration: 3540; Percent complete: 88.5%; Average loss: 2.6459
Iteration: 3541; Percent complete: 88.5%; Average loss: 2.8550
Iteration: 3542; Percent complete: 88.5%; Average loss: 2.5899
Iteration: 3543; Percent complete: 88.6%; Average loss: 2.8788
Iteration: 3544; Percent complete: 88.6%; Average loss: 2.5765
Iteration: 3545; Percent complete: 88.6%; Average loss: 2.7901
Iteration: 3546; Percent complete: 88.6%; Average loss: 2.6997
Iteration: 3547; Percent complete: 88.7%; Average loss: 2.8477
Iteration: 3548; Percent complete: 88.7%; Average loss: 2.9909
Iteration: 3549; Percent complete: 88.7%; Average loss: 2.8567
Iteration: 3550; Percent complete: 88.8%; Average loss: 2.8606
Iteration: 3551; Percent complete: 88.8%; Average loss: 2.8080
Iteration: 3552; Percent complete: 88.8%; Average loss: 2.8942
Iteration: 3553; Percent complete: 88.8%; Average loss: 2.8278
Iteration: 3554; Percent complete: 88.8%; Average loss: 2.8610
Iteration: 3555; Percent complete: 88.9%; Average loss: 2.8320
Iteration: 3556; Percent complete: 88.9%; Average loss: 2.6372
Iteration: 3557; Percent complete: 88.9%; Average loss: 2.6317
Iteration: 3558; Percent complete: 88.9%; Average loss: 2.6140
Iteration: 3559; Percent complete: 89.0%; Average loss: 3.0410
Iteration: 3560; Percent complete: 89.0%; Average loss: 2.7379
Iteration: 3561; Percent complete: 89.0%; Average loss: 2.7798
Iteration: 3562; Percent complete: 89.0%; Average loss: 2.8355
Iteration: 3563; Percent complete: 89.1%; Average loss: 2.8215
Iteration: 3564; Percent complete: 89.1%; Average loss: 2.6736
Iteration: 3565; Percent complete: 89.1%; Average loss: 2.8057
Iteration: 3566; Percent complete: 89.1%; Average loss: 2.7152
Iteration: 3567; Percent complete: 89.2%; Average loss: 2.9272
Iteration: 3568; Percent complete: 89.2%; Average loss: 2.6022
Iteration: 3569; Percent complete: 89.2%; Average loss: 2.7309
Iteration: 3570; Percent complete: 89.2%; Average loss: 2.8384
Iteration: 3571; Percent complete: 89.3%; Average loss: 2.8851
Iteration: 3572; Percent complete: 89.3%; Average loss: 2.8461
Iteration: 3573; Percent complete: 89.3%; Average loss: 3.0362
Iteration: 3574; Percent complete: 89.3%; Average loss: 2.9118
Iteration: 3575; Percent complete: 89.4%; Average loss: 2.6766
Iteration: 3576; Percent complete: 89.4%; Average loss: 2.9396
Iteration: 3577; Percent complete: 89.4%; Average loss: 2.7340
Iteration: 3578; Percent complete: 89.5%; Average loss: 2.7063
Iteration: 3579; Percent complete: 89.5%; Average loss: 2.7147
Iteration: 3580; Percent complete: 89.5%; Average loss: 3.0200
Iteration: 3581; Percent complete: 89.5%; Average loss: 2.6899
Iteration: 3582; Percent complete: 89.5%; Average loss: 2.7638
Iteration: 3583; Percent complete: 89.6%; Average loss: 2.6044
Iteration: 3584; Percent complete: 89.6%; Average loss: 2.7298
Iteration: 3585; Percent complete: 89.6%; Average loss: 2.7614
Iteration: 3586; Percent complete: 89.6%; Average loss: 2.4114
Iteration: 3587; Percent complete: 89.7%; Average loss: 2.7286
Iteration: 3588; Percent complete: 89.7%; Average loss: 2.7075
Iteration: 3589; Percent complete: 89.7%; Average loss: 2.6162
Iteration: 3590; Percent complete: 89.8%; Average loss: 2.7386
Iteration: 3591; Percent complete: 89.8%; Average loss: 2.6989
Iteration: 3592; Percent complete: 89.8%; Average loss: 2.6732
Iteration: 3593; Percent complete: 89.8%; Average loss: 2.8108
Iteration: 3594; Percent complete: 89.8%; Average loss: 2.8565
Iteration: 3595; Percent complete: 89.9%; Average loss: 2.7946
Iteration: 3596; Percent complete: 89.9%; Average loss: 3.0089
Iteration: 3597; Percent complete: 89.9%; Average loss: 2.6279
Iteration: 3598; Percent complete: 90.0%; Average loss: 2.8314
Iteration: 3599; Percent complete: 90.0%; Average loss: 2.6598
Iteration: 3600; Percent complete: 90.0%; Average loss: 2.7648
Iteration: 3601; Percent complete: 90.0%; Average loss: 2.5402
Iteration: 3602; Percent complete: 90.0%; Average loss: 2.5389
Iteration: 3603; Percent complete: 90.1%; Average loss: 2.7983
Iteration: 3604; Percent complete: 90.1%; Average loss: 2.7628
Iteration: 3605; Percent complete: 90.1%; Average loss: 2.7221
Iteration: 3606; Percent complete: 90.1%; Average loss: 2.6466
Iteration: 3607; Percent complete: 90.2%; Average loss: 2.6100
Iteration: 3608; Percent complete: 90.2%; Average loss: 2.5764
Iteration: 3609; Percent complete: 90.2%; Average loss: 2.6835
Iteration: 3610; Percent complete: 90.2%; Average loss: 2.8244
Iteration: 3611; Percent complete: 90.3%; Average loss: 2.9182
Iteration: 3612; Percent complete: 90.3%; Average loss: 2.6517
Iteration: 3613; Percent complete: 90.3%; Average loss: 2.7013
Iteration: 3614; Percent complete: 90.3%; Average loss: 2.6401
Iteration: 3615; Percent complete: 90.4%; Average loss: 2.8516
Iteration: 3616; Percent complete: 90.4%; Average loss: 2.8123
Iteration: 3617; Percent complete: 90.4%; Average loss: 2.9108
Iteration: 3618; Percent complete: 90.5%; Average loss: 2.7267
Iteration: 3619; Percent complete: 90.5%; Average loss: 2.7662
Iteration: 3620; Percent complete: 90.5%; Average loss: 2.6778
Iteration: 3621; Percent complete: 90.5%; Average loss: 2.6348
Iteration: 3622; Percent complete: 90.5%; Average loss: 2.6747
Iteration: 3623; Percent complete: 90.6%; Average loss: 2.7144
Iteration: 3624; Percent complete: 90.6%; Average loss: 2.9864
Iteration: 3625; Percent complete: 90.6%; Average loss: 2.7164
Iteration: 3626; Percent complete: 90.6%; Average loss: 2.6071
Iteration: 3627; Percent complete: 90.7%; Average loss: 2.8184
Iteration: 3628; Percent complete: 90.7%; Average loss: 2.6309
Iteration: 3629; Percent complete: 90.7%; Average loss: 2.6569
Iteration: 3630; Percent complete: 90.8%; Average loss: 2.5672
Iteration: 3631; Percent complete: 90.8%; Average loss: 2.6873
Iteration: 3632; Percent complete: 90.8%; Average loss: 2.6012
Iteration: 3633; Percent complete: 90.8%; Average loss: 2.4427
Iteration: 3634; Percent complete: 90.8%; Average loss: 2.8365
Iteration: 3635; Percent complete: 90.9%; Average loss: 2.8504
Iteration: 3636; Percent complete: 90.9%; Average loss: 2.6796
Iteration: 3637; Percent complete: 90.9%; Average loss: 2.6758
Iteration: 3638; Percent complete: 91.0%; Average loss: 2.8730
Iteration: 3639; Percent complete: 91.0%; Average loss: 2.8273
Iteration: 3640; Percent complete: 91.0%; Average loss: 2.7344
Iteration: 3641; Percent complete: 91.0%; Average loss: 2.6402
Iteration: 3642; Percent complete: 91.0%; Average loss: 2.7121
Iteration: 3643; Percent complete: 91.1%; Average loss: 2.8056
Iteration: 3644; Percent complete: 91.1%; Average loss: 2.6174
Iteration: 3645; Percent complete: 91.1%; Average loss: 2.8500
Iteration: 3646; Percent complete: 91.1%; Average loss: 2.5030
Iteration: 3647; Percent complete: 91.2%; Average loss: 2.5810
Iteration: 3648; Percent complete: 91.2%; Average loss: 2.7504
Iteration: 3649; Percent complete: 91.2%; Average loss: 2.8266
Iteration: 3650; Percent complete: 91.2%; Average loss: 2.4768
Iteration: 3651; Percent complete: 91.3%; Average loss: 2.9129
Iteration: 3652; Percent complete: 91.3%; Average loss: 2.8645
Iteration: 3653; Percent complete: 91.3%; Average loss: 2.7685
Iteration: 3654; Percent complete: 91.3%; Average loss: 2.5624
Iteration: 3655; Percent complete: 91.4%; Average loss: 2.6051
Iteration: 3656; Percent complete: 91.4%; Average loss: 2.7336
Iteration: 3657; Percent complete: 91.4%; Average loss: 2.4216
Iteration: 3658; Percent complete: 91.5%; Average loss: 2.8978
Iteration: 3659; Percent complete: 91.5%; Average loss: 2.5845
Iteration: 3660; Percent complete: 91.5%; Average loss: 2.5773
Iteration: 3661; Percent complete: 91.5%; Average loss: 2.7689
Iteration: 3662; Percent complete: 91.5%; Average loss: 2.5163
Iteration: 3663; Percent complete: 91.6%; Average loss: 2.6596
Iteration: 3664; Percent complete: 91.6%; Average loss: 2.7167
Iteration: 3665; Percent complete: 91.6%; Average loss: 2.7671
Iteration: 3666; Percent complete: 91.6%; Average loss: 2.8112
Iteration: 3667; Percent complete: 91.7%; Average loss: 2.7090
Iteration: 3668; Percent complete: 91.7%; Average loss: 2.5884
Iteration: 3669; Percent complete: 91.7%; Average loss: 2.6506
Iteration: 3670; Percent complete: 91.8%; Average loss: 2.5689
Iteration: 3671; Percent complete: 91.8%; Average loss: 2.7311
Iteration: 3672; Percent complete: 91.8%; Average loss: 2.7123
Iteration: 3673; Percent complete: 91.8%; Average loss: 2.8758
Iteration: 3674; Percent complete: 91.8%; Average loss: 2.7133
Iteration: 3675; Percent complete: 91.9%; Average loss: 2.8349
Iteration: 3676; Percent complete: 91.9%; Average loss: 2.6373
Iteration: 3677; Percent complete: 91.9%; Average loss: 2.8591
Iteration: 3678; Percent complete: 92.0%; Average loss: 2.5873
Iteration: 3679; Percent complete: 92.0%; Average loss: 2.6120
Iteration: 3680; Percent complete: 92.0%; Average loss: 2.7672
Iteration: 3681; Percent complete: 92.0%; Average loss: 2.6883
Iteration: 3682; Percent complete: 92.0%; Average loss: 2.7915
Iteration: 3683; Percent complete: 92.1%; Average loss: 2.6473
Iteration: 3684; Percent complete: 92.1%; Average loss: 2.7358
Iteration: 3685; Percent complete: 92.1%; Average loss: 2.8190
Iteration: 3686; Percent complete: 92.2%; Average loss: 2.7850
Iteration: 3687; Percent complete: 92.2%; Average loss: 2.8133
Iteration: 3688; Percent complete: 92.2%; Average loss: 2.7788
Iteration: 3689; Percent complete: 92.2%; Average loss: 2.6773
Iteration: 3690; Percent complete: 92.2%; Average loss: 2.5675
Iteration: 3691; Percent complete: 92.3%; Average loss: 2.8387
Iteration: 3692; Percent complete: 92.3%; Average loss: 2.7262
Iteration: 3693; Percent complete: 92.3%; Average loss: 2.7366
Iteration: 3694; Percent complete: 92.3%; Average loss: 2.6363
Iteration: 3695; Percent complete: 92.4%; Average loss: 2.6683
Iteration: 3696; Percent complete: 92.4%; Average loss: 2.6788
Iteration: 3697; Percent complete: 92.4%; Average loss: 2.5709
Iteration: 3698; Percent complete: 92.5%; Average loss: 2.9124
Iteration: 3699; Percent complete: 92.5%; Average loss: 2.6450
Iteration: 3700; Percent complete: 92.5%; Average loss: 2.4612
Iteration: 3701; Percent complete: 92.5%; Average loss: 2.8257
Iteration: 3702; Percent complete: 92.5%; Average loss: 2.5446
Iteration: 3703; Percent complete: 92.6%; Average loss: 2.6667
Iteration: 3704; Percent complete: 92.6%; Average loss: 2.8471
Iteration: 3705; Percent complete: 92.6%; Average loss: 2.8430
Iteration: 3706; Percent complete: 92.7%; Average loss: 2.7194
Iteration: 3707; Percent complete: 92.7%; Average loss: 2.6570
Iteration: 3708; Percent complete: 92.7%; Average loss: 2.8474
Iteration: 3709; Percent complete: 92.7%; Average loss: 2.4262
Iteration: 3710; Percent complete: 92.8%; Average loss: 2.6800
Iteration: 3711; Percent complete: 92.8%; Average loss: 2.6894
Iteration: 3712; Percent complete: 92.8%; Average loss: 2.6992
Iteration: 3713; Percent complete: 92.8%; Average loss: 2.7174
Iteration: 3714; Percent complete: 92.8%; Average loss: 2.5818
Iteration: 3715; Percent complete: 92.9%; Average loss: 2.6703
Iteration: 3716; Percent complete: 92.9%; Average loss: 2.5048
Iteration: 3717; Percent complete: 92.9%; Average loss: 2.7490
Iteration: 3718; Percent complete: 93.0%; Average loss: 2.6542
Iteration: 3719; Percent complete: 93.0%; Average loss: 2.7477
Iteration: 3720; Percent complete: 93.0%; Average loss: 2.4950
Iteration: 3721; Percent complete: 93.0%; Average loss: 2.6997
Iteration: 3722; Percent complete: 93.0%; Average loss: 2.6816
Iteration: 3723; Percent complete: 93.1%; Average loss: 2.4302
Iteration: 3724; Percent complete: 93.1%; Average loss: 2.5426
Iteration: 3725; Percent complete: 93.1%; Average loss: 2.4839
Iteration: 3726; Percent complete: 93.2%; Average loss: 2.7340
Iteration: 3727; Percent complete: 93.2%; Average loss: 2.6138
Iteration: 3728; Percent complete: 93.2%; Average loss: 2.7054
Iteration: 3729; Percent complete: 93.2%; Average loss: 2.7504
Iteration: 3730; Percent complete: 93.2%; Average loss: 2.7205
Iteration: 3731; Percent complete: 93.3%; Average loss: 2.7578
Iteration: 3732; Percent complete: 93.3%; Average loss: 2.8587
Iteration: 3733; Percent complete: 93.3%; Average loss: 2.9270
Iteration: 3734; Percent complete: 93.3%; Average loss: 2.7222
Iteration: 3735; Percent complete: 93.4%; Average loss: 2.7213
Iteration: 3736; Percent complete: 93.4%; Average loss: 2.6702
Iteration: 3737; Percent complete: 93.4%; Average loss: 2.6471
Iteration: 3738; Percent complete: 93.5%; Average loss: 2.6078
Iteration: 3739; Percent complete: 93.5%; Average loss: 2.7186
Iteration: 3740; Percent complete: 93.5%; Average loss: 2.6023
Iteration: 3741; Percent complete: 93.5%; Average loss: 2.9626
Iteration: 3742; Percent complete: 93.5%; Average loss: 2.8468
Iteration: 3743; Percent complete: 93.6%; Average loss: 2.7226
Iteration: 3744; Percent complete: 93.6%; Average loss: 2.8998
Iteration: 3745; Percent complete: 93.6%; Average loss: 2.8648
Iteration: 3746; Percent complete: 93.7%; Average loss: 3.0555
Iteration: 3747; Percent complete: 93.7%; Average loss: 2.7035
Iteration: 3748; Percent complete: 93.7%; Average loss: 2.7067
Iteration: 3749; Percent complete: 93.7%; Average loss: 2.7013
Iteration: 3750; Percent complete: 93.8%; Average loss: 2.5435
Iteration: 3751; Percent complete: 93.8%; Average loss: 2.6595
Iteration: 3752; Percent complete: 93.8%; Average loss: 2.5083
Iteration: 3753; Percent complete: 93.8%; Average loss: 2.5779
Iteration: 3754; Percent complete: 93.8%; Average loss: 2.6909
Iteration: 3755; Percent complete: 93.9%; Average loss: 2.6591
Iteration: 3756; Percent complete: 93.9%; Average loss: 2.5542
Iteration: 3757; Percent complete: 93.9%; Average loss: 2.6636
Iteration: 3758; Percent complete: 94.0%; Average loss: 2.5661
Iteration: 3759; Percent complete: 94.0%; Average loss: 2.6147
Iteration: 3760; Percent complete: 94.0%; Average loss: 2.7017
Iteration: 3761; Percent complete: 94.0%; Average loss: 2.7625
Iteration: 3762; Percent complete: 94.0%; Average loss: 2.7397
Iteration: 3763; Percent complete: 94.1%; Average loss: 2.6138
Iteration: 3764; Percent complete: 94.1%; Average loss: 2.5307
Iteration: 3765; Percent complete: 94.1%; Average loss: 2.8562
Iteration: 3766; Percent complete: 94.2%; Average loss: 2.6652
Iteration: 3767; Percent complete: 94.2%; Average loss: 2.8562
Iteration: 3768; Percent complete: 94.2%; Average loss: 2.7857
Iteration: 3769; Percent complete: 94.2%; Average loss: 2.5083
Iteration: 3770; Percent complete: 94.2%; Average loss: 2.8911
Iteration: 3771; Percent complete: 94.3%; Average loss: 2.6249
Iteration: 3772; Percent complete: 94.3%; Average loss: 2.7005
Iteration: 3773; Percent complete: 94.3%; Average loss: 2.6009
Iteration: 3774; Percent complete: 94.3%; Average loss: 2.5665
Iteration: 3775; Percent complete: 94.4%; Average loss: 2.5138
Iteration: 3776; Percent complete: 94.4%; Average loss: 2.6655
Iteration: 3777; Percent complete: 94.4%; Average loss: 2.8657
Iteration: 3778; Percent complete: 94.5%; Average loss: 2.5001
Iteration: 3779; Percent complete: 94.5%; Average loss: 2.6228
Iteration: 3780; Percent complete: 94.5%; Average loss: 2.5617
Iteration: 3781; Percent complete: 94.5%; Average loss: 2.6953
Iteration: 3782; Percent complete: 94.5%; Average loss: 2.4952
Iteration: 3783; Percent complete: 94.6%; Average loss: 2.5539
Iteration: 3784; Percent complete: 94.6%; Average loss: 2.7657
Iteration: 3785; Percent complete: 94.6%; Average loss: 2.6469
Iteration: 3786; Percent complete: 94.7%; Average loss: 2.4009
Iteration: 3787; Percent complete: 94.7%; Average loss: 2.6236
Iteration: 3788; Percent complete: 94.7%; Average loss: 2.6385
Iteration: 3789; Percent complete: 94.7%; Average loss: 2.5184
Iteration: 3790; Percent complete: 94.8%; Average loss: 2.6221
Iteration: 3791; Percent complete: 94.8%; Average loss: 2.6313
Iteration: 3792; Percent complete: 94.8%; Average loss: 2.5371
Iteration: 3793; Percent complete: 94.8%; Average loss: 2.8493
Iteration: 3794; Percent complete: 94.8%; Average loss: 2.8268
Iteration: 3795; Percent complete: 94.9%; Average loss: 2.6625
Iteration: 3796; Percent complete: 94.9%; Average loss: 2.3860
Iteration: 3797; Percent complete: 94.9%; Average loss: 2.4374
Iteration: 3798; Percent complete: 95.0%; Average loss: 2.9135
Iteration: 3799; Percent complete: 95.0%; Average loss: 2.5645
Iteration: 3800; Percent complete: 95.0%; Average loss: 2.7008
Iteration: 3801; Percent complete: 95.0%; Average loss: 2.7151
Iteration: 3802; Percent complete: 95.0%; Average loss: 2.7126
Iteration: 3803; Percent complete: 95.1%; Average loss: 2.8037
Iteration: 3804; Percent complete: 95.1%; Average loss: 2.6022
Iteration: 3805; Percent complete: 95.1%; Average loss: 2.5613
Iteration: 3806; Percent complete: 95.2%; Average loss: 2.5516
Iteration: 3807; Percent complete: 95.2%; Average loss: 2.6314
Iteration: 3808; Percent complete: 95.2%; Average loss: 2.5786
Iteration: 3809; Percent complete: 95.2%; Average loss: 2.7161
Iteration: 3810; Percent complete: 95.2%; Average loss: 2.5971
Iteration: 3811; Percent complete: 95.3%; Average loss: 2.5140
Iteration: 3812; Percent complete: 95.3%; Average loss: 2.7214
Iteration: 3813; Percent complete: 95.3%; Average loss: 2.5879
Iteration: 3814; Percent complete: 95.3%; Average loss: 2.7323
Iteration: 3815; Percent complete: 95.4%; Average loss: 2.4288
Iteration: 3816; Percent complete: 95.4%; Average loss: 2.3905
Iteration: 3817; Percent complete: 95.4%; Average loss: 2.8395
Iteration: 3818; Percent complete: 95.5%; Average loss: 2.6922
Iteration: 3819; Percent complete: 95.5%; Average loss: 2.4721
Iteration: 3820; Percent complete: 95.5%; Average loss: 2.6364
Iteration: 3821; Percent complete: 95.5%; Average loss: 2.7145
Iteration: 3822; Percent complete: 95.5%; Average loss: 2.9123
Iteration: 3823; Percent complete: 95.6%; Average loss: 2.8346
Iteration: 3824; Percent complete: 95.6%; Average loss: 2.6357
Iteration: 3825; Percent complete: 95.6%; Average loss: 2.6206
Iteration: 3826; Percent complete: 95.7%; Average loss: 2.6325
Iteration: 3827; Percent complete: 95.7%; Average loss: 2.6916
Iteration: 3828; Percent complete: 95.7%; Average loss: 2.7359
Iteration: 3829; Percent complete: 95.7%; Average loss: 2.5711
Iteration: 3830; Percent complete: 95.8%; Average loss: 2.5284
Iteration: 3831; Percent complete: 95.8%; Average loss: 2.5201
Iteration: 3832; Percent complete: 95.8%; Average loss: 2.5575
Iteration: 3833; Percent complete: 95.8%; Average loss: 2.6967
Iteration: 3834; Percent complete: 95.9%; Average loss: 2.6176
Iteration: 3835; Percent complete: 95.9%; Average loss: 2.6494
Iteration: 3836; Percent complete: 95.9%; Average loss: 2.7287
Iteration: 3837; Percent complete: 95.9%; Average loss: 2.6330
Iteration: 3838; Percent complete: 96.0%; Average loss: 2.5388
Iteration: 3839; Percent complete: 96.0%; Average loss: 2.6551
Iteration: 3840; Percent complete: 96.0%; Average loss: 2.7726
Iteration: 3841; Percent complete: 96.0%; Average loss: 2.6993
Iteration: 3842; Percent complete: 96.0%; Average loss: 2.5991
Iteration: 3843; Percent complete: 96.1%; Average loss: 2.8557
Iteration: 3844; Percent complete: 96.1%; Average loss: 2.7503
Iteration: 3845; Percent complete: 96.1%; Average loss: 2.6678
Iteration: 3846; Percent complete: 96.2%; Average loss: 2.6106
Iteration: 3847; Percent complete: 96.2%; Average loss: 2.5073
Iteration: 3848; Percent complete: 96.2%; Average loss: 2.8810
Iteration: 3849; Percent complete: 96.2%; Average loss: 2.8745
Iteration: 3850; Percent complete: 96.2%; Average loss: 2.5725
Iteration: 3851; Percent complete: 96.3%; Average loss: 2.6830
Iteration: 3852; Percent complete: 96.3%; Average loss: 2.6917
Iteration: 3853; Percent complete: 96.3%; Average loss: 2.5075
Iteration: 3854; Percent complete: 96.4%; Average loss: 2.7758
Iteration: 3855; Percent complete: 96.4%; Average loss: 2.6969
Iteration: 3856; Percent complete: 96.4%; Average loss: 2.6698
Iteration: 3857; Percent complete: 96.4%; Average loss: 2.6776
Iteration: 3858; Percent complete: 96.5%; Average loss: 2.6811
Iteration: 3859; Percent complete: 96.5%; Average loss: 2.5248
Iteration: 3860; Percent complete: 96.5%; Average loss: 2.6718
Iteration: 3861; Percent complete: 96.5%; Average loss: 2.5831
Iteration: 3862; Percent complete: 96.5%; Average loss: 2.5664
Iteration: 3863; Percent complete: 96.6%; Average loss: 2.5255
Iteration: 3864; Percent complete: 96.6%; Average loss: 2.4772
Iteration: 3865; Percent complete: 96.6%; Average loss: 2.6524
Iteration: 3866; Percent complete: 96.7%; Average loss: 2.6471
Iteration: 3867; Percent complete: 96.7%; Average loss: 2.6476
Iteration: 3868; Percent complete: 96.7%; Average loss: 2.9476
Iteration: 3869; Percent complete: 96.7%; Average loss: 2.6810
Iteration: 3870; Percent complete: 96.8%; Average loss: 2.6436
Iteration: 3871; Percent complete: 96.8%; Average loss: 2.6814
Iteration: 3872; Percent complete: 96.8%; Average loss: 2.9034
Iteration: 3873; Percent complete: 96.8%; Average loss: 2.5310
Iteration: 3874; Percent complete: 96.9%; Average loss: 2.5421
Iteration: 3875; Percent complete: 96.9%; Average loss: 2.5524
Iteration: 3876; Percent complete: 96.9%; Average loss: 2.8562
Iteration: 3877; Percent complete: 96.9%; Average loss: 2.5371
Iteration: 3878; Percent complete: 97.0%; Average loss: 2.6829
Iteration: 3879; Percent complete: 97.0%; Average loss: 2.5408
Iteration: 3880; Percent complete: 97.0%; Average loss: 2.5973
Iteration: 3881; Percent complete: 97.0%; Average loss: 2.9697
Iteration: 3882; Percent complete: 97.0%; Average loss: 2.5783
Iteration: 3883; Percent complete: 97.1%; Average loss: 2.6535
Iteration: 3884; Percent complete: 97.1%; Average loss: 2.6010
Iteration: 3885; Percent complete: 97.1%; Average loss: 2.7076
Iteration: 3886; Percent complete: 97.2%; Average loss: 2.7900
Iteration: 3887; Percent complete: 97.2%; Average loss: 2.6427
Iteration: 3888; Percent complete: 97.2%; Average loss: 2.4965
Iteration: 3889; Percent complete: 97.2%; Average loss: 2.6037
Iteration: 3890; Percent complete: 97.2%; Average loss: 2.8009
Iteration: 3891; Percent complete: 97.3%; Average loss: 2.7477
Iteration: 3892; Percent complete: 97.3%; Average loss: 2.6942
Iteration: 3893; Percent complete: 97.3%; Average loss: 2.7080
Iteration: 3894; Percent complete: 97.4%; Average loss: 2.5550
Iteration: 3895; Percent complete: 97.4%; Average loss: 2.6863
Iteration: 3896; Percent complete: 97.4%; Average loss: 2.6794
Iteration: 3897; Percent complete: 97.4%; Average loss: 2.7341
Iteration: 3898; Percent complete: 97.5%; Average loss: 2.7724
Iteration: 3899; Percent complete: 97.5%; Average loss: 2.5887
Iteration: 3900; Percent complete: 97.5%; Average loss: 2.4887
Iteration: 3901; Percent complete: 97.5%; Average loss: 2.8475
Iteration: 3902; Percent complete: 97.5%; Average loss: 2.6156
Iteration: 3903; Percent complete: 97.6%; Average loss: 2.5832
Iteration: 3904; Percent complete: 97.6%; Average loss: 2.4399
Iteration: 3905; Percent complete: 97.6%; Average loss: 2.5649
Iteration: 3906; Percent complete: 97.7%; Average loss: 2.5641
Iteration: 3907; Percent complete: 97.7%; Average loss: 2.6843
Iteration: 3908; Percent complete: 97.7%; Average loss: 2.7426
Iteration: 3909; Percent complete: 97.7%; Average loss: 2.6517
Iteration: 3910; Percent complete: 97.8%; Average loss: 2.4766
Iteration: 3911; Percent complete: 97.8%; Average loss: 2.7366
Iteration: 3912; Percent complete: 97.8%; Average loss: 2.6297
Iteration: 3913; Percent complete: 97.8%; Average loss: 2.7345
Iteration: 3914; Percent complete: 97.9%; Average loss: 2.4512
Iteration: 3915; Percent complete: 97.9%; Average loss: 2.5863
Iteration: 3916; Percent complete: 97.9%; Average loss: 2.4112
Iteration: 3917; Percent complete: 97.9%; Average loss: 2.6183
Iteration: 3918; Percent complete: 98.0%; Average loss: 2.5369
Iteration: 3919; Percent complete: 98.0%; Average loss: 2.6257
Iteration: 3920; Percent complete: 98.0%; Average loss: 2.8218
Iteration: 3921; Percent complete: 98.0%; Average loss: 2.7838
Iteration: 3922; Percent complete: 98.0%; Average loss: 2.5347
Iteration: 3923; Percent complete: 98.1%; Average loss: 2.8182
Iteration: 3924; Percent complete: 98.1%; Average loss: 2.8228
Iteration: 3925; Percent complete: 98.1%; Average loss: 2.4613
Iteration: 3926; Percent complete: 98.2%; Average loss: 2.6345
Iteration: 3927; Percent complete: 98.2%; Average loss: 2.5573
Iteration: 3928; Percent complete: 98.2%; Average loss: 2.5987
Iteration: 3929; Percent complete: 98.2%; Average loss: 2.6230
Iteration: 3930; Percent complete: 98.2%; Average loss: 2.7079
Iteration: 3931; Percent complete: 98.3%; Average loss: 2.8116
Iteration: 3932; Percent complete: 98.3%; Average loss: 2.5638
Iteration: 3933; Percent complete: 98.3%; Average loss: 2.6776
Iteration: 3934; Percent complete: 98.4%; Average loss: 3.1590
Iteration: 3935; Percent complete: 98.4%; Average loss: 2.5967
Iteration: 3936; Percent complete: 98.4%; Average loss: 2.5994
Iteration: 3937; Percent complete: 98.4%; Average loss: 2.5659
Iteration: 3938; Percent complete: 98.5%; Average loss: 2.5290
Iteration: 3939; Percent complete: 98.5%; Average loss: 2.5583
Iteration: 3940; Percent complete: 98.5%; Average loss: 2.7167
Iteration: 3941; Percent complete: 98.5%; Average loss: 2.7366
Iteration: 3942; Percent complete: 98.6%; Average loss: 2.7614
Iteration: 3943; Percent complete: 98.6%; Average loss: 2.5108
Iteration: 3944; Percent complete: 98.6%; Average loss: 2.5622
Iteration: 3945; Percent complete: 98.6%; Average loss: 2.5238
Iteration: 3946; Percent complete: 98.7%; Average loss: 2.6395
Iteration: 3947; Percent complete: 98.7%; Average loss: 2.5558
Iteration: 3948; Percent complete: 98.7%; Average loss: 2.6299
Iteration: 3949; Percent complete: 98.7%; Average loss: 2.6570
Iteration: 3950; Percent complete: 98.8%; Average loss: 2.7326
Iteration: 3951; Percent complete: 98.8%; Average loss: 2.4626
Iteration: 3952; Percent complete: 98.8%; Average loss: 2.8095
Iteration: 3953; Percent complete: 98.8%; Average loss: 2.6987
Iteration: 3954; Percent complete: 98.9%; Average loss: 2.8271
Iteration: 3955; Percent complete: 98.9%; Average loss: 2.5704
Iteration: 3956; Percent complete: 98.9%; Average loss: 2.4923
Iteration: 3957; Percent complete: 98.9%; Average loss: 2.7392
Iteration: 3958; Percent complete: 99.0%; Average loss: 2.3489
Iteration: 3959; Percent complete: 99.0%; Average loss: 2.5856
Iteration: 3960; Percent complete: 99.0%; Average loss: 2.6154
Iteration: 3961; Percent complete: 99.0%; Average loss: 2.6293
Iteration: 3962; Percent complete: 99.1%; Average loss: 2.7962
Iteration: 3963; Percent complete: 99.1%; Average loss: 2.6515
Iteration: 3964; Percent complete: 99.1%; Average loss: 2.6082
Iteration: 3965; Percent complete: 99.1%; Average loss: 2.7281
Iteration: 3966; Percent complete: 99.2%; Average loss: 2.6643
Iteration: 3967; Percent complete: 99.2%; Average loss: 2.7574
Iteration: 3968; Percent complete: 99.2%; Average loss: 2.4648
Iteration: 3969; Percent complete: 99.2%; Average loss: 2.4254
Iteration: 3970; Percent complete: 99.2%; Average loss: 2.5172
Iteration: 3971; Percent complete: 99.3%; Average loss: 2.7743
Iteration: 3972; Percent complete: 99.3%; Average loss: 2.7413
Iteration: 3973; Percent complete: 99.3%; Average loss: 2.6376
Iteration: 3974; Percent complete: 99.4%; Average loss: 2.5133
Iteration: 3975; Percent complete: 99.4%; Average loss: 2.8758
Iteration: 3976; Percent complete: 99.4%; Average loss: 2.6715
Iteration: 3977; Percent complete: 99.4%; Average loss: 2.7414
Iteration: 3978; Percent complete: 99.5%; Average loss: 2.5120
Iteration: 3979; Percent complete: 99.5%; Average loss: 2.4649
Iteration: 3980; Percent complete: 99.5%; Average loss: 2.3961
Iteration: 3981; Percent complete: 99.5%; Average loss: 2.6099
Iteration: 3982; Percent complete: 99.6%; Average loss: 2.3744
Iteration: 3983; Percent complete: 99.6%; Average loss: 2.7075
Iteration: 3984; Percent complete: 99.6%; Average loss: 2.5045
Iteration: 3985; Percent complete: 99.6%; Average loss: 2.5938
Iteration: 3986; Percent complete: 99.7%; Average loss: 2.8155
Iteration: 3987; Percent complete: 99.7%; Average loss: 2.3436
Iteration: 3988; Percent complete: 99.7%; Average loss: 2.7481
Iteration: 3989; Percent complete: 99.7%; Average loss: 2.6009
Iteration: 3990; Percent complete: 99.8%; Average loss: 2.4274
Iteration: 3991; Percent complete: 99.8%; Average loss: 2.6879
Iteration: 3992; Percent complete: 99.8%; Average loss: 2.6810
Iteration: 3993; Percent complete: 99.8%; Average loss: 2.6043
Iteration: 3994; Percent complete: 99.9%; Average loss: 2.7498
Iteration: 3995; Percent complete: 99.9%; Average loss: 2.4941
Iteration: 3996; Percent complete: 99.9%; Average loss: 2.6143
Iteration: 3997; Percent complete: 99.9%; Average loss: 2.4641
Iteration: 3998; Percent complete: 100.0%; Average loss: 2.7322
Iteration: 3999; Percent complete: 100.0%; Average loss: 2.6586
Iteration: 4000; Percent complete: 100.0%; Average loss: 2.9412

run assessment

To chat with your model, run the following block.

# Set dropout layers to ``eval`` mode
encoder.eval()
decoder.eval()

# Initialize search module
searcher = GreedySearchDecoder(encoder, decoder)

# Begin chatting (uncomment and run the following line to begin)
# evaluateInput(encoder, decoder, searcher, voc)

结论

伙计们,这就是本次的全部内容。恭喜,您现在了解了构建生成式聊天机器人模型的基础知识!如果您感兴趣,可以尝试通过调整模型和训练参数以及自定义训练模型的数据来定制聊天机器人的行为。

查看其他教程,了解 PyTorch 中更酷的深度学习应用程序!

Guess you like

Origin blog.csdn.net/sinat_37574187/article/details/131933699