Tensorflow source to classify CIFAR 10 data

in #tensorflow6 years ago

Source is also on github.
https://github.com/llejo3/deep-learning/blob/master/CIFAR10_tensorflow.md

import tensorflow as tf
# Helper functions

def weight_variable(shape):
    initial = tf.truncated_normal(shape, stddev=0.1)
    return tf.Variable(initial)


def bias_variable(shape):
    initial = tf.constant(0.1, shape=shape)
    return tf.Variable(initial)


def conv2d(x, W):
    return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')


def max_pool_2x2(x):
    return tf.nn.max_pool(x, ksize=[1, 2, 2, 1],
                          strides=[1, 2, 2, 1], padding='SAME')


def conv_layer(input, shape):
    W = weight_variable(shape)
    b = bias_variable([shape[3]])
    return tf.nn.relu(conv2d(input, W) + b)

def conv_norm_layer(input, shape, phase):
    W = weight_variable(shape)
    b = bias_variable([shape[3]])
    return tf.nn.relu( batch_norm_wrapper( conv2d(input, W) + b, phase))

def full_layer(input, size):
    in_size = int(input.get_shape()[1])
    W = weight_variable([in_size, size])
    b = bias_variable([size])
    return tf.matmul(input, W) + b

# Batch Nomalization 
def batch_norm_wrapper(inputs, is_training, decay = 0.999):
    scale = tf.Variable(tf.ones([inputs.get_shape()[-1]]))
    beta = tf.Variable(tf.zeros([inputs.get_shape()[-1]]))
    pop_mean = tf.Variable(tf.zeros([inputs.get_shape()[-1]]), trainable=False)
    pop_var = tf.Variable(tf.ones([inputs.get_shape()[-1]]), trainable=False)

    if is_training == True:
        batch_mean, batch_var = tf.nn.moments(inputs,[0])
        train_mean = tf.assign(pop_mean, pop_mean * decay + batch_mean * (1 - decay))
        train_var = tf.assign(pop_var, pop_var * decay + batch_var * (1 - decay))
        with tf.control_dependencies([train_mean, train_var]):
            return tf.nn.batch_normalization(inputs,
                batch_mean, batch_var, beta, scale, epsilon)
    else:
        return tf.nn.batch_normalization(inputs, pop_mean, pop_var, beta, scale, epsilon)
import pickle
import os
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

# CIFAR 10 data path
DATA_PATH = "./cifar-10-batches-py"
BATCH_SIZE = 50
STEPS = 500000
epsilon = 1e-3

def one_hot(vec, vals=10):
    n = len(vec)
    out = np.zeros((n, vals))
    out[range(n), vec] = 1
    return out


def unpickle(file):
    with open(os.path.join(DATA_PATH, file), 'rb') as fo:
        u = pickle._Unpickler(fo)
        u.encoding = 'latin1'
        dict = u.load()
    return dict


def display_cifar(images, size):
    n = len(images)
    plt.figure()
    plt.gca().set_axis_off()
    im = np.vstack([np.hstack([images[np.random.choice(n)] for i in range(size)])
                    for i in range(size)])
    plt.imshow(im)
    plt.show()


class CifarLoader(object):
    """
    Load and mange the CIFAR dataset.
    (for any practical use there is no reason not to use the built-in dataset handler instead)
    """
    def __init__(self, source_files):
        self._source = source_files
        self._i = 0
        self.images = None
        self.labels = None

    def load(self):
        data = [unpickle(f) for f in self._source]
        images = np.vstack([d["data"] for d in data])
        n = len(images)
        self.images = images.reshape(n, 3, 32, 32).transpose(0, 2, 3, 1).astype(float) / 255
        self.labels = one_hot(np.hstack([d["labels"] for d in data]), 10)
        return self

    def next_batch(self, batch_size):
        x, y = self.images[self._i:self._i+batch_size], self.labels[self._i:self._i+batch_size]
        self._i = (self._i + batch_size) % len(self.images)
        return x, y

    def random_batch(self, batch_size):
        n = len(self.images)
        ix = np.random.choice(n, batch_size)
        return self.images[ix], self.labels[ix]

class CifarDataManager(object):
    def __init__(self):
        self.train = CifarLoader(["data_batch_{}".format(i) for i in range(1, 6)]).load()
        self.test = CifarLoader(["test_batch"]).load()


def run_simple_net():
    cifar = CifarDataManager()
    x = tf.placeholder(tf.float32, shape=[None, 32, 32, 3])
    y_ = tf.placeholder(tf.float32, shape=[None, 10])
    keep_prob = tf.placeholder(tf.float32)
    phase = tf.placeholder(tf.bool) 

    conv1 = conv_norm_layer(x, [5, 5, 3, 32], phase)
    conv1_pool = max_pool_2x2(conv1)

    conv2 = conv_norm_layer(conv1_pool, [5, 5, 32, 64], phase)
    conv2_pool = max_pool_2x2(conv2)

    conv3 = conv_norm_layer(conv2_pool, [5, 5, 64, 128], phase)
    conv3_pool = max_pool_2x2(conv3)
    conv3_flat = tf.reshape(conv3_pool, [-1, 4 * 4 * 128])
    conv3_drop = tf.nn.dropout(conv3_flat, keep_prob=keep_prob)

    full_1 = tf.nn.relu(full_layer(conv3_drop, 512))
    full1_drop = tf.nn.dropout(full_1, keep_prob=keep_prob)

    y_conv = full_layer(full1_drop, 10)

    cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y_conv, labels=y_))
    train_step = tf.train.AdamOptimizer(1e-3).minimize(cross_entropy)

    correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

    def test(sess):
        X = cifar.test.images.reshape(10, 1000, 32, 32, 3)
        Y = cifar.test.labels.reshape(10, 1000, 10)
        acc = np.mean([sess.run(accuracy, feed_dict={x: X[i], y_: Y[i], phase: False, keep_prob: 1.0})
                       for i in range(10)])
        print("Accuracy: {:.4}%".format(acc * 100))

    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())

        for i in range(STEPS):
            batch = cifar.train.next_batch(BATCH_SIZE)
            sess.run(train_step, feed_dict={x: batch[0], y_: batch[1], phase: True,  keep_prob: 0.5})

            if i % 500 == 0:
                test(sess)

        test(sess)


def build_second_net():
    cifar = CifarDataManager()
    x = tf.placeholder(tf.float32, shape=[None, 32, 32, 3])
    y_ = tf.placeholder(tf.float32, shape=[None, 10])
    keep_prob = tf.placeholder(tf.float32)
    phase = tf.placeholder(tf.bool) 

    C1, C2, C3 = 32, 64, 128
    F1 = 600

    conv1_1 = conv_norm_layer(x, [3, 3, 3, C1], phase)
    conv1_2 = conv_norm_layer(conv1_1, [3, 3, C1, C1], phase)
    conv1_3 = conv_norm_layer(conv1_2, [3, 3, C1, C1], phase)
    conv1_pool = max_pool_2x2(conv1_3)
    conv1_drop = tf.nn.dropout(conv1_pool, keep_prob=keep_prob)

    conv2_1 = conv_norm_layer(conv1_drop, [3, 3, C1, C2], phase)
    conv2_2 = conv_norm_layer(conv2_1, [3, 3, C2, C2], phase)
    conv2_3 = conv_norm_layer(conv2_2, [3, 3, C2, C2], phase)
    conv2_pool = max_pool_2x2(conv2_3)
    conv2_drop = tf.nn.dropout(conv2_pool, keep_prob=keep_prob)

    conv3_1 = conv_norm_layer(conv2_drop, [3, 3, C2, C3], phase)
    conv3_2 = conv_norm_layer(conv3_1, [3, 3, C3, C3], phase)
    conv3_3 = conv_norm_layer(conv3_2, [3, 3, C3, C3], phase)
    conv3_pool = tf.nn.max_pool(conv3_3, ksize=[1, 8, 8, 1], strides=[1, 8, 8, 1], padding='SAME')
    conv3_flat = tf.reshape(conv3_pool, [-1, C3])
    conv3_drop = tf.nn.dropout(conv3_flat, keep_prob=keep_prob)

    full1 = tf.nn.relu(full_layer(conv3_flat, F1))
    full1_drop = tf.nn.dropout(full1, keep_prob=keep_prob)

    y_conv = full_layer(full1_drop, 10)

    cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y_conv, labels=y_))
    train_step = tf.train.AdamOptimizer(5e-4).minimize(cross_entropy)

    correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

    def test(sess):
        X = cifar.test.images.reshape(10, 1000, 32, 32, 3)
        Y = cifar.test.labels.reshape(10, 1000, 10)
        acc = np.mean([sess.run(accuracy, feed_dict={x: X[i], y_: Y[i], phase: False , keep_prob: 1.0})
                       for i in range(10)])
        print("Accuracy: {:.4}%".format(acc * 100))

    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())

        for i in range(STEPS):
            batch = cifar.train.next_batch(BATCH_SIZE)
            sess.run(train_step, feed_dict={x: batch[0], y_: batch[1], phase: True, keep_prob: 0.5})

            if i % 500 == 0:
                test(sess)

        test(sess)


def create_cifar_image():
    d = CifarDataManager()
    print("Number of train images: {}".format(len(d.train.images)))
    print("Number of train labels: {}".format(len(d.train.labels)))
    print("Number of test images: {}".format(len(d.test.images)))
    print("Number of test images: {}".format(len(d.test.labels)))
    images = d.train.images
    display_cifar(images, 10)
create_cifar_image()
Number of train images: 50000
Number of train labels: 50000
Number of test images: 10000
Number of test images: 10000

run_simple_net()
Accuracy: 11.14%
Accuracy: 43.33%
Accuracy: 47.72%
Accuracy: 49.42%
Accuracy: 55.05%
Accuracy: 58.3%
Accuracy: 61.28%
Accuracy: 57.95%
Accuracy: 65.16%
Accuracy: 63.02%
Accuracy: 67.24%
Accuracy: 63.56%
Accuracy: 67.67%
Accuracy: 65.49%
Accuracy: 69.49%
Accuracy: 69.16%
Accuracy: 69.66%
Accuracy: 70.72%
Accuracy: 71.93%
Accuracy: 69.34%
Accuracy: 70.39%
Accuracy: 71.15%
Accuracy: 72.94%
Accuracy: 71.53%
Accuracy: 73.49%
Accuracy: 71.79%
Accuracy: 71.93%
Accuracy: 71.12%
Accuracy: 73.47%
Accuracy: 72.49%
Accuracy: 74.03%
Accuracy: 70.01%
Accuracy: 74.21%
Accuracy: 72.42%
Accuracy: 73.63%
Accuracy: 72.65%
Accuracy: 74.18%
Accuracy: 73.05%
Accuracy: 74.97%
Accuracy: 74.02%
Accuracy: 73.46%
Accuracy: 73.5%
Accuracy: 74.29%
Accuracy: 73.23%
Accuracy: 75.01%
Accuracy: 73.64%
Accuracy: 74.37%
Accuracy: 75.41%
Accuracy: 75.28%
Accuracy: 75.45%
Accuracy: 75.35%
Accuracy: 75.24%
Accuracy: 75.59%
Accuracy: 75.92%
Accuracy: 75.43%
Accuracy: 75.02%
Accuracy: 75.24%
Accuracy: 75.87%
Accuracy: 75.38%
Accuracy: 76.03%
Accuracy: 75.42%
Accuracy: 75.64%
Accuracy: 75.83%
Accuracy: 75.49%
Accuracy: 75.36%
Accuracy: 75.14%
Accuracy: 75.94%
Accuracy: 75.73%
Accuracy: 76.33%
Accuracy: 75.53%
Accuracy: 75.77%
Accuracy: 75.8%
Accuracy: 75.4%
Accuracy: 76.26%
Accuracy: 75.9%
Accuracy: 73.55%
Accuracy: 75.29%
Accuracy: 76.37%
Accuracy: 76.49%
Accuracy: 75.92%
Accuracy: 75.24%
Accuracy: 76.35%
Accuracy: 75.96%
Accuracy: 76.49%
Accuracy: 76.67%
Accuracy: 76.46%
Accuracy: 75.63%
Accuracy: 76.93%
Accuracy: 75.73%
Accuracy: 76.22%
Accuracy: 74.97%
Accuracy: 75.99%
Accuracy: 76.77%
Accuracy: 76.16%
Accuracy: 75.58%
Accuracy: 77.01%
Accuracy: 76.35%
Accuracy: 76.84%
Accuracy: 76.02%
Accuracy: 76.27%
Accuracy: 76.15%
Accuracy: 77.02%
Accuracy: 75.18%
Accuracy: 76.91%
Accuracy: 76.39%
Accuracy: 76.95%
Accuracy: 75.67%
Accuracy: 76.51%
Accuracy: 76.46%
Accuracy: 76.47%
Accuracy: 76.34%
Accuracy: 76.74%
Accuracy: 76.62%
Accuracy: 76.04%
Accuracy: 76.66%
Accuracy: 76.6%
Accuracy: 76.47%
Accuracy: 76.9%
Accuracy: 76.29%
Accuracy: 76.89%
Accuracy: 76.45%
Accuracy: 77.04%
Accuracy: 77.04%
Accuracy: 77.44%
Accuracy: 75.54%
Accuracy: 77.28%
Accuracy: 76.51%
Accuracy: 77.3%
Accuracy: 76.69%
Accuracy: 77.1%
Accuracy: 76.69%
Accuracy: 77.18%
Accuracy: 76.99%
Accuracy: 77.11%
Accuracy: 76.37%
Accuracy: 77.45%
Accuracy: 76.04%
Accuracy: 77.34%
Accuracy: 76.5%
Accuracy: 76.94%
Accuracy: 76.32%
Accuracy: 77.07%
Accuracy: 76.9%
Accuracy: 77.57%
Accuracy: 77.33%
Accuracy: 77.48%
Accuracy: 77.0%
Accuracy: 77.14%
Accuracy: 77.25%
Accuracy: 77.75%
Accuracy: 76.36%
Accuracy: 77.1%
Accuracy: 76.81%
Accuracy: 76.96%
Accuracy: 76.85%
Accuracy: 77.19%
Accuracy: 77.33%
Accuracy: 76.7%
Accuracy: 76.71%
Accuracy: 77.5%
Accuracy: 77.19%
Accuracy: 77.37%
Accuracy: 76.71%
Accuracy: 77.27%
Accuracy: 76.44%
Accuracy: 77.3%
Accuracy: 76.75%
Accuracy: 76.26%
Accuracy: 76.87%
Accuracy: 77.38%
Accuracy: 77.18%
Accuracy: 77.28%
Accuracy: 76.74%
Accuracy: 77.01%
Accuracy: 76.84%
Accuracy: 76.87%
Accuracy: 77.38%
Accuracy: 77.01%
Accuracy: 77.42%
Accuracy: 77.11%
Accuracy: 76.76%
Accuracy: 77.19%
Accuracy: 76.77%
Accuracy: 77.01%
Accuracy: 76.07%
Accuracy: 76.98%
Accuracy: 77.22%
Accuracy: 77.37%
Accuracy: 76.72%
Accuracy: 77.0%
Accuracy: 77.46%
Accuracy: 77.38%
Accuracy: 76.91%
Accuracy: 77.34%
Accuracy: 77.33%
Accuracy: 76.82%
Accuracy: 76.82%
Accuracy: 77.2%
Accuracy: 76.29%
Accuracy: 77.04%
Accuracy: 76.87%
Accuracy: 77.89%
Accuracy: 76.4%
Accuracy: 77.35%
Accuracy: 75.91%
Accuracy: 77.28%
Accuracy: 76.6%
Accuracy: 77.57%
Accuracy: 77.42%
Accuracy: 77.21%
Accuracy: 77.37%
Accuracy: 76.98%
Accuracy: 77.08%
Accuracy: 77.56%
Accuracy: 77.3%
Accuracy: 77.62%
Accuracy: 77.05%
Accuracy: 77.71%
Accuracy: 77.2%
Accuracy: 77.39%
Accuracy: 77.51%
Accuracy: 76.78%
Accuracy: 77.15%
Accuracy: 77.02%
Accuracy: 77.48%
Accuracy: 77.4%
Accuracy: 76.12%
Accuracy: 77.32%
Accuracy: 75.95%
Accuracy: 76.92%
Accuracy: 76.84%
Accuracy: 76.95%
Accuracy: 76.45%
Accuracy: 76.9%
Accuracy: 77.29%
Accuracy: 77.23%
Accuracy: 76.67%
Accuracy: 77.18%
Accuracy: 76.35%
Accuracy: 77.66%
Accuracy: 77.03%
Accuracy: 77.06%
Accuracy: 77.15%
Accuracy: 77.92%
Accuracy: 76.58%
Accuracy: 77.41%
Accuracy: 77.02%
Accuracy: 77.51%
Accuracy: 76.09%
Accuracy: 77.84%
Accuracy: 76.7%
Accuracy: 77.56%
Accuracy: 77.17%
Accuracy: 77.19%
Accuracy: 77.46%
Accuracy: 77.01%
Accuracy: 77.58%
Accuracy: 77.48%
Accuracy: 77.78%
Accuracy: 77.03%
Accuracy: 76.44%
Accuracy: 77.08%
Accuracy: 77.07%
Accuracy: 77.61%
Accuracy: 77.09%
Accuracy: 77.76%
Accuracy: 76.98%
Accuracy: 77.39%
Accuracy: 76.83%
Accuracy: 77.11%
Accuracy: 76.37%
Accuracy: 76.82%
Accuracy: 77.36%
Accuracy: 77.73%
Accuracy: 76.12%
Accuracy: 77.52%
Accuracy: 76.76%
Accuracy: 77.23%
Accuracy: 77.2%
Accuracy: 77.39%
Accuracy: 76.92%
Accuracy: 77.51%
Accuracy: 77.15%
Accuracy: 77.75%
Accuracy: 77.15%
Accuracy: 77.25%
Accuracy: 77.18%
Accuracy: 77.07%
Accuracy: 77.16%
Accuracy: 76.77%
Accuracy: 76.06%
Accuracy: 77.52%
Accuracy: 77.36%
Accuracy: 77.24%
Accuracy: 77.42%
Accuracy: 77.7%
Accuracy: 76.77%
Accuracy: 77.25%
Accuracy: 76.95%
Accuracy: 76.48%
Accuracy: 76.45%
Accuracy: 77.2%
Accuracy: 76.58%
Accuracy: 77.43%
Accuracy: 75.77%
Accuracy: 76.97%
Accuracy: 77.11%
Accuracy: 78.03%
Accuracy: 76.67%
Accuracy: 76.86%
Accuracy: 76.88%
Accuracy: 77.09%
Accuracy: 77.69%
Accuracy: 77.47%
Accuracy: 77.01%
Accuracy: 77.6%
Accuracy: 77.46%
Accuracy: 77.03%
Accuracy: 77.32%
Accuracy: 77.34%
Accuracy: 77.13%
Accuracy: 77.71%
Accuracy: 77.46%
Accuracy: 77.29%
Accuracy: 76.58%
Accuracy: 78.04%
Accuracy: 77.09%
Accuracy: 77.65%
Accuracy: 77.26%
Accuracy: 77.55%
Accuracy: 77.89%
Accuracy: 77.48%
Accuracy: 76.85%
Accuracy: 76.91%
Accuracy: 77.39%
Accuracy: 77.59%
Accuracy: 77.11%
Accuracy: 77.29%
Accuracy: 77.9%
Accuracy: 77.54%
Accuracy: 76.59%
Accuracy: 77.66%
Accuracy: 77.07%
Accuracy: 77.03%
Accuracy: 76.92%
Accuracy: 77.39%
Accuracy: 77.16%
Accuracy: 77.39%
Accuracy: 76.8%
Accuracy: 77.3%
Accuracy: 77.65%
Accuracy: 77.41%
Accuracy: 77.11%
Accuracy: 78.0%
Accuracy: 77.34%
Accuracy: 77.9%
Accuracy: 76.84%
Accuracy: 77.41%
Accuracy: 77.19%
Accuracy: 77.61%
Accuracy: 77.16%
Accuracy: 77.89%
Accuracy: 77.14%
Accuracy: 77.59%
Accuracy: 76.52%
Accuracy: 77.85%
Accuracy: 77.05%
Accuracy: 77.56%
Accuracy: 77.59%
Accuracy: 76.75%
Accuracy: 77.67%
Accuracy: 77.74%
Accuracy: 76.49%
Accuracy: 77.43%
Accuracy: 77.49%
Accuracy: 76.95%
Accuracy: 77.5%
Accuracy: 77.31%
Accuracy: 77.06%
Accuracy: 77.73%
Accuracy: 77.42%
Accuracy: 77.35%
Accuracy: 77.2%
Accuracy: 77.65%
Accuracy: 77.14%
Accuracy: 77.02%
Accuracy: 77.09%
Accuracy: 77.31%
Accuracy: 77.54%
Accuracy: 77.37%
Accuracy: 77.19%
Accuracy: 77.58%
Accuracy: 77.18%
Accuracy: 78.04%
Accuracy: 77.18%
Accuracy: 78.09%
Accuracy: 76.67%
Accuracy: 78.05%
Accuracy: 77.47%
Accuracy: 77.51%
Accuracy: 77.78%
Accuracy: 76.92%
Accuracy: 77.21%
Accuracy: 77.65%
Accuracy: 77.1%
Accuracy: 78.08%
Accuracy: 77.36%
Accuracy: 77.07%
Accuracy: 77.34%
Accuracy: 77.86%
Accuracy: 76.9%
Accuracy: 77.7%
Accuracy: 77.91%
Accuracy: 77.1%
Accuracy: 77.32%
Accuracy: 77.53%
Accuracy: 77.59%
Accuracy: 77.22%
Accuracy: 77.32%
Accuracy: 77.48%
Accuracy: 77.35%
Accuracy: 77.29%
Accuracy: 77.45%
Accuracy: 77.5%
Accuracy: 76.78%
Accuracy: 77.8%
Accuracy: 77.14%
Accuracy: 77.39%
Accuracy: 76.39%
Accuracy: 77.81%
Accuracy: 76.83%
Accuracy: 77.12%
Accuracy: 76.96%
Accuracy: 77.72%
Accuracy: 77.18%
Accuracy: 77.66%
Accuracy: 77.59%
Accuracy: 77.98%
Accuracy: 76.89%
Accuracy: 77.33%
Accuracy: 76.9%
Accuracy: 77.57%
Accuracy: 77.87%
Accuracy: 77.16%
Accuracy: 77.58%
Accuracy: 78.44%
Accuracy: 77.33%
Accuracy: 77.4%
Accuracy: 77.49%
Accuracy: 77.69%
Accuracy: 76.34%
Accuracy: 77.7%
Accuracy: 77.42%
Accuracy: 77.62%
Accuracy: 77.3%
Accuracy: 77.13%
Accuracy: 77.11%
Accuracy: 77.97%
Accuracy: 77.76%
Accuracy: 78.15%
Accuracy: 77.69%
Accuracy: 78.06%
Accuracy: 77.78%
Accuracy: 77.52%
Accuracy: 77.64%
Accuracy: 77.16%
Accuracy: 77.25%
Accuracy: 77.95%
Accuracy: 76.6%
Accuracy: 77.89%
Accuracy: 77.38%
Accuracy: 77.46%
Accuracy: 77.68%
Accuracy: 76.93%
Accuracy: 77.07%
Accuracy: 77.93%
Accuracy: 78.11%
Accuracy: 77.95%
Accuracy: 78.18%
Accuracy: 77.4%
Accuracy: 76.7%
Accuracy: 77.65%
Accuracy: 77.51%
Accuracy: 77.04%
Accuracy: 77.11%
Accuracy: 77.69%
Accuracy: 77.25%
Accuracy: 77.3%
Accuracy: 77.31%
Accuracy: 77.53%
Accuracy: 77.56%
Accuracy: 77.13%
Accuracy: 77.47%
Accuracy: 77.63%
Accuracy: 76.85%
Accuracy: 77.42%
Accuracy: 77.49%
Accuracy: 76.93%
Accuracy: 76.89%
Accuracy: 77.7%
Accuracy: 77.32%
Accuracy: 77.73%
Accuracy: 77.42%
Accuracy: 77.5%
Accuracy: 76.96%
Accuracy: 77.39%
Accuracy: 77.46%
Accuracy: 77.9%
Accuracy: 76.7%
Accuracy: 77.43%
Accuracy: 77.5%
Accuracy: 77.71%
Accuracy: 77.63%
Accuracy: 77.65%
Accuracy: 78.0%
Accuracy: 77.16%
Accuracy: 76.95%
Accuracy: 77.47%
Accuracy: 77.5%
Accuracy: 77.64%
Accuracy: 77.96%
Accuracy: 77.29%
Accuracy: 77.24%
Accuracy: 77.24%
Accuracy: 77.33%
Accuracy: 77.23%
Accuracy: 77.2%
Accuracy: 77.46%
Accuracy: 76.82%
Accuracy: 77.33%
Accuracy: 77.74%
Accuracy: 77.97%
Accuracy: 77.0%
Accuracy: 77.36%
Accuracy: 77.59%
Accuracy: 77.24%
Accuracy: 76.67%
Accuracy: 77.55%
Accuracy: 76.98%
Accuracy: 77.41%
Accuracy: 77.08%
Accuracy: 77.37%
Accuracy: 77.31%
Accuracy: 77.52%
Accuracy: 77.87%
Accuracy: 77.74%
Accuracy: 77.74%
Accuracy: 76.83%
Accuracy: 77.23%
Accuracy: 77.24%
Accuracy: 77.24%
Accuracy: 77.49%
Accuracy: 77.84%
Accuracy: 77.62%
Accuracy: 77.79%
Accuracy: 77.67%
Accuracy: 77.63%
Accuracy: 77.74%
Accuracy: 77.43%
Accuracy: 77.78%
Accuracy: 76.34%
Accuracy: 77.73%
Accuracy: 78.0%
Accuracy: 77.45%
Accuracy: 77.62%
Accuracy: 77.67%
Accuracy: 77.4%
Accuracy: 77.54%
Accuracy: 77.54%
Accuracy: 77.48%
Accuracy: 77.63%
Accuracy: 77.78%
Accuracy: 78.03%
Accuracy: 77.6%
Accuracy: 78.3%
Accuracy: 77.76%
Accuracy: 77.96%
Accuracy: 77.94%
Accuracy: 77.45%
Accuracy: 76.43%
Accuracy: 76.64%
Accuracy: 77.86%
Accuracy: 77.85%
Accuracy: 77.75%
Accuracy: 77.34%
Accuracy: 78.06%
Accuracy: 77.49%
Accuracy: 77.66%
Accuracy: 77.88%
Accuracy: 77.55%
Accuracy: 77.12%
Accuracy: 77.54%
Accuracy: 77.39%
Accuracy: 77.59%
Accuracy: 77.45%
Accuracy: 77.52%
Accuracy: 77.53%
Accuracy: 77.92%
Accuracy: 77.19%
Accuracy: 77.87%
Accuracy: 77.18%
Accuracy: 77.33%
Accuracy: 77.33%
Accuracy: 77.63%
Accuracy: 77.48%
Accuracy: 77.5%
Accuracy: 77.23%
Accuracy: 77.38%
Accuracy: 77.32%
Accuracy: 77.09%
Accuracy: 76.87%
Accuracy: 77.57%
Accuracy: 77.57%
Accuracy: 77.74%
Accuracy: 77.59%
Accuracy: 77.56%
Accuracy: 77.06%
Accuracy: 77.24%
Accuracy: 77.34%
Accuracy: 77.25%
Accuracy: 77.43%
Accuracy: 77.53%
Accuracy: 77.22%
Accuracy: 77.34%
Accuracy: 77.21%
Accuracy: 78.01%
Accuracy: 77.44%
Accuracy: 77.85%
Accuracy: 77.48%
Accuracy: 77.34%
Accuracy: 77.66%
Accuracy: 77.62%
Accuracy: 77.21%
Accuracy: 77.37%
Accuracy: 77.47%
Accuracy: 77.63%
Accuracy: 77.52%
Accuracy: 77.89%
Accuracy: 77.95%
Accuracy: 77.79%
Accuracy: 76.77%
Accuracy: 78.01%
Accuracy: 77.15%
Accuracy: 77.62%
Accuracy: 77.27%
Accuracy: 77.32%
Accuracy: 78.23%
Accuracy: 77.61%
Accuracy: 77.86%
Accuracy: 77.8%
Accuracy: 77.27%
Accuracy: 77.81%
Accuracy: 77.49%
Accuracy: 77.79%
Accuracy: 78.23%
Accuracy: 77.98%
Accuracy: 77.45%
Accuracy: 77.45%
Accuracy: 77.6%
Accuracy: 77.85%
Accuracy: 77.66%
Accuracy: 77.15%
Accuracy: 77.13%
Accuracy: 78.27%
Accuracy: 76.74%
Accuracy: 78.08%
Accuracy: 77.38%
Accuracy: 77.73%
Accuracy: 77.07%
Accuracy: 77.63%
Accuracy: 77.45%
Accuracy: 77.76%
Accuracy: 77.12%
Accuracy: 77.38%
Accuracy: 77.42%
Accuracy: 77.8%
Accuracy: 77.32%
Accuracy: 77.75%
Accuracy: 77.72%
Accuracy: 76.99%
Accuracy: 77.74%
Accuracy: 77.98%
Accuracy: 77.52%
Accuracy: 77.87%
Accuracy: 76.76%
Accuracy: 77.63%
Accuracy: 77.49%
Accuracy: 78.15%
Accuracy: 77.35%
Accuracy: 77.84%
Accuracy: 77.72%
Accuracy: 76.92%
Accuracy: 77.85%
Accuracy: 77.91%
Accuracy: 77.99%
Accuracy: 77.22%
Accuracy: 77.01%
Accuracy: 77.61%
Accuracy: 77.7%
Accuracy: 77.95%
Accuracy: 77.74%
Accuracy: 77.69%
Accuracy: 77.76%
Accuracy: 78.15%
Accuracy: 77.49%
Accuracy: 77.87%
Accuracy: 77.28%
Accuracy: 77.3%
Accuracy: 77.01%
Accuracy: 77.65%
Accuracy: 77.64%
Accuracy: 76.71%
Accuracy: 77.65%
Accuracy: 78.07%
Accuracy: 77.83%
Accuracy: 77.82%
Accuracy: 77.06%
Accuracy: 77.25%
Accuracy: 77.16%
Accuracy: 78.02%
Accuracy: 77.04%
Accuracy: 77.97%
Accuracy: 77.53%
Accuracy: 77.46%
Accuracy: 76.77%
Accuracy: 77.77%
Accuracy: 77.54%
Accuracy: 77.95%
Accuracy: 77.5%
Accuracy: 78.18%
Accuracy: 76.88%
Accuracy: 77.97%
Accuracy: 77.79%
Accuracy: 77.46%
Accuracy: 77.78%
Accuracy: 77.3%
Accuracy: 77.1%
Accuracy: 78.01%
Accuracy: 77.86%
Accuracy: 77.83%
Accuracy: 77.44%
Accuracy: 77.8%
Accuracy: 77.5%
Accuracy: 77.42%
Accuracy: 77.8%
Accuracy: 77.14%
Accuracy: 77.91%
Accuracy: 77.27%
Accuracy: 77.9%
Accuracy: 78.32%
Accuracy: 77.5%
Accuracy: 77.8%
Accuracy: 77.67%
Accuracy: 77.43%
Accuracy: 78.0%
Accuracy: 78.14%
Accuracy: 77.28%
Accuracy: 77.75%
Accuracy: 77.62%
Accuracy: 77.64%
Accuracy: 77.38%
Accuracy: 77.97%
Accuracy: 77.72%
Accuracy: 77.84%
Accuracy: 77.61%
Accuracy: 77.76%
Accuracy: 77.27%
Accuracy: 77.45%
Accuracy: 77.36%
Accuracy: 77.78%
Accuracy: 76.75%
Accuracy: 77.53%
Accuracy: 77.4%
Accuracy: 77.8%
Accuracy: 77.69%
Accuracy: 77.7%
Accuracy: 77.76%
Accuracy: 77.75%
Accuracy: 77.13%
Accuracy: 77.66%
Accuracy: 77.35%
Accuracy: 77.69%
Accuracy: 77.44%
Accuracy: 77.94%
Accuracy: 77.53%
Accuracy: 78.04%
Accuracy: 77.87%
Accuracy: 77.48%
Accuracy: 76.9%
Accuracy: 77.6%
Accuracy: 77.72%
Accuracy: 77.47%
Accuracy: 77.63%
Accuracy: 77.75%
Accuracy: 77.31%
Accuracy: 77.37%
Accuracy: 77.96%
Accuracy: 78.04%
Accuracy: 77.54%
Accuracy: 77.46%
Accuracy: 77.84%
Accuracy: 77.73%
Accuracy: 77.0%
Accuracy: 77.22%
Accuracy: 77.55%
Accuracy: 77.33%
Accuracy: 77.57%
Accuracy: 77.71%
Accuracy: 77.35%
Accuracy: 77.46%
Accuracy: 77.11%
Accuracy: 77.42%
Accuracy: 77.25%
Accuracy: 77.22%
Accuracy: 77.34%
Accuracy: 77.83%
Accuracy: 77.64%
Accuracy: 77.52%
Accuracy: 77.02%
Accuracy: 77.55%
Accuracy: 77.49%
Accuracy: 77.35%
Accuracy: 77.51%
Accuracy: 77.84%
Accuracy: 77.5%
Accuracy: 76.97%
Accuracy: 77.14%
Accuracy: 77.54%
Accuracy: 77.03%
Accuracy: 77.53%
Accuracy: 77.51%
Accuracy: 77.51%
Accuracy: 77.44%
Accuracy: 77.94%
Accuracy: 76.65%
Accuracy: 77.81%
Accuracy: 77.66%
Accuracy: 77.63%
Accuracy: 77.76%
Accuracy: 77.52%
Accuracy: 77.42%
Accuracy: 77.25%
Accuracy: 77.52%
Accuracy: 77.52%
Accuracy: 76.16%
Accuracy: 77.63%
Accuracy: 77.9%
Accuracy: 77.75%
Accuracy: 77.22%
Accuracy: 77.81%
Accuracy: 77.2%
Accuracy: 77.59%
Accuracy: 77.21%
Accuracy: 77.56%
Accuracy: 77.54%
Accuracy: 77.53%
Accuracy: 77.76%
Accuracy: 77.5%
Accuracy: 77.12%
Accuracy: 77.44%
Accuracy: 77.56%
Accuracy: 77.06%
Accuracy: 77.66%
Accuracy: 77.96%
Accuracy: 78.33%
Accuracy: 77.6%
Accuracy: 77.42%
Accuracy: 77.45%
Accuracy: 77.23%
Accuracy: 78.16%
Accuracy: 77.67%
Accuracy: 77.1%
Accuracy: 77.38%
Accuracy: 77.6%
Accuracy: 76.9%
Accuracy: 77.92%
Accuracy: 77.45%
Accuracy: 77.5%
Accuracy: 77.6%
Accuracy: 77.9%
Accuracy: 77.02%
Accuracy: 78.29%
Accuracy: 77.17%
Accuracy: 77.46%
Accuracy: 78.07%
Accuracy: 77.45%
Accuracy: 77.21%
Accuracy: 78.1%
Accuracy: 77.41%
Accuracy: 77.46%
Accuracy: 77.96%
Accuracy: 77.42%
Accuracy: 77.56%
Accuracy: 77.35%
Accuracy: 77.85%
Accuracy: 77.62%
Accuracy: 77.67%
Accuracy: 77.11%
Accuracy: 77.43%
Accuracy: 77.8%
Accuracy: 77.5%
Accuracy: 77.04%
Accuracy: 76.92%
Accuracy: 78.38%
Accuracy: 77.77%
Accuracy: 77.29%
Accuracy: 76.72%
Accuracy: 77.91%
Accuracy: 77.65%
Accuracy: 77.46%
Accuracy: 77.88%
Accuracy: 77.5%
Accuracy: 77.75%
Accuracy: 77.43%
Accuracy: 77.58%
Accuracy: 77.49%
Accuracy: 77.82%
Accuracy: 77.93%
Accuracy: 77.62%
Accuracy: 77.89%
Accuracy: 78.26%
Accuracy: 77.87%
Accuracy: 76.91%
Accuracy: 77.01%
Accuracy: 77.6%
Accuracy: 77.69%
Accuracy: 77.59%
Accuracy: 77.82%
Accuracy: 76.75%
Accuracy: 77.38%
Accuracy: 77.57%
Accuracy: 77.48%
Accuracy: 77.45%
Accuracy: 77.36%
Accuracy: 77.85%
Accuracy: 77.57%
Accuracy: 77.46%
Accuracy: 77.52%
Accuracy: 77.29%
Accuracy: 77.32%
Accuracy: 76.74%
Accuracy: 77.56%
Accuracy: 77.37%
Accuracy: 76.91%
Accuracy: 77.07%
Accuracy: 77.96%
Accuracy: 77.53%
Accuracy: 77.91%
Accuracy: 76.82%
Accuracy: 77.88%
Accuracy: 77.34%
Accuracy: 77.86%
Accuracy: 77.51%
Accuracy: 78.1%
Accuracy: 78.08%
Accuracy: 77.31%
Accuracy: 77.59%
Accuracy: 78.13%
Accuracy: 77.11%
Accuracy: 77.72%
Accuracy: 77.77%
Accuracy: 78.05%
Accuracy: 77.2%
Accuracy: 78.22%
Accuracy: 77.1%
Accuracy: 78.29%
Accuracy: 77.58%
Accuracy: 78.13%
Accuracy: 78.06%
Accuracy: 77.31%
Accuracy: 77.94%
Accuracy: 77.02%
Accuracy: 77.83%
Accuracy: 77.94%
Accuracy: 77.62%
Accuracy: 77.7%
Accuracy: 76.98%
Accuracy: 77.56%
Accuracy: 77.5%
Accuracy: 77.56%
Accuracy: 77.56%
Accuracy: 77.57%
Accuracy: 77.74%
Accuracy: 77.51%
Accuracy: 77.67%
Accuracy: 77.78%
Accuracy: 77.99%
Accuracy: 78.0%
Accuracy: 77.78%
Accuracy: 77.62%
Accuracy: 77.94%
Accuracy: 78.16%
Accuracy: 77.6%
Accuracy: 77.84%
Accuracy: 77.34%
Accuracy: 77.91%
Accuracy: 77.12%
Accuracy: 78.07%
Accuracy: 77.25%
Accuracy: 78.01%
Accuracy: 77.71%
build_second_net()
Accuracy: 9.82%
Accuracy: 10.52%
Accuracy: 22.65%
Accuracy: 29.57%
Accuracy: 33.35%
Accuracy: 38.66%
Accuracy: 40.16%
Accuracy: 44.4%
Accuracy: 46.93%
Accuracy: 50.96%
Accuracy: 52.52%
Accuracy: 53.33%
Accuracy: 53.51%
Accuracy: 58.63%
Accuracy: 57.96%
Accuracy: 61.02%
Accuracy: 60.62%
Accuracy: 62.94%
Accuracy: 61.72%
Accuracy: 62.72%
Accuracy: 64.35%
Accuracy: 66.08%
Accuracy: 65.25%
Accuracy: 65.11%
Accuracy: 62.51%
Accuracy: 65.58%
Accuracy: 67.31%
Accuracy: 66.46%
Accuracy: 67.74%
Accuracy: 67.92%
Accuracy: 65.42%
Accuracy: 67.59%
Accuracy: 69.62%
Accuracy: 67.41%
Accuracy: 69.89%
Accuracy: 71.57%
Accuracy: 71.89%
Accuracy: 69.72%
Accuracy: 70.15%
Accuracy: 71.4%
Accuracy: 72.22%
Accuracy: 71.53%
Accuracy: 74.22%
Accuracy: 73.18%
Accuracy: 72.06%
Accuracy: 74.23%
Accuracy: 72.76%
Accuracy: 74.38%
Accuracy: 74.93%
Accuracy: 76.22%
Accuracy: 75.47%
Accuracy: 74.69%
Accuracy: 75.1%
Accuracy: 75.57%
Accuracy: 77.64%
Accuracy: 77.76%
Accuracy: 76.48%
Accuracy: 77.21%
Accuracy: 77.57%
Accuracy: 76.31%
Accuracy: 76.89%
Accuracy: 77.87%
Accuracy: 77.57%
Accuracy: 77.72%
Accuracy: 78.21%
Accuracy: 78.57%
Accuracy: 77.19%
Accuracy: 78.65%
Accuracy: 78.48%
Accuracy: 77.19%
Accuracy: 77.36%
Accuracy: 78.16%
Accuracy: 79.17%
Accuracy: 78.99%
Accuracy: 78.95%
Accuracy: 79.07%
Accuracy: 77.81%
Accuracy: 78.78%
Accuracy: 79.13%
Accuracy: 76.86%
Accuracy: 79.89%
Accuracy: 79.15%
Accuracy: 78.51%
Accuracy: 79.15%
Accuracy: 78.59%
Accuracy: 79.0%
Accuracy: 78.63%
Accuracy: 80.26%
Accuracy: 79.98%
Accuracy: 79.85%
Accuracy: 79.95%
Accuracy: 79.66%
Accuracy: 78.83%
Accuracy: 78.91%
Accuracy: 79.96%
Accuracy: 79.58%
Accuracy: 79.32%
Accuracy: 78.88%
Accuracy: 80.2%
Accuracy: 80.27%
Accuracy: 78.93%
Accuracy: 79.94%
Accuracy: 79.71%
Accuracy: 80.42%
Accuracy: 77.77%
Accuracy: 79.5%
Accuracy: 80.66%
Accuracy: 80.65%
Accuracy: 80.31%
Accuracy: 80.28%
Accuracy: 79.56%
Accuracy: 79.57%
Accuracy: 80.37%
Accuracy: 80.11%
Accuracy: 80.32%
Accuracy: 81.32%
Accuracy: 79.94%
Accuracy: 80.9%
Accuracy: 80.59%
Accuracy: 80.71%
Accuracy: 81.48%
Accuracy: 80.06%
Accuracy: 80.6%
Accuracy: 80.98%
Accuracy: 80.32%
Accuracy: 79.55%
Accuracy: 80.86%
Accuracy: 80.06%
Accuracy: 80.66%
Accuracy: 80.34%
Accuracy: 79.55%
Accuracy: 81.42%
Accuracy: 81.39%
Accuracy: 81.13%
Accuracy: 81.21%
Accuracy: 82.0%
Accuracy: 81.5%
Accuracy: 80.27%
Accuracy: 80.35%
Accuracy: 79.69%
Accuracy: 80.9%
Accuracy: 80.4%
Accuracy: 80.59%
Accuracy: 80.36%
Accuracy: 80.93%
Accuracy: 80.71%
Accuracy: 79.7%
Accuracy: 80.9%
Accuracy: 80.21%
Accuracy: 79.62%
Accuracy: 81.7%
Accuracy: 78.51%
Accuracy: 79.92%
Accuracy: 81.33%
Accuracy: 78.73%
Accuracy: 81.65%
Accuracy: 81.22%
Accuracy: 80.86%
Accuracy: 81.08%
Accuracy: 80.33%
Accuracy: 80.21%
Accuracy: 80.43%
Accuracy: 81.08%
Accuracy: 80.37%
Accuracy: 81.82%
Accuracy: 80.59%
Accuracy: 81.67%
Accuracy: 81.27%
Accuracy: 80.89%
Accuracy: 81.17%
Accuracy: 82.1%
Accuracy: 81.05%
Accuracy: 79.93%
Accuracy: 81.32%
Accuracy: 80.78%
Accuracy: 81.36%
Accuracy: 81.54%
Accuracy: 81.51%
Accuracy: 80.38%
Accuracy: 81.05%
Accuracy: 80.92%
Accuracy: 81.39%
Accuracy: 81.63%
Accuracy: 80.56%
Accuracy: 82.28%
Accuracy: 81.97%
Accuracy: 81.82%
Accuracy: 81.5%
Accuracy: 80.72%
Accuracy: 81.3%
Accuracy: 81.01%
Accuracy: 80.72%
Accuracy: 80.79%
Accuracy: 81.13%
Accuracy: 81.03%
Accuracy: 81.9%
Accuracy: 81.72%
Accuracy: 81.71%
Accuracy: 80.01%
Accuracy: 82.06%
Accuracy: 81.37%
Accuracy: 81.81%
Accuracy: 81.8%
Accuracy: 81.83%
Accuracy: 82.19%
Accuracy: 82.21%
Accuracy: 82.0%
Accuracy: 81.92%
Accuracy: 81.61%
Accuracy: 81.14%
Accuracy: 82.18%
Accuracy: 81.92%
Accuracy: 82.3%
Accuracy: 80.84%
Accuracy: 81.48%
Accuracy: 81.22%
Accuracy: 82.14%
Accuracy: 80.44%
Accuracy: 81.6%
Accuracy: 81.72%
Accuracy: 81.07%
Accuracy: 81.62%
Accuracy: 81.45%
Accuracy: 81.97%
Accuracy: 81.07%
Accuracy: 82.14%
Accuracy: 82.13%
Accuracy: 81.9%
Accuracy: 82.01%
Accuracy: 82.16%
Accuracy: 80.7%
Accuracy: 82.16%
Accuracy: 81.24%
Accuracy: 81.57%
Accuracy: 81.67%
Accuracy: 81.76%
Accuracy: 81.55%
Accuracy: 81.53%
Accuracy: 81.22%
Accuracy: 81.81%
Accuracy: 81.83%
Accuracy: 82.13%
Accuracy: 82.01%
Accuracy: 81.49%
Accuracy: 81.59%
Accuracy: 82.25%
Accuracy: 81.81%
Accuracy: 81.91%
Accuracy: 79.91%
Accuracy: 80.52%
Accuracy: 82.01%
Accuracy: 82.3%
Accuracy: 81.84%
Accuracy: 81.34%
Accuracy: 82.23%
Accuracy: 81.67%
Accuracy: 80.8%
Accuracy: 82.24%
Accuracy: 81.01%
Accuracy: 81.52%
Accuracy: 82.5%
Accuracy: 81.5%
Accuracy: 81.65%
Accuracy: 82.2%
Accuracy: 81.92%
Accuracy: 81.64%
Accuracy: 81.71%
Accuracy: 82.06%
Accuracy: 81.5%
Accuracy: 81.68%
Accuracy: 82.43%
Accuracy: 81.71%
Accuracy: 80.84%
Accuracy: 81.11%
Accuracy: 82.12%
Accuracy: 81.43%
Accuracy: 80.94%
Accuracy: 81.72%
Accuracy: 82.26%
Accuracy: 82.12%
Accuracy: 81.37%
Accuracy: 81.04%
Accuracy: 82.02%
Accuracy: 81.63%
Accuracy: 81.5%
Accuracy: 82.34%
Accuracy: 80.9%
Accuracy: 81.66%
Accuracy: 81.9%
Accuracy: 81.99%
Accuracy: 80.4%
Accuracy: 82.35%
Accuracy: 80.83%
Accuracy: 82.15%
Accuracy: 81.66%
Accuracy: 81.5%
Accuracy: 82.02%
Accuracy: 81.45%
Accuracy: 81.28%
Accuracy: 81.08%
Accuracy: 81.16%
Accuracy: 82.13%
Accuracy: 81.85%
Accuracy: 81.96%
Accuracy: 81.9%
Accuracy: 82.01%
Accuracy: 81.91%
Accuracy: 81.41%
Accuracy: 81.16%
Accuracy: 81.65%
Accuracy: 82.29%
Accuracy: 82.11%
Accuracy: 81.46%
Accuracy: 82.61%
Accuracy: 82.21%
Accuracy: 81.85%
Accuracy: 82.41%
Accuracy: 80.74%
Accuracy: 81.12%
Accuracy: 81.85%
Accuracy: 81.95%
Accuracy: 82.23%
Accuracy: 81.88%
Accuracy: 82.13%
Accuracy: 81.88%
Accuracy: 82.0%
Accuracy: 81.01%
Accuracy: 81.08%
Accuracy: 81.3%
Accuracy: 81.19%
Accuracy: 81.39%
Accuracy: 81.16%
Accuracy: 81.73%
Accuracy: 81.98%
Accuracy: 81.06%
Accuracy: 81.32%
Accuracy: 81.64%
Accuracy: 81.32%
Accuracy: 82.09%
Accuracy: 81.84%
Accuracy: 81.4%
Accuracy: 81.96%
Accuracy: 82.08%
Accuracy: 82.3%
Accuracy: 81.59%
Accuracy: 81.25%
Accuracy: 81.23%
Accuracy: 82.52%
Accuracy: 81.72%
Accuracy: 82.3%
Accuracy: 82.04%
Accuracy: 82.1%
Accuracy: 82.41%
Accuracy: 81.41%
Accuracy: 82.26%
Accuracy: 81.14%
Accuracy: 82.14%
Accuracy: 81.78%
Accuracy: 82.62%
Accuracy: 82.0%
Accuracy: 81.02%
Accuracy: 81.94%
Accuracy: 81.92%
Accuracy: 82.29%
Accuracy: 81.8%
Accuracy: 82.39%
Accuracy: 82.3%
Accuracy: 81.64%
Accuracy: 81.46%
Accuracy: 81.06%
Accuracy: 82.14%
Accuracy: 81.61%
Accuracy: 81.61%
Accuracy: 81.69%
Accuracy: 81.69%
Accuracy: 82.15%
Accuracy: 82.02%
Accuracy: 82.06%
Accuracy: 82.57%
Accuracy: 81.51%
Accuracy: 81.88%
Accuracy: 81.94%
Accuracy: 81.16%
Accuracy: 81.4%
Accuracy: 82.03%
Accuracy: 82.09%
Accuracy: 82.07%
Accuracy: 82.01%
Accuracy: 82.65%
Accuracy: 82.13%
Accuracy: 81.54%
Accuracy: 81.62%
Accuracy: 82.84%
Accuracy: 82.43%
Accuracy: 82.25%
Accuracy: 82.7%
Accuracy: 81.38%
Accuracy: 81.97%
Accuracy: 82.1%
Accuracy: 82.18%
Accuracy: 80.99%
Accuracy: 81.79%
Accuracy: 81.14%
Accuracy: 82.37%
Accuracy: 82.03%
Accuracy: 82.18%
Accuracy: 82.37%
Accuracy: 82.28%
Accuracy: 82.0%
Accuracy: 82.07%
Accuracy: 80.91%
Accuracy: 82.23%
Accuracy: 81.93%
Accuracy: 82.45%
Accuracy: 80.57%
Accuracy: 82.74%
Accuracy: 82.76%
Accuracy: 81.61%
Accuracy: 82.22%
Accuracy: 81.6%
Accuracy: 82.08%
Accuracy: 81.58%
Accuracy: 82.02%
Accuracy: 82.03%
Accuracy: 81.92%
Accuracy: 80.98%
Accuracy: 81.94%
Accuracy: 81.44%
Accuracy: 82.03%
Accuracy: 81.54%
Accuracy: 81.47%
Accuracy: 82.17%
Accuracy: 82.25%
Accuracy: 82.49%
Accuracy: 81.8%
Accuracy: 82.38%
Accuracy: 81.47%
Accuracy: 81.73%
Accuracy: 81.7%
Accuracy: 81.09%
Accuracy: 81.41%
Accuracy: 81.95%
Accuracy: 81.73%
Accuracy: 81.9%
Accuracy: 81.97%
Accuracy: 82.1%
Accuracy: 81.35%
Accuracy: 82.15%
Accuracy: 82.21%
Accuracy: 82.71%
Accuracy: 81.48%
Accuracy: 82.52%
Accuracy: 82.07%
Accuracy: 81.79%
Accuracy: 81.27%
Accuracy: 82.22%
Accuracy: 81.02%
Accuracy: 82.44%
Accuracy: 81.73%
Accuracy: 82.12%
Accuracy: 82.1%
Accuracy: 81.57%
Accuracy: 82.1%
Accuracy: 81.93%
Accuracy: 81.4%
Accuracy: 82.13%
Accuracy: 81.82%
Accuracy: 81.54%
Accuracy: 81.48%
Accuracy: 82.08%
Accuracy: 82.31%
Accuracy: 82.76%
Accuracy: 81.63%
Accuracy: 81.99%
Accuracy: 81.38%
Accuracy: 81.3%
Accuracy: 81.77%
Accuracy: 82.06%
Accuracy: 82.35%
Accuracy: 81.84%
Accuracy: 82.18%
Accuracy: 82.16%
Accuracy: 82.17%
Accuracy: 81.24%
Accuracy: 82.54%
Accuracy: 83.06%
Accuracy: 82.58%
Accuracy: 82.23%
Accuracy: 81.76%
Accuracy: 81.65%
Accuracy: 82.09%
Accuracy: 82.21%
Accuracy: 82.6%
Accuracy: 81.86%
Accuracy: 81.56%
Accuracy: 81.76%
Accuracy: 81.76%
Accuracy: 82.6%
Accuracy: 82.23%
Accuracy: 82.42%
Accuracy: 82.13%
Accuracy: 82.22%
Accuracy: 81.33%
Accuracy: 81.54%
Accuracy: 81.94%
Accuracy: 82.39%
Accuracy: 81.9%
Accuracy: 81.67%
Accuracy: 80.69%
Accuracy: 82.55%
Accuracy: 82.02%
Accuracy: 82.05%
Accuracy: 82.17%
Accuracy: 81.86%
Accuracy: 82.33%
Accuracy: 82.29%
Accuracy: 82.55%
Accuracy: 82.28%
Accuracy: 82.32%
Accuracy: 82.38%
Accuracy: 82.12%
Accuracy: 82.13%
Accuracy: 82.35%
Accuracy: 81.47%
Accuracy: 82.52%
Accuracy: 81.99%
Accuracy: 81.15%
Accuracy: 82.31%
Accuracy: 80.23%
Accuracy: 81.71%
Accuracy: 81.76%
Accuracy: 81.75%
Accuracy: 82.45%
Accuracy: 82.2%
Accuracy: 82.63%
Accuracy: 82.33%
Accuracy: 81.72%
Accuracy: 82.45%
Accuracy: 82.37%
Accuracy: 81.56%
Accuracy: 81.79%
Accuracy: 82.17%
Accuracy: 81.69%
Accuracy: 82.1%
Accuracy: 81.42%
Accuracy: 81.9%
Accuracy: 81.44%
Accuracy: 82.46%
Accuracy: 82.26%
Accuracy: 82.25%
Accuracy: 82.2%
Accuracy: 82.05%
Accuracy: 82.24%
Accuracy: 82.09%
Accuracy: 82.07%
Accuracy: 81.71%
Accuracy: 81.78%
Accuracy: 82.2%
Accuracy: 81.7%
Accuracy: 82.25%
Accuracy: 83.0%
Accuracy: 81.68%
Accuracy: 81.94%
Accuracy: 82.76%
Accuracy: 82.45%
Accuracy: 82.73%
Accuracy: 82.46%
Accuracy: 82.65%
Accuracy: 80.45%
Accuracy: 83.14%
Accuracy: 81.88%
Accuracy: 81.83%
Accuracy: 81.96%
Accuracy: 82.28%
Accuracy: 80.74%
Accuracy: 82.12%
Accuracy: 81.84%
Accuracy: 82.13%
Accuracy: 82.17%
Accuracy: 81.6%
Accuracy: 82.35%
Accuracy: 81.82%
Accuracy: 81.3%
Accuracy: 81.95%
Accuracy: 82.16%
Accuracy: 81.2%
Accuracy: 81.46%
Accuracy: 81.17%
Accuracy: 81.77%
Accuracy: 82.23%
Accuracy: 81.74%
Accuracy: 81.95%
Accuracy: 80.65%
Accuracy: 81.71%
Accuracy: 81.73%
Accuracy: 81.74%
Accuracy: 81.95%
Accuracy: 82.3%
Accuracy: 81.82%
Accuracy: 81.67%
Accuracy: 81.68%
Accuracy: 81.82%
Accuracy: 82.01%
Accuracy: 82.14%
Accuracy: 81.16%
Accuracy: 81.75%
Accuracy: 82.02%
Accuracy: 81.43%
Accuracy: 81.71%
Accuracy: 81.11%
Accuracy: 81.26%
Accuracy: 82.55%
Accuracy: 82.38%
Accuracy: 80.76%
Accuracy: 81.67%
Accuracy: 82.17%
Accuracy: 82.0%
Accuracy: 82.58%
Accuracy: 81.67%
Accuracy: 81.42%
Accuracy: 81.05%
Accuracy: 81.75%
Accuracy: 81.89%
Accuracy: 81.81%
Accuracy: 81.73%
Accuracy: 82.05%
Accuracy: 81.87%
Accuracy: 82.43%
Accuracy: 82.03%
Accuracy: 82.37%
Accuracy: 82.33%
Accuracy: 82.4%
Accuracy: 82.34%
Accuracy: 82.51%
Accuracy: 82.2%
Accuracy: 81.83%
Accuracy: 81.88%
Accuracy: 81.42%
Accuracy: 81.83%
Accuracy: 81.72%
Accuracy: 81.72%
Accuracy: 81.8%
Accuracy: 82.31%
Accuracy: 81.38%
Accuracy: 81.46%
Accuracy: 81.92%
Accuracy: 80.86%
Accuracy: 82.13%
Accuracy: 81.39%
Accuracy: 81.86%
Accuracy: 82.65%
Accuracy: 81.59%
Accuracy: 82.06%
Accuracy: 82.11%
Accuracy: 81.47%
Accuracy: 81.83%
Accuracy: 82.29%
Accuracy: 80.92%
Accuracy: 81.87%
Accuracy: 82.08%
Accuracy: 82.04%
Accuracy: 81.7%
Accuracy: 81.6%
Accuracy: 80.2%
Accuracy: 82.15%
Accuracy: 81.08%
Accuracy: 81.99%
Accuracy: 81.53%
Accuracy: 81.61%
Accuracy: 82.22%
Accuracy: 81.31%
Accuracy: 82.74%
Accuracy: 82.43%
Accuracy: 82.22%
Accuracy: 81.88%
Accuracy: 82.32%
Accuracy: 81.79%
Accuracy: 82.04%
Accuracy: 81.5%
Accuracy: 82.4%
Accuracy: 82.05%
Accuracy: 81.56%
Accuracy: 81.92%
Accuracy: 82.2%
Accuracy: 81.44%
Accuracy: 82.48%
Accuracy: 82.16%
Accuracy: 81.63%
Accuracy: 82.63%
Accuracy: 81.65%
Accuracy: 81.89%
Accuracy: 82.66%
Accuracy: 80.55%
Accuracy: 82.58%
Accuracy: 81.89%
Accuracy: 81.91%
Accuracy: 81.92%
Accuracy: 81.4%
Accuracy: 81.92%
Accuracy: 82.23%
Accuracy: 81.9%
Accuracy: 82.02%
Accuracy: 82.27%
Accuracy: 82.35%
Accuracy: 81.96%
Accuracy: 81.09%
Accuracy: 82.07%
Accuracy: 82.57%
Accuracy: 82.06%
Accuracy: 82.23%
Accuracy: 80.67%
Accuracy: 81.14%
Accuracy: 82.09%
Accuracy: 81.07%
Accuracy: 82.4%
Accuracy: 82.25%
Accuracy: 82.35%
Accuracy: 81.77%
Accuracy: 81.45%
Accuracy: 82.09%
Accuracy: 81.22%
Accuracy: 81.83%
Accuracy: 82.38%
Accuracy: 81.8%
Accuracy: 82.39%
Accuracy: 82.35%
Accuracy: 81.32%
Accuracy: 82.14%
Accuracy: 82.02%
Accuracy: 81.91%
Accuracy: 82.12%
Accuracy: 81.11%
Accuracy: 81.44%
Accuracy: 81.47%
Accuracy: 82.38%
Accuracy: 82.5%
Accuracy: 81.91%
Accuracy: 82.34%
Accuracy: 80.65%
Accuracy: 81.06%
Accuracy: 81.25%
Accuracy: 80.7%
Accuracy: 81.77%
Accuracy: 80.33%
Accuracy: 81.3%
Accuracy: 81.86%
Accuracy: 82.0%
Accuracy: 82.05%
Accuracy: 81.38%
Accuracy: 81.83%
Accuracy: 81.47%
Accuracy: 82.04%
Accuracy: 80.76%
Accuracy: 82.4%
Accuracy: 82.7%
Accuracy: 81.54%
Accuracy: 82.15%
Accuracy: 81.71%
Accuracy: 79.96%
Accuracy: 82.09%
Accuracy: 82.4%
Accuracy: 82.2%
Accuracy: 81.37%
Accuracy: 81.92%
Accuracy: 81.81%
Accuracy: 81.61%
Accuracy: 80.52%
Accuracy: 81.87%
Accuracy: 81.24%
Accuracy: 82.06%
Accuracy: 81.92%
Accuracy: 81.97%
Accuracy: 82.47%
Accuracy: 82.16%
Accuracy: 81.98%
Accuracy: 82.43%
Accuracy: 82.2%
Accuracy: 82.14%
Accuracy: 82.24%
Accuracy: 82.75%
Accuracy: 82.21%
Accuracy: 82.14%
Accuracy: 81.7%
Accuracy: 82.02%
Accuracy: 81.1%
Accuracy: 81.79%
Accuracy: 81.85%
Accuracy: 81.63%
Accuracy: 81.98%
Accuracy: 82.64%
Accuracy: 82.21%
Accuracy: 81.97%
Accuracy: 81.94%
Accuracy: 81.73%
Accuracy: 81.78%
Accuracy: 81.88%
Accuracy: 81.17%
Accuracy: 81.84%
Accuracy: 81.88%
Accuracy: 81.76%
Accuracy: 81.11%
Accuracy: 81.82%
Accuracy: 82.52%
Accuracy: 82.23%
Accuracy: 82.12%
Accuracy: 81.66%
Accuracy: 82.34%
Accuracy: 81.75%
Accuracy: 82.24%
Accuracy: 81.64%
Accuracy: 82.06%
Accuracy: 82.02%
Accuracy: 82.14%
Accuracy: 80.99%
Accuracy: 81.48%
Accuracy: 82.23%
Accuracy: 82.25%
Accuracy: 81.29%
Accuracy: 80.61%
Accuracy: 81.56%
Accuracy: 81.99%
Accuracy: 81.63%
Accuracy: 82.66%
Accuracy: 81.76%
Accuracy: 81.72%
Accuracy: 82.09%
Accuracy: 82.25%
Accuracy: 82.28%
Accuracy: 82.18%
Accuracy: 79.89%
Accuracy: 82.22%
Accuracy: 81.0%
Accuracy: 81.98%
Accuracy: 82.18%
Accuracy: 81.42%
Accuracy: 81.44%
Accuracy: 81.67%
Accuracy: 82.01%
Accuracy: 81.9%
Accuracy: 81.77%
Accuracy: 81.73%
Accuracy: 82.5%
Accuracy: 81.99%
Accuracy: 81.89%
Accuracy: 81.63%
Accuracy: 81.54%
Accuracy: 81.83%
Accuracy: 82.18%
Accuracy: 82.11%
Accuracy: 81.7%
Accuracy: 82.71%
Accuracy: 82.23%
Accuracy: 82.39%
Accuracy: 81.57%
Accuracy: 81.48%
Accuracy: 81.62%
Accuracy: 81.98%
Accuracy: 81.48%
Accuracy: 81.02%
Accuracy: 81.09%
Accuracy: 82.25%
Accuracy: 82.5%
Accuracy: 83.15%
Accuracy: 80.77%
Accuracy: 81.09%
Accuracy: 81.53%
Accuracy: 81.51%
Accuracy: 82.11%
Accuracy: 81.69%
Accuracy: 81.14%
Accuracy: 81.86%
Accuracy: 82.36%
Accuracy: 81.26%
Accuracy: 81.55%
Accuracy: 81.34%
Accuracy: 81.18%
Accuracy: 82.17%
Accuracy: 81.45%
Accuracy: 81.68%
Accuracy: 81.8%
Accuracy: 81.54%
Accuracy: 81.42%
Accuracy: 81.49%
Accuracy: 81.8%
Accuracy: 81.14%
Accuracy: 81.35%
Accuracy: 81.41%
Accuracy: 81.14%
Accuracy: 81.47%
Accuracy: 81.85%
Accuracy: 81.57%
Accuracy: 82.02%
Accuracy: 82.16%
Accuracy: 82.2%
Accuracy: 80.28%
Accuracy: 81.57%
Accuracy: 81.06%
Accuracy: 80.58%
Accuracy: 81.43%
Accuracy: 82.02%
Accuracy: 81.62%
Accuracy: 81.22%
Accuracy: 81.05%
Accuracy: 81.69%
Accuracy: 82.06%
Accuracy: 82.02%
Accuracy: 81.69%
Accuracy: 81.89%
Accuracy: 81.32%
Accuracy: 81.18%
Accuracy: 81.59%
Accuracy: 82.04%
Accuracy: 81.62%
Accuracy: 82.2%
Accuracy: 81.52%
Accuracy: 82.19%
Accuracy: 81.38%
Accuracy: 81.65%
Accuracy: 81.18%
Accuracy: 81.77%
Accuracy: 81.95%
Accuracy: 81.46%
Accuracy: 81.0%
Accuracy: 82.13%
Accuracy: 81.64%
Accuracy: 81.38%
Accuracy: 81.16%
Accuracy: 81.67%
Accuracy: 81.7%
Accuracy: 81.11%
Accuracy: 82.38%
Accuracy: 81.59%
Accuracy: 82.16%
Accuracy: 82.6%
Accuracy: 81.09%
Accuracy: 81.56%
Accuracy: 80.16%
Accuracy: 81.75%
Accuracy: 80.8%
Accuracy: 80.5%
Accuracy: 81.33%
Accuracy: 81.75%
Accuracy: 80.87%
Accuracy: 81.93%
Accuracy: 82.3%
Accuracy: 81.46%
Accuracy: 80.74%
Accuracy: 81.67%
Accuracy: 81.98%
Accuracy: 82.27%
Accuracy: 82.09%
Accuracy: 81.54%
Accuracy: 81.72%
Accuracy: 80.56%
Accuracy: 81.24%
Accuracy: 81.6%
Accuracy: 80.96%
Accuracy: 81.0%
Accuracy: 81.8%
Accuracy: 80.69%
Accuracy: 80.96%
Accuracy: 80.54%
Accuracy: 82.43%
Accuracy: 81.33%
Accuracy: 81.84%
Accuracy: 82.01%
Accuracy: 81.59%
Accuracy: 81.7%
Accuracy: 81.71%
Accuracy: 82.17%
Accuracy: 81.89%
Accuracy: 81.13%
Accuracy: 81.79%
Accuracy: 81.15%
Accuracy: 81.95%
Accuracy: 80.99%
Accuracy: 80.37%
Accuracy: 81.62%
Accuracy: 81.78%
Accuracy: 80.93%
Accuracy: 81.56%
Accuracy: 81.75%
Accuracy: 81.31%
Accuracy: 81.59%
Accuracy: 81.55%
Accuracy: 82.02%
Accuracy: 81.55%
Accuracy: 80.44%
Accuracy: 82.03%
Accuracy: 81.57%
Accuracy: 81.99%
Accuracy: 81.38%
Accuracy: 81.77%
Accuracy: 81.78%
Accuracy: 81.01%
Accuracy: 81.63%
Accuracy: 81.59%
Accuracy: 80.79%
Accuracy: 81.45%
Accuracy: 81.69%
Accuracy: 81.76%