In [1]:
from __future__ import print_function
import gzip
import itertools
import pickle
import os
import sys
import numpy as np
import lasagne
import theano
import theano.tensor as T
import time
from sklearn.externals import joblib

In [2]:
NUM_EPOCHS = 500
BATCH_SIZE = 600
NUM_HIDDEN_UNITS = 512
LEARNING_RATE = 0.01
MOMENTUM = 0.9

In [21]:
def create_iter_functions(dataset, output_layer,
                          X_tensor_type=T.matrix,
                          batch_size=BATCH_SIZE,
                          learning_rate=LEARNING_RATE, momentum=MOMENTUM):
    """Create functions for training, validation and testing to iterate one
       epoch.
    """
    batch_index = T.iscalar('batch_index')
    X_batch = X_tensor_type('x')
    y_batch = T.ivector('y')
    batch_slice = slice(batch_index * batch_size,
                        (batch_index + 1) * batch_size)

    objective = lasagne.objectives.Objective(output_layer,
        loss_function=lasagne.objectives.categorical_crossentropy)

    loss_train = objective.get_loss(X_batch, target=y_batch)
    loss_eval = objective.get_loss(X_batch, target=y_batch,
                                   deterministic=True)

    pred = T.argmax(
        lasagne.layers.get_output(output_layer, X_batch, deterministic=True),
        axis=1)
    accuracy = T.mean(T.eq(pred, y_batch), dtype=theano.config.floatX)

    all_params = lasagne.layers.get_all_params(output_layer)
    updates = lasagne.updates.nesterov_momentum(
        loss_train, all_params, learning_rate, momentum)

    iter_train = theano.function(
        [batch_index], loss_train,
        updates=updates,
        givens={
            X_batch: dataset['X_train'][batch_slice],
            y_batch: dataset['y_train'][batch_slice],
        },
    )

    iter_valid = theano.function(
        [batch_index], [loss_eval, accuracy],
        givens={
            X_batch: dataset['X_valid'][batch_slice],
            y_batch: dataset['y_valid'][batch_slice],
        },
    )

    iter_test = theano.function(
        [batch_index], [loss_eval, accuracy],
        givens={
            X_batch: dataset['X_test'][batch_slice],
            y_batch: dataset['y_test'][batch_slice],
        },
    )

    return dict(
        train=iter_train,
        valid=iter_valid,
        test=iter_test,
    )

In [22]:
def train(iter_funcs, dataset, batch_size=BATCH_SIZE):
    """Train the model with `dataset` with mini-batch training. Each
       mini-batch has `batch_size` recordings.
    """
    num_batches_train = dataset['num_examples_train'] // batch_size
    num_batches_valid = dataset['num_examples_valid'] // batch_size

    for epoch in itertools.count(1):
        batch_train_losses = []
        for b in range(num_batches_train):
            batch_train_loss = iter_funcs['train'](b)
            batch_train_losses.append(batch_train_loss)

        avg_train_loss = np.mean(batch_train_losses)

        batch_valid_losses = []
        batch_valid_accuracies = []
        for b in range(num_batches_valid):
            batch_valid_loss, batch_valid_accuracy = iter_funcs['valid'](b)
            batch_valid_losses.append(batch_valid_loss)
            batch_valid_accuracies.append(batch_valid_accuracy)

        avg_valid_loss = np.mean(batch_valid_losses)
        avg_valid_accuracy = np.mean(batch_valid_accuracies)

        yield {
            'number': epoch,
            'train_loss': avg_train_loss,
            'valid_loss': avg_valid_loss,
            'valid_accuracy': avg_valid_accuracy,
        }

In [23]:
def load_data(features, labels):
    """Get data with labels, split into training, validation and test set."""
    X_train = features[:4000]
    y_train = labels[:4000]
    X_valid = features[4000:5000]
    y_valid = labels[4000:5000]
    X_test = features[5000:]
    y_test = labels[5000:]

    return dict(
        X_train=theano.shared(lasagne.utils.floatX(X_train)),
        y_train=T.cast(theano.shared(y_train), 'int32'),
        X_valid=theano.shared(lasagne.utils.floatX(X_valid)),
        y_valid=T.cast(theano.shared(y_valid), 'int32'),
        X_test=theano.shared(lasagne.utils.floatX(X_test)),
        y_test=T.cast(theano.shared(y_test), 'int32'),
        num_examples_train=X_train.shape[0],
        num_examples_valid=X_valid.shape[0],
        num_examples_test=X_test.shape[0],
        input_dim=X_train.shape[1],
        output_dim=9,
    )

In [24]:
def build_model(input_dim, output_dim,
                batch_size=BATCH_SIZE, num_hidden_units=NUM_HIDDEN_UNITS):
    """Create a symbolic representation of a neural network with `intput_dim`
    input nodes, `output_dim` output nodes and `num_hidden_units` per hidden
    layer.

    The training function of this model must have a mini-batch size of
    `batch_size`.

    A theano expression which represents such a network is returned.
    """
    l_in = lasagne.layers.InputLayer(
        shape=(batch_size, input_dim),
    )
    l_hidden1 = lasagne.layers.DenseLayer(
        l_in,
        num_units=num_hidden_units,
        nonlinearity=lasagne.nonlinearities.rectify,
    )
    l_hidden1_dropout = lasagne.layers.DropoutLayer(
        l_hidden1,
        p=0.5,
    )
    l_hidden2 = lasagne.layers.DenseLayer(
        l_hidden1_dropout,
        num_units=num_hidden_units,
        nonlinearity=lasagne.nonlinearities.rectify,
    )
    l_hidden2_dropout = lasagne.layers.DropoutLayer(
        l_hidden2,
        p=0.5,
    )
    l_out = lasagne.layers.DenseLayer(
        l_hidden2_dropout,
        num_units=output_dim,
        nonlinearity=lasagne.nonlinearities.softmax,
    )
    return l_out

In [25]:
def scale(X, eps = 0.001):
    # scale the data points s.t the columns of the feature space
    # (i.e the predictors) are within the range [0, 1]
    return (X - np.min(X, axis = 0)) / (np.max(X, axis = 0) + eps)

In [26]:
features = joblib.load("./mldata/features_1200.mat")
labels = joblib.load("./mldata/lables_1200.mat")

features = features.astype("float32")
features = scale(features)
labels = np.array(labels, 'int')

dataset = load_data(features, labels)

print("Building model and compiling functions...")
output_layer = build_model(
    input_dim=dataset['input_dim'],
    output_dim=dataset['output_dim'],
)
iter_funcs = create_iter_functions(dataset, output_layer)

print("Starting training...")
now = time.time()
num_epochs = NUM_EPOCHS
try:
    for epoch in train(iter_funcs, dataset):
        print("Epoch {} of {} took {:.3f}s".format(
            epoch['number'], num_epochs, time.time() - now))
        now = time.time()
        print("  training loss:\t\t{:.6f}".format(epoch['train_loss']))
        print("  validation loss:\t\t{:.6f}".format(epoch['valid_loss']))
        print("  validation accuracy:\t\t{:.2f} %%".format(
            epoch['valid_accuracy'] * 100))

        if epoch['number'] >= num_epochs:
            break

except KeyboardInterrupt:
    pass


Building model and compiling functions...
Starting training...
Epoch 1 of 500 took 0.554s
  training loss:		2.212563
  validation loss:		1.357382
  validation accuracy:		72.67 %%
Epoch 2 of 500 took 0.517s
  training loss:		1.301100
  validation loss:		0.789225
  validation accuracy:		89.50 %%
Epoch 3 of 500 took 0.504s
  training loss:		0.849578
  validation loss:		0.528523
  validation accuracy:		89.67 %%
Epoch 4 of 500 took 0.506s
  training loss:		0.620904
  validation loss:		0.439446
  validation accuracy:		90.00 %%
Epoch 5 of 500 took 0.513s
  training loss:		0.512841
  validation loss:		0.418126
  validation accuracy:		89.67 %%
Epoch 6 of 500 took 0.503s
  training loss:		0.447643
  validation loss:		0.412704
  validation accuracy:		89.50 %%
Epoch 7 of 500 took 0.508s
  training loss:		0.424851
  validation loss:		0.408623
  validation accuracy:		89.50 %%
Epoch 8 of 500 took 0.520s
  training loss:		0.408980
  validation loss:		0.402280
  validation accuracy:		89.50 %%
Epoch 9 of 500 took 0.507s
  training loss:		0.393826
  validation loss:		0.396009
  validation accuracy:		89.67 %%
Epoch 10 of 500 took 0.516s
  training loss:		0.369515
  validation loss:		0.392182
  validation accuracy:		90.00 %%
Epoch 11 of 500 took 0.504s
  training loss:		0.365479
  validation loss:		0.389200
  validation accuracy:		89.83 %%
Epoch 12 of 500 took 0.507s
  training loss:		0.351615
  validation loss:		0.386139
  validation accuracy:		90.33 %%
Epoch 13 of 500 took 0.544s
  training loss:		0.354457
  validation loss:		0.383394
  validation accuracy:		90.17 %%
Epoch 14 of 500 took 0.505s
  training loss:		0.347704
  validation loss:		0.381520
  validation accuracy:		90.17 %%
Epoch 15 of 500 took 0.516s
  training loss:		0.340337
  validation loss:		0.378631
  validation accuracy:		90.33 %%
Epoch 16 of 500 took 0.532s
  training loss:		0.337515
  validation loss:		0.373871
  validation accuracy:		90.50 %%
Epoch 17 of 500 took 0.526s
  training loss:		0.335463
  validation loss:		0.370887
  validation accuracy:		90.50 %%
Epoch 18 of 500 took 0.525s
  training loss:		0.312103
  validation loss:		0.370339
  validation accuracy:		90.67 %%
Epoch 19 of 500 took 0.554s
  training loss:		0.323713
  validation loss:		0.369846
  validation accuracy:		90.33 %%
Epoch 20 of 500 took 0.587s
  training loss:		0.322713
  validation loss:		0.366978
  validation accuracy:		90.83 %%
Epoch 21 of 500 took 0.576s
  training loss:		0.313227
  validation loss:		0.364737
  validation accuracy:		90.67 %%
Epoch 22 of 500 took 0.608s
  training loss:		0.299187
  validation loss:		0.363983
  validation accuracy:		91.00 %%
Epoch 23 of 500 took 0.571s
  training loss:		0.306930
  validation loss:		0.363656
  validation accuracy:		90.67 %%
Epoch 24 of 500 took 0.563s
  training loss:		0.303755
  validation loss:		0.363661
  validation accuracy:		90.67 %%
Epoch 25 of 500 took 0.509s
  training loss:		0.302773
  validation loss:		0.362870
  validation accuracy:		90.67 %%
Epoch 26 of 500 took 0.507s
  training loss:		0.295430
  validation loss:		0.361361
  validation accuracy:		90.67 %%
Epoch 27 of 500 took 0.521s
  training loss:		0.287428
  validation loss:		0.358771
  validation accuracy:		90.67 %%
Epoch 28 of 500 took 0.513s
  training loss:		0.296747
  validation loss:		0.357170
  validation accuracy:		90.67 %%
Epoch 29 of 500 took 0.606s
  training loss:		0.288987
  validation loss:		0.357729
  validation accuracy:		90.67 %%
Epoch 30 of 500 took 0.539s
  training loss:		0.282418
  validation loss:		0.357081
  validation accuracy:		90.67 %%
Epoch 31 of 500 took 0.496s
  training loss:		0.290727
  validation loss:		0.355975
  validation accuracy:		90.67 %%
Epoch 32 of 500 took 0.515s
  training loss:		0.281680
  validation loss:		0.354811
  validation accuracy:		90.67 %%
Epoch 33 of 500 took 0.505s
  training loss:		0.273497
  validation loss:		0.353391
  validation accuracy:		90.67 %%
Epoch 34 of 500 took 0.510s
  training loss:		0.272299
  validation loss:		0.353180
  validation accuracy:		90.67 %%
Epoch 35 of 500 took 0.509s
  training loss:		0.274959
  validation loss:		0.351814
  validation accuracy:		90.67 %%
Epoch 36 of 500 took 0.498s
  training loss:		0.269371
  validation loss:		0.350328
  validation accuracy:		90.67 %%
Epoch 37 of 500 took 0.493s
  training loss:		0.271597
  validation loss:		0.349905
  validation accuracy:		90.67 %%
Epoch 38 of 500 took 0.500s
  training loss:		0.273270
  validation loss:		0.350546
  validation accuracy:		90.67 %%
Epoch 39 of 500 took 0.518s
  training loss:		0.265132
  validation loss:		0.349787
  validation accuracy:		90.67 %%
Epoch 40 of 500 took 0.499s
  training loss:		0.270219
  validation loss:		0.348710
  validation accuracy:		90.67 %%
Epoch 41 of 500 took 0.505s
  training loss:		0.264988
  validation loss:		0.348955
  validation accuracy:		90.67 %%
Epoch 42 of 500 took 0.496s
  training loss:		0.263798
  validation loss:		0.348160
  validation accuracy:		90.67 %%
Epoch 43 of 500 took 0.515s
  training loss:		0.259839
  validation loss:		0.347456
  validation accuracy:		90.67 %%
Epoch 44 of 500 took 0.504s
  training loss:		0.259743
  validation loss:		0.348119
  validation accuracy:		90.67 %%
Epoch 45 of 500 took 0.514s
  training loss:		0.261768
  validation loss:		0.348182
  validation accuracy:		90.83 %%
Epoch 46 of 500 took 0.518s
  training loss:		0.256819
  validation loss:		0.347164
  validation accuracy:		90.83 %%
Epoch 47 of 500 took 0.501s
  training loss:		0.255079
  validation loss:		0.345837
  validation accuracy:		90.83 %%
Epoch 48 of 500 took 0.505s
  training loss:		0.247465
  validation loss:		0.345990
  validation accuracy:		90.83 %%
Epoch 49 of 500 took 0.501s
  training loss:		0.246268
  validation loss:		0.347595
  validation accuracy:		90.83 %%
Epoch 50 of 500 took 0.519s
  training loss:		0.254081
  validation loss:		0.348336
  validation accuracy:		90.67 %%
Epoch 51 of 500 took 0.507s
  training loss:		0.247604
  validation loss:		0.349471
  validation accuracy:		90.67 %%
Epoch 52 of 500 took 0.514s
  training loss:		0.242117
  validation loss:		0.349595
  validation accuracy:		90.83 %%
Epoch 53 of 500 took 0.547s
  training loss:		0.245925
  validation loss:		0.347918
  validation accuracy:		90.67 %%
Epoch 54 of 500 took 0.505s
  training loss:		0.252451
  validation loss:		0.345641
  validation accuracy:		90.67 %%
Epoch 55 of 500 took 0.507s
  training loss:		0.238750
  validation loss:		0.344868
  validation accuracy:		90.67 %%
Epoch 56 of 500 took 0.511s
  training loss:		0.242358
  validation loss:		0.343926
  validation accuracy:		90.83 %%
Epoch 57 of 500 took 0.511s
  training loss:		0.245817
  validation loss:		0.344148
  validation accuracy:		90.83 %%
Epoch 58 of 500 took 0.518s
  training loss:		0.238174
  validation loss:		0.344923
  validation accuracy:		90.83 %%
Epoch 59 of 500 took 0.499s
  training loss:		0.237185
  validation loss:		0.345343
  validation accuracy:		90.83 %%
Epoch 60 of 500 took 0.494s
  training loss:		0.240364
  validation loss:		0.345230
  validation accuracy:		90.83 %%
Epoch 61 of 500 took 0.508s
  training loss:		0.233236
  validation loss:		0.344083
  validation accuracy:		90.67 %%
Epoch 62 of 500 took 0.504s
  training loss:		0.237831
  validation loss:		0.345668
  validation accuracy:		90.67 %%
Epoch 63 of 500 took 0.500s
  training loss:		0.230621
  validation loss:		0.346340
  validation accuracy:		90.83 %%
Epoch 64 of 500 took 0.533s
  training loss:		0.230877
  validation loss:		0.346487
  validation accuracy:		90.83 %%
Epoch 65 of 500 took 0.507s
  training loss:		0.229972
  validation loss:		0.346589
  validation accuracy:		90.83 %%
Epoch 66 of 500 took 0.505s
  training loss:		0.231966
  validation loss:		0.346672
  validation accuracy:		90.83 %%
Epoch 67 of 500 took 0.495s
  training loss:		0.233163
  validation loss:		0.346856
  validation accuracy:		91.00 %%
Epoch 68 of 500 took 0.507s
  training loss:		0.227992
  validation loss:		0.346408
  validation accuracy:		90.83 %%
Epoch 69 of 500 took 0.523s
  training loss:		0.227453
  validation loss:		0.346218
  validation accuracy:		90.83 %%
Epoch 70 of 500 took 0.499s
  training loss:		0.223485
  validation loss:		0.346070
  validation accuracy:		90.83 %%
Epoch 71 of 500 took 0.506s
  training loss:		0.223411
  validation loss:		0.344974
  validation accuracy:		91.00 %%
Epoch 72 of 500 took 0.498s
  training loss:		0.233869
  validation loss:		0.344363
  validation accuracy:		91.00 %%
Epoch 73 of 500 took 0.508s
  training loss:		0.227577
  validation loss:		0.343205
  validation accuracy:		91.00 %%
Epoch 74 of 500 took 0.506s
  training loss:		0.225866
  validation loss:		0.342744
  validation accuracy:		91.17 %%
Epoch 75 of 500 took 0.514s
  training loss:		0.221926
  validation loss:		0.344036
  validation accuracy:		91.33 %%
Epoch 76 of 500 took 0.504s
  training loss:		0.221296
  validation loss:		0.345307
  validation accuracy:		91.17 %%
Epoch 77 of 500 took 0.493s
  training loss:		0.210707
  validation loss:		0.347464
  validation accuracy:		91.17 %%
Epoch 78 of 500 took 0.526s
  training loss:		0.215038
  validation loss:		0.348117
  validation accuracy:		91.17 %%
Epoch 79 of 500 took 0.522s
  training loss:		0.219028
  validation loss:		0.346458
  validation accuracy:		91.17 %%
Epoch 80 of 500 took 0.500s
  training loss:		0.216299
  validation loss:		0.346063
  validation accuracy:		91.17 %%
Epoch 81 of 500 took 0.505s
  training loss:		0.215585
  validation loss:		0.345873
  validation accuracy:		91.17 %%
Epoch 82 of 500 took 0.514s
  training loss:		0.214350
  validation loss:		0.345632
  validation accuracy:		91.17 %%
Epoch 83 of 500 took 0.509s
  training loss:		0.216883
  validation loss:		0.346956
  validation accuracy:		91.33 %%
Epoch 84 of 500 took 0.504s
  training loss:		0.212267
  validation loss:		0.347651
  validation accuracy:		91.33 %%
Epoch 85 of 500 took 0.513s
  training loss:		0.216667
  validation loss:		0.345920
  validation accuracy:		91.33 %%
Epoch 86 of 500 took 0.507s
  training loss:		0.213785
  validation loss:		0.344966
  validation accuracy:		91.17 %%
Epoch 87 of 500 took 0.510s
  training loss:		0.206041
  validation loss:		0.346759
  validation accuracy:		91.17 %%
Epoch 88 of 500 took 0.494s
  training loss:		0.206938
  validation loss:		0.346672
  validation accuracy:		91.17 %%
Epoch 89 of 500 took 0.502s
  training loss:		0.208915
  validation loss:		0.347151
  validation accuracy:		91.17 %%
Epoch 90 of 500 took 0.516s
  training loss:		0.207642
  validation loss:		0.348171
  validation accuracy:		91.17 %%
Epoch 91 of 500 took 0.516s
  training loss:		0.206369
  validation loss:		0.348354
  validation accuracy:		91.17 %%
Epoch 92 of 500 took 0.507s
  training loss:		0.208393
  validation loss:		0.348760
  validation accuracy:		91.33 %%
Epoch 93 of 500 took 0.501s
  training loss:		0.206199
  validation loss:		0.346293
  validation accuracy:		91.33 %%
Epoch 94 of 500 took 0.507s
  training loss:		0.203992
  validation loss:		0.343797
  validation accuracy:		91.33 %%
Epoch 95 of 500 took 0.497s
  training loss:		0.204061
  validation loss:		0.344042
  validation accuracy:		91.33 %%
Epoch 96 of 500 took 0.506s
  training loss:		0.194323
  validation loss:		0.347011
  validation accuracy:		91.17 %%
Epoch 97 of 500 took 0.509s
  training loss:		0.205042
  validation loss:		0.348781
  validation accuracy:		91.33 %%
Epoch 98 of 500 took 0.502s
  training loss:		0.206909
  validation loss:		0.346463
  validation accuracy:		91.33 %%
Epoch 99 of 500 took 0.508s
  training loss:		0.200721
  validation loss:		0.347608
  validation accuracy:		91.33 %%
Epoch 100 of 500 took 0.516s
  training loss:		0.200805
  validation loss:		0.348752
  validation accuracy:		91.33 %%
Epoch 101 of 500 took 0.524s
  training loss:		0.199123
  validation loss:		0.349506
  validation accuracy:		91.50 %%
Epoch 102 of 500 took 0.507s
  training loss:		0.202860
  validation loss:		0.347960
  validation accuracy:		91.33 %%
Epoch 103 of 500 took 0.493s
  training loss:		0.204831
  validation loss:		0.346607
  validation accuracy:		91.33 %%
Epoch 104 of 500 took 0.506s
  training loss:		0.192337
  validation loss:		0.348205
  validation accuracy:		91.33 %%
Epoch 105 of 500 took 0.515s
  training loss:		0.200447
  validation loss:		0.349517
  validation accuracy:		91.33 %%
Epoch 106 of 500 took 0.496s
  training loss:		0.199740
  validation loss:		0.348895
  validation accuracy:		91.33 %%
Epoch 107 of 500 took 0.602s
  training loss:		0.199348
  validation loss:		0.346908
  validation accuracy:		91.33 %%
Epoch 108 of 500 took 0.540s
  training loss:		0.195208
  validation loss:		0.346521
  validation accuracy:		91.33 %%
Epoch 109 of 500 took 0.595s
  training loss:		0.195862
  validation loss:		0.349331
  validation accuracy:		91.50 %%
Epoch 110 of 500 took 0.578s
  training loss:		0.194465
  validation loss:		0.351001
  validation accuracy:		91.33 %%
Epoch 111 of 500 took 0.544s
  training loss:		0.189810
  validation loss:		0.350078
  validation accuracy:		91.17 %%
Epoch 112 of 500 took 0.530s
  training loss:		0.197469
  validation loss:		0.348593
  validation accuracy:		91.50 %%
Epoch 113 of 500 took 0.560s
  training loss:		0.184688
  validation loss:		0.348835
  validation accuracy:		91.50 %%
Epoch 114 of 500 took 0.537s
  training loss:		0.188705
  validation loss:		0.349877
  validation accuracy:		91.33 %%
Epoch 115 of 500 took 0.535s
  training loss:		0.183380
  validation loss:		0.352381
  validation accuracy:		91.17 %%
Epoch 116 of 500 took 0.521s
  training loss:		0.192743
  validation loss:		0.351976
  validation accuracy:		91.17 %%
Epoch 117 of 500 took 0.513s
  training loss:		0.193948
  validation loss:		0.349956
  validation accuracy:		91.17 %%
Epoch 118 of 500 took 0.498s
  training loss:		0.185374
  validation loss:		0.349591
  validation accuracy:		91.33 %%
Epoch 119 of 500 took 0.539s
  training loss:		0.187753
  validation loss:		0.350289
  validation accuracy:		91.33 %%
Epoch 120 of 500 took 0.520s
  training loss:		0.181514
  validation loss:		0.352020
  validation accuracy:		91.50 %%
Epoch 121 of 500 took 0.495s
  training loss:		0.180254
  validation loss:		0.352288
  validation accuracy:		91.50 %%
Epoch 122 of 500 took 0.507s
  training loss:		0.180265
  validation loss:		0.352641
  validation accuracy:		91.50 %%
Epoch 123 of 500 took 0.502s
  training loss:		0.182092
  validation loss:		0.353148
  validation accuracy:		91.50 %%
Epoch 124 of 500 took 0.495s
  training loss:		0.188237
  validation loss:		0.353207
  validation accuracy:		91.50 %%
Epoch 125 of 500 took 0.514s
  training loss:		0.189379
  validation loss:		0.351643
  validation accuracy:		91.50 %%
Epoch 126 of 500 took 0.502s
  training loss:		0.182934
  validation loss:		0.350882
  validation accuracy:		91.50 %%
Epoch 127 of 500 took 0.563s
  training loss:		0.189296
  validation loss:		0.351480
  validation accuracy:		91.50 %%
Epoch 128 of 500 took 0.535s
  training loss:		0.184548
  validation loss:		0.351763
  validation accuracy:		91.50 %%
Epoch 129 of 500 took 0.524s
  training loss:		0.178009
  validation loss:		0.353316
  validation accuracy:		91.50 %%
Epoch 130 of 500 took 0.505s
  training loss:		0.180373
  validation loss:		0.353824
  validation accuracy:		91.50 %%
Epoch 131 of 500 took 0.513s
  training loss:		0.176869
  validation loss:		0.353511
  validation accuracy:		91.50 %%
Epoch 132 of 500 took 0.511s
  training loss:		0.173026
  validation loss:		0.354146
  validation accuracy:		91.67 %%
Epoch 133 of 500 took 0.492s
  training loss:		0.180532
  validation loss:		0.353876
  validation accuracy:		91.67 %%
Epoch 134 of 500 took 0.504s
  training loss:		0.178827
  validation loss:		0.353207
  validation accuracy:		91.67 %%
Epoch 135 of 500 took 0.529s
  training loss:		0.182392
  validation loss:		0.352913
  validation accuracy:		91.83 %%
Epoch 136 of 500 took 0.531s
  training loss:		0.175073
  validation loss:		0.353282
  validation accuracy:		91.83 %%
Epoch 137 of 500 took 0.565s
  training loss:		0.171990
  validation loss:		0.354465
  validation accuracy:		91.50 %%
Epoch 138 of 500 took 0.527s
  training loss:		0.174284
  validation loss:		0.355859
  validation accuracy:		91.67 %%
Epoch 139 of 500 took 0.528s
  training loss:		0.172635
  validation loss:		0.356356
  validation accuracy:		91.67 %%
Epoch 140 of 500 took 0.563s
  training loss:		0.173746
  validation loss:		0.356659
  validation accuracy:		91.83 %%
Epoch 141 of 500 took 0.548s
  training loss:		0.172823
  validation loss:		0.356351
  validation accuracy:		91.67 %%
Epoch 142 of 500 took 0.498s
  training loss:		0.175551
  validation loss:		0.356636
  validation accuracy:		91.83 %%
Epoch 143 of 500 took 0.506s
  training loss:		0.173603
  validation loss:		0.355944
  validation accuracy:		91.83 %%
Epoch 144 of 500 took 0.518s
  training loss:		0.173363
  validation loss:		0.355356
  validation accuracy:		92.00 %%
Epoch 145 of 500 took 0.531s
  training loss:		0.172684
  validation loss:		0.356382
  validation accuracy:		92.00 %%
Epoch 146 of 500 took 0.540s
  training loss:		0.168953
  validation loss:		0.356765
  validation accuracy:		91.67 %%
Epoch 147 of 500 took 0.539s
  training loss:		0.169347
  validation loss:		0.357055
  validation accuracy:		91.67 %%
Epoch 148 of 500 took 0.502s
  training loss:		0.162659
  validation loss:		0.358856
  validation accuracy:		91.67 %%
Epoch 149 of 500 took 0.505s
  training loss:		0.166481
  validation loss:		0.360635
  validation accuracy:		91.67 %%
Epoch 150 of 500 took 0.556s
  training loss:		0.168268
  validation loss:		0.360228
  validation accuracy:		91.67 %%
Epoch 151 of 500 took 0.518s
  training loss:		0.167528
  validation loss:		0.359639
  validation accuracy:		91.67 %%
Epoch 152 of 500 took 0.505s
  training loss:		0.166340
  validation loss:		0.359701
  validation accuracy:		91.67 %%
Epoch 153 of 500 took 0.520s
  training loss:		0.166859
  validation loss:		0.359383
  validation accuracy:		91.83 %%
Epoch 154 of 500 took 0.503s
  training loss:		0.161888
  validation loss:		0.358542
  validation accuracy:		91.67 %%
Epoch 155 of 500 took 0.508s
  training loss:		0.161851
  validation loss:		0.360164
  validation accuracy:		91.67 %%
Epoch 156 of 500 took 0.528s
  training loss:		0.168079
  validation loss:		0.362301
  validation accuracy:		91.67 %%
Epoch 157 of 500 took 0.504s
  training loss:		0.163055
  validation loss:		0.362712
  validation accuracy:		91.83 %%
Epoch 158 of 500 took 0.501s
  training loss:		0.166310
  validation loss:		0.361559
  validation accuracy:		91.83 %%
Epoch 159 of 500 took 0.520s
  training loss:		0.160440
  validation loss:		0.363102
  validation accuracy:		91.83 %%
Epoch 160 of 500 took 0.516s
  training loss:		0.162820
  validation loss:		0.362392
  validation accuracy:		91.83 %%
Epoch 161 of 500 took 0.498s
  training loss:		0.172684
  validation loss:		0.360194
  validation accuracy:		92.17 %%
Epoch 162 of 500 took 0.498s
  training loss:		0.165654
  validation loss:		0.361396
  validation accuracy:		92.00 %%
Epoch 163 of 500 took 0.500s
  training loss:		0.160575
  validation loss:		0.360932
  validation accuracy:		91.83 %%
Epoch 164 of 500 took 0.506s
  training loss:		0.161102
  validation loss:		0.360544
  validation accuracy:		92.00 %%
Epoch 165 of 500 took 0.498s
  training loss:		0.157776
  validation loss:		0.362437
  validation accuracy:		91.83 %%
Epoch 166 of 500 took 0.514s
  training loss:		0.161803
  validation loss:		0.363316
  validation accuracy:		91.83 %%
Epoch 167 of 500 took 0.556s
  training loss:		0.156104
  validation loss:		0.365872
  validation accuracy:		92.00 %%
Epoch 168 of 500 took 0.562s
  training loss:		0.154953
  validation loss:		0.367114
  validation accuracy:		92.00 %%
Epoch 169 of 500 took 0.512s
  training loss:		0.158851
  validation loss:		0.365581
  validation accuracy:		92.17 %%
Epoch 170 of 500 took 0.549s
  training loss:		0.152625
  validation loss:		0.364515
  validation accuracy:		92.17 %%
Epoch 171 of 500 took 0.565s
  training loss:		0.160117
  validation loss:		0.363891
  validation accuracy:		92.00 %%
Epoch 172 of 500 took 0.509s
  training loss:		0.154916
  validation loss:		0.363979
  validation accuracy:		92.00 %%
Epoch 173 of 500 took 0.505s
  training loss:		0.155935
  validation loss:		0.364075
  validation accuracy:		92.00 %%
Epoch 174 of 500 took 0.521s
  training loss:		0.153634
  validation loss:		0.364663
  validation accuracy:		92.00 %%
Epoch 175 of 500 took 0.511s
  training loss:		0.158196
  validation loss:		0.365421
  validation accuracy:		91.83 %%
Epoch 176 of 500 took 0.497s
  training loss:		0.155762
  validation loss:		0.367243
  validation accuracy:		91.67 %%
Epoch 177 of 500 took 0.513s
  training loss:		0.154647
  validation loss:		0.367419
  validation accuracy:		91.67 %%
Epoch 178 of 500 took 0.490s
  training loss:		0.149602
  validation loss:		0.367980
  validation accuracy:		92.00 %%
Epoch 179 of 500 took 0.500s
  training loss:		0.156670
  validation loss:		0.369199
  validation accuracy:		92.17 %%
Epoch 180 of 500 took 0.500s
  training loss:		0.148374
  validation loss:		0.369470
  validation accuracy:		92.17 %%
Epoch 181 of 500 took 0.494s
  training loss:		0.150815
  validation loss:		0.371096
  validation accuracy:		92.00 %%
Epoch 182 of 500 took 0.537s
  training loss:		0.147813
  validation loss:		0.371558
  validation accuracy:		92.17 %%
Epoch 183 of 500 took 0.634s
  training loss:		0.154634
  validation loss:		0.368702
  validation accuracy:		92.17 %%
Epoch 184 of 500 took 0.520s
  training loss:		0.147824
  validation loss:		0.367914
  validation accuracy:		92.17 %%
Epoch 185 of 500 took 0.556s
  training loss:		0.150807
  validation loss:		0.369049
  validation accuracy:		91.83 %%
Epoch 186 of 500 took 0.549s
  training loss:		0.144943
  validation loss:		0.369481
  validation accuracy:		92.00 %%
Epoch 187 of 500 took 0.556s
  training loss:		0.153364
  validation loss:		0.368541
  validation accuracy:		92.00 %%
Epoch 188 of 500 took 0.554s
  training loss:		0.149564
  validation loss:		0.367999
  validation accuracy:		92.17 %%
Epoch 189 of 500 took 0.539s
  training loss:		0.147105
  validation loss:		0.368412
  validation accuracy:		92.00 %%
Epoch 190 of 500 took 0.556s
  training loss:		0.147613
  validation loss:		0.370326
  validation accuracy:		92.00 %%
Epoch 191 of 500 took 0.547s
  training loss:		0.150351
  validation loss:		0.370472
  validation accuracy:		92.00 %%
Epoch 192 of 500 took 0.549s
  training loss:		0.152880
  validation loss:		0.371617
  validation accuracy:		92.00 %%
Epoch 193 of 500 took 0.505s
  training loss:		0.143557
  validation loss:		0.372245
  validation accuracy:		91.83 %%
Epoch 194 of 500 took 0.536s
  training loss:		0.150166
  validation loss:		0.372655
  validation accuracy:		91.67 %%
Epoch 195 of 500 took 0.498s
  training loss:		0.148087
  validation loss:		0.374222
  validation accuracy:		91.67 %%
Epoch 196 of 500 took 0.567s
  training loss:		0.153610
  validation loss:		0.373617
  validation accuracy:		91.50 %%
Epoch 197 of 500 took 0.541s
  training loss:		0.148501
  validation loss:		0.372290
  validation accuracy:		91.67 %%
Epoch 198 of 500 took 0.537s
  training loss:		0.142378
  validation loss:		0.374162
  validation accuracy:		91.67 %%
Epoch 199 of 500 took 0.519s
  training loss:		0.144274
  validation loss:		0.375725
  validation accuracy:		91.67 %%
Epoch 200 of 500 took 0.524s
  training loss:		0.141838
  validation loss:		0.376001
  validation accuracy:		91.50 %%
Epoch 201 of 500 took 0.565s
  training loss:		0.141541
  validation loss:		0.378278
  validation accuracy:		91.50 %%
Epoch 202 of 500 took 0.546s
  training loss:		0.150214
  validation loss:		0.378871
  validation accuracy:		91.50 %%
Epoch 203 of 500 took 0.582s
  training loss:		0.145045
  validation loss:		0.379330
  validation accuracy:		91.50 %%
Epoch 204 of 500 took 0.508s
  training loss:		0.145518
  validation loss:		0.379267
  validation accuracy:		91.67 %%
Epoch 205 of 500 took 0.508s
  training loss:		0.143179
  validation loss:		0.380894
  validation accuracy:		91.50 %%
Epoch 206 of 500 took 0.521s
  training loss:		0.141261
  validation loss:		0.382031
  validation accuracy:		91.83 %%
Epoch 207 of 500 took 0.503s
  training loss:		0.142130
  validation loss:		0.382782
  validation accuracy:		91.83 %%
Epoch 208 of 500 took 0.556s
  training loss:		0.141702
  validation loss:		0.382874
  validation accuracy:		91.50 %%
Epoch 209 of 500 took 0.557s
  training loss:		0.147433
  validation loss:		0.381987
  validation accuracy:		92.00 %%
Epoch 210 of 500 took 0.528s
  training loss:		0.139698
  validation loss:		0.381846
  validation accuracy:		92.00 %%
Epoch 211 of 500 took 0.525s
  training loss:		0.143033
  validation loss:		0.381201
  validation accuracy:		92.00 %%
Epoch 212 of 500 took 0.506s
  training loss:		0.146525
  validation loss:		0.380463
  validation accuracy:		92.00 %%
Epoch 213 of 500 took 0.509s
  training loss:		0.142592
  validation loss:		0.379473
  validation accuracy:		91.83 %%
Epoch 214 of 500 took 0.539s
  training loss:		0.141092
  validation loss:		0.381572
  validation accuracy:		91.83 %%
Epoch 215 of 500 took 0.520s
  training loss:		0.139391
  validation loss:		0.382935
  validation accuracy:		91.83 %%
Epoch 216 of 500 took 0.512s
  training loss:		0.137644
  validation loss:		0.384199
  validation accuracy:		91.83 %%
Epoch 217 of 500 took 0.498s
  training loss:		0.132930
  validation loss:		0.385672
  validation accuracy:		91.67 %%
Epoch 218 of 500 took 0.503s
  training loss:		0.131616
  validation loss:		0.387975
  validation accuracy:		91.67 %%
Epoch 219 of 500 took 0.507s
  training loss:		0.134774
  validation loss:		0.389056
  validation accuracy:		91.50 %%
Epoch 220 of 500 took 0.518s
  training loss:		0.139950
  validation loss:		0.387277
  validation accuracy:		91.67 %%
Epoch 221 of 500 took 0.504s
  training loss:		0.134044
  validation loss:		0.387658
  validation accuracy:		91.67 %%
Epoch 222 of 500 took 0.505s
  training loss:		0.125724
  validation loss:		0.389720
  validation accuracy:		91.67 %%
Epoch 223 of 500 took 0.499s
  training loss:		0.141681
  validation loss:		0.388368
  validation accuracy:		91.50 %%
Epoch 224 of 500 took 0.499s
  training loss:		0.135293
  validation loss:		0.386348
  validation accuracy:		91.83 %%
Epoch 225 of 500 took 0.508s
  training loss:		0.137255
  validation loss:		0.386102
  validation accuracy:		91.83 %%
Epoch 226 of 500 took 0.511s
  training loss:		0.132541
  validation loss:		0.385624
  validation accuracy:		91.83 %%
Epoch 227 of 500 took 0.503s
  training loss:		0.139399
  validation loss:		0.385040
  validation accuracy:		91.67 %%
Epoch 228 of 500 took 0.508s
  training loss:		0.132393
  validation loss:		0.386450
  validation accuracy:		91.67 %%
Epoch 229 of 500 took 0.509s
  training loss:		0.129771
  validation loss:		0.388046
  validation accuracy:		91.67 %%
Epoch 230 of 500 took 0.512s
  training loss:		0.129541
  validation loss:		0.390409
  validation accuracy:		91.67 %%
Epoch 231 of 500 took 0.493s
  training loss:		0.134635
  validation loss:		0.389924
  validation accuracy:		91.83 %%
Epoch 232 of 500 took 0.525s
  training loss:		0.135462
  validation loss:		0.388612
  validation accuracy:		91.83 %%
Epoch 233 of 500 took 0.523s
  training loss:		0.135259
  validation loss:		0.387359
  validation accuracy:		91.83 %%
Epoch 234 of 500 took 0.595s
  training loss:		0.134106
  validation loss:		0.386996
  validation accuracy:		91.83 %%
Epoch 235 of 500 took 0.566s
  training loss:		0.132841
  validation loss:		0.390675
  validation accuracy:		91.83 %%
Epoch 236 of 500 took 0.529s
  training loss:		0.137349
  validation loss:		0.391512
  validation accuracy:		91.67 %%
Epoch 237 of 500 took 0.540s
  training loss:		0.128275
  validation loss:		0.392360
  validation accuracy:		91.67 %%
Epoch 238 of 500 took 0.575s
  training loss:		0.130045
  validation loss:		0.393250
  validation accuracy:		91.83 %%
Epoch 239 of 500 took 0.556s
  training loss:		0.128876
  validation loss:		0.393938
  validation accuracy:		91.83 %%
Epoch 240 of 500 took 0.555s
  training loss:		0.132238
  validation loss:		0.395154
  validation accuracy:		91.67 %%
Epoch 241 of 500 took 0.529s
  training loss:		0.133539
  validation loss:		0.396228
  validation accuracy:		91.83 %%
Epoch 242 of 500 took 0.630s
  training loss:		0.131146
  validation loss:		0.394910
  validation accuracy:		91.83 %%
Epoch 243 of 500 took 0.527s
  training loss:		0.132437
  validation loss:		0.392930
  validation accuracy:		91.83 %%
Epoch 244 of 500 took 0.532s
  training loss:		0.130009
  validation loss:		0.393122
  validation accuracy:		91.83 %%
Epoch 245 of 500 took 0.499s
  training loss:		0.132033
  validation loss:		0.394031
  validation accuracy:		91.83 %%
Epoch 246 of 500 took 0.506s
  training loss:		0.124702
  validation loss:		0.395186
  validation accuracy:		91.83 %%
Epoch 247 of 500 took 0.577s
  training loss:		0.127840
  validation loss:		0.398067
  validation accuracy:		91.67 %%
Epoch 248 of 500 took 0.495s
  training loss:		0.128064
  validation loss:		0.397447
  validation accuracy:		91.83 %%
Epoch 249 of 500 took 0.529s
  training loss:		0.128034
  validation loss:		0.397267
  validation accuracy:		91.67 %%
Epoch 250 of 500 took 0.562s
  training loss:		0.126413
  validation loss:		0.399153
  validation accuracy:		91.83 %%
Epoch 251 of 500 took 0.545s
  training loss:		0.127311
  validation loss:		0.399497
  validation accuracy:		91.83 %%
Epoch 252 of 500 took 0.567s
  training loss:		0.130248
  validation loss:		0.397494
  validation accuracy:		91.83 %%
Epoch 253 of 500 took 0.573s
  training loss:		0.125118
  validation loss:		0.397989
  validation accuracy:		91.83 %%
Epoch 254 of 500 took 0.534s
  training loss:		0.126068
  validation loss:		0.398838
  validation accuracy:		91.83 %%
Epoch 255 of 500 took 0.525s
  training loss:		0.131049
  validation loss:		0.400470
  validation accuracy:		91.83 %%
Epoch 256 of 500 took 0.557s
  training loss:		0.126161
  validation loss:		0.400466
  validation accuracy:		91.83 %%
Epoch 257 of 500 took 0.533s
  training loss:		0.127840
  validation loss:		0.400832
  validation accuracy:		91.50 %%
Epoch 258 of 500 took 0.580s
  training loss:		0.130566
  validation loss:		0.402176
  validation accuracy:		91.83 %%
Epoch 259 of 500 took 0.548s
  training loss:		0.125625
  validation loss:		0.404072
  validation accuracy:		91.83 %%
Epoch 260 of 500 took 0.538s
  training loss:		0.123007
  validation loss:		0.405240
  validation accuracy:		91.83 %%
Epoch 261 of 500 took 0.527s
  training loss:		0.127370
  validation loss:		0.402312
  validation accuracy:		91.83 %%
Epoch 262 of 500 took 0.532s
  training loss:		0.119139
  validation loss:		0.400898
  validation accuracy:		91.83 %%
Epoch 263 of 500 took 0.576s
  training loss:		0.121938
  validation loss:		0.402076
  validation accuracy:		91.83 %%
Epoch 264 of 500 took 0.578s
  training loss:		0.121917
  validation loss:		0.403906
  validation accuracy:		91.83 %%
Epoch 265 of 500 took 0.543s
  training loss:		0.120070
  validation loss:		0.405292
  validation accuracy:		91.83 %%
Epoch 266 of 500 took 0.509s
  training loss:		0.119787
  validation loss:		0.407370
  validation accuracy:		91.83 %%
Epoch 267 of 500 took 0.513s
  training loss:		0.125890
  validation loss:		0.407282
  validation accuracy:		91.50 %%
Epoch 268 of 500 took 0.501s
  training loss:		0.121198
  validation loss:		0.407170
  validation accuracy:		91.83 %%
Epoch 269 of 500 took 0.499s
  training loss:		0.124616
  validation loss:		0.405714
  validation accuracy:		91.67 %%
Epoch 270 of 500 took 0.587s
  training loss:		0.121165
  validation loss:		0.404312
  validation accuracy:		91.50 %%
Epoch 271 of 500 took 0.526s
  training loss:		0.117996
  validation loss:		0.405273
  validation accuracy:		91.50 %%
Epoch 272 of 500 took 0.571s
  training loss:		0.124203
  validation loss:		0.406789
  validation accuracy:		91.83 %%
Epoch 273 of 500 took 0.534s
  training loss:		0.117644
  validation loss:		0.408146
  validation accuracy:		91.83 %%
Epoch 274 of 500 took 0.505s
  training loss:		0.120906
  validation loss:		0.408417
  validation accuracy:		91.50 %%
Epoch 275 of 500 took 0.506s
  training loss:		0.120234
  validation loss:		0.411096
  validation accuracy:		91.50 %%
Epoch 276 of 500 took 0.507s
  training loss:		0.118623
  validation loss:		0.412178
  validation accuracy:		91.67 %%
Epoch 277 of 500 took 0.514s
  training loss:		0.123549
  validation loss:		0.409719
  validation accuracy:		91.83 %%
Epoch 278 of 500 took 0.519s
  training loss:		0.119453
  validation loss:		0.406725
  validation accuracy:		91.67 %%
Epoch 279 of 500 took 0.498s
  training loss:		0.119858
  validation loss:		0.408148
  validation accuracy:		91.67 %%
Epoch 280 of 500 took 0.516s
  training loss:		0.118200
  validation loss:		0.411328
  validation accuracy:		91.83 %%
Epoch 281 of 500 took 0.503s
  training loss:		0.117734
  validation loss:		0.411333
  validation accuracy:		91.50 %%
Epoch 282 of 500 took 0.560s
  training loss:		0.115393
  validation loss:		0.413595
  validation accuracy:		91.50 %%
Epoch 283 of 500 took 0.523s
  training loss:		0.119416
  validation loss:		0.412336
  validation accuracy:		91.83 %%
Epoch 284 of 500 took 0.516s
  training loss:		0.114979
  validation loss:		0.414136
  validation accuracy:		91.83 %%
Epoch 285 of 500 took 0.513s
  training loss:		0.118575
  validation loss:		0.414094
  validation accuracy:		91.83 %%
Epoch 286 of 500 took 0.523s
  training loss:		0.119662
  validation loss:		0.412201
  validation accuracy:		91.50 %%
Epoch 287 of 500 took 0.504s
  training loss:		0.115651
  validation loss:		0.413215
  validation accuracy:		91.50 %%
Epoch 288 of 500 took 0.517s
  training loss:		0.116012
  validation loss:		0.416478
  validation accuracy:		91.67 %%
Epoch 289 of 500 took 0.497s
  training loss:		0.114298
  validation loss:		0.417687
  validation accuracy:		91.67 %%
Epoch 290 of 500 took 0.512s
  training loss:		0.117403
  validation loss:		0.417829
  validation accuracy:		91.67 %%
Epoch 291 of 500 took 0.532s
  training loss:		0.114959
  validation loss:		0.418769
  validation accuracy:		91.83 %%
Epoch 292 of 500 took 0.525s
  training loss:		0.121398
  validation loss:		0.418548
  validation accuracy:		91.83 %%
Epoch 293 of 500 took 0.517s
  training loss:		0.118490
  validation loss:		0.417156
  validation accuracy:		91.67 %%
Epoch 294 of 500 took 0.501s
  training loss:		0.120477
  validation loss:		0.415599
  validation accuracy:		91.67 %%
Epoch 295 of 500 took 0.512s
  training loss:		0.124490
  validation loss:		0.414653
  validation accuracy:		91.67 %%
Epoch 296 of 500 took 0.530s
  training loss:		0.108862
  validation loss:		0.416417
  validation accuracy:		91.67 %%
Epoch 297 of 500 took 0.510s
  training loss:		0.114767
  validation loss:		0.418955
  validation accuracy:		91.67 %%
Epoch 298 of 500 took 0.519s
  training loss:		0.118689
  validation loss:		0.418166
  validation accuracy:		91.83 %%
Epoch 299 of 500 took 0.545s
  training loss:		0.116837
  validation loss:		0.419073
  validation accuracy:		91.67 %%
Epoch 300 of 500 took 0.539s
  training loss:		0.114567
  validation loss:		0.418911
  validation accuracy:		91.50 %%
Epoch 301 of 500 took 0.570s
  training loss:		0.112654
  validation loss:		0.421303
  validation accuracy:		91.50 %%
Epoch 302 of 500 took 0.586s
  training loss:		0.115934
  validation loss:		0.420054
  validation accuracy:		91.67 %%
Epoch 303 of 500 took 0.515s
  training loss:		0.110273
  validation loss:		0.422002
  validation accuracy:		91.67 %%
Epoch 304 of 500 took 0.523s
  training loss:		0.108423
  validation loss:		0.425290
  validation accuracy:		91.50 %%
Epoch 305 of 500 took 0.529s
  training loss:		0.114260
  validation loss:		0.425616
  validation accuracy:		91.50 %%
Epoch 306 of 500 took 0.580s
  training loss:		0.112111
  validation loss:		0.426623
  validation accuracy:		91.67 %%
Epoch 307 of 500 took 0.529s
  training loss:		0.112699
  validation loss:		0.426329
  validation accuracy:		91.50 %%
Epoch 308 of 500 took 0.534s
  training loss:		0.114372
  validation loss:		0.422893
  validation accuracy:		91.50 %%
Epoch 309 of 500 took 0.511s
  training loss:		0.112895
  validation loss:		0.421572
  validation accuracy:		91.50 %%
Epoch 310 of 500 took 0.534s
  training loss:		0.106459
  validation loss:		0.422805
  validation accuracy:		91.67 %%
Epoch 311 of 500 took 0.572s
  training loss:		0.117973
  validation loss:		0.423956
  validation accuracy:		91.67 %%
Epoch 312 of 500 took 0.551s
  training loss:		0.108974
  validation loss:		0.425609
  validation accuracy:		91.67 %%
Epoch 313 of 500 took 0.510s
  training loss:		0.112757
  validation loss:		0.423302
  validation accuracy:		91.67 %%
Epoch 314 of 500 took 0.527s
  training loss:		0.111562
  validation loss:		0.423546
  validation accuracy:		91.83 %%
Epoch 315 of 500 took 0.515s
  training loss:		0.111179
  validation loss:		0.426158
  validation accuracy:		91.67 %%
Epoch 316 of 500 took 0.541s
  training loss:		0.115734
  validation loss:		0.426459
  validation accuracy:		91.67 %%
Epoch 317 of 500 took 0.519s
  training loss:		0.105782
  validation loss:		0.426197
  validation accuracy:		91.67 %%
Epoch 318 of 500 took 0.537s
  training loss:		0.112187
  validation loss:		0.426946
  validation accuracy:		91.67 %%
Epoch 319 of 500 took 0.526s
  training loss:		0.112756
  validation loss:		0.427263
  validation accuracy:		91.67 %%
Epoch 320 of 500 took 0.507s
  training loss:		0.102225
  validation loss:		0.431632
  validation accuracy:		91.67 %%
Epoch 321 of 500 took 0.504s
  training loss:		0.113250
  validation loss:		0.432978
  validation accuracy:		91.67 %%
Epoch 322 of 500 took 0.508s
  training loss:		0.104368
  validation loss:		0.431552
  validation accuracy:		91.67 %%
Epoch 323 of 500 took 0.634s
  training loss:		0.112587
  validation loss:		0.429175
  validation accuracy:		91.67 %%
Epoch 324 of 500 took 0.534s
  training loss:		0.111486
  validation loss:		0.430175
  validation accuracy:		91.67 %%
Epoch 325 of 500 took 0.568s
  training loss:		0.104865
  validation loss:		0.433673
  validation accuracy:		91.67 %%
Epoch 326 of 500 took 0.513s
  training loss:		0.103743
  validation loss:		0.435760
  validation accuracy:		91.67 %%
Epoch 327 of 500 took 0.519s
  training loss:		0.106913
  validation loss:		0.433363
  validation accuracy:		91.50 %%
Epoch 328 of 500 took 0.522s
  training loss:		0.106342
  validation loss:		0.430933
  validation accuracy:		91.67 %%
Epoch 329 of 500 took 0.507s
  training loss:		0.106703
  validation loss:		0.429250
  validation accuracy:		91.33 %%
Epoch 330 of 500 took 0.504s
  training loss:		0.107703
  validation loss:		0.430495
  validation accuracy:		91.50 %%
Epoch 331 of 500 took 0.498s
  training loss:		0.110239
  validation loss:		0.433225
  validation accuracy:		91.67 %%
Epoch 332 of 500 took 0.517s
  training loss:		0.108738
  validation loss:		0.433041
  validation accuracy:		91.67 %%
Epoch 333 of 500 took 0.500s
  training loss:		0.111082
  validation loss:		0.432258
  validation accuracy:		91.67 %%
Epoch 334 of 500 took 0.523s
  training loss:		0.107563
  validation loss:		0.431274
  validation accuracy:		91.67 %%
Epoch 335 of 500 took 0.507s
  training loss:		0.105387
  validation loss:		0.429591
  validation accuracy:		91.67 %%
Epoch 336 of 500 took 0.504s
  training loss:		0.104253
  validation loss:		0.431209
  validation accuracy:		91.83 %%
Epoch 337 of 500 took 0.586s
  training loss:		0.103887
  validation loss:		0.434417
  validation accuracy:		91.67 %%
Epoch 338 of 500 took 0.577s
  training loss:		0.105163
  validation loss:		0.436727
  validation accuracy:		91.67 %%
Epoch 339 of 500 took 0.561s
  training loss:		0.102775
  validation loss:		0.437144
  validation accuracy:		91.67 %%
Epoch 340 of 500 took 0.581s
  training loss:		0.105939
  validation loss:		0.438817
  validation accuracy:		91.67 %%
Epoch 341 of 500 took 0.586s
  training loss:		0.109516
  validation loss:		0.440071
  validation accuracy:		91.50 %%
Epoch 342 of 500 took 0.512s
  training loss:		0.107572
  validation loss:		0.438438
  validation accuracy:		91.50 %%
Epoch 343 of 500 took 0.551s
  training loss:		0.104647
  validation loss:		0.437141
  validation accuracy:		91.50 %%
Epoch 344 of 500 took 0.515s
  training loss:		0.101967
  validation loss:		0.437121
  validation accuracy:		91.67 %%
Epoch 345 of 500 took 0.528s
  training loss:		0.102350
  validation loss:		0.440091
  validation accuracy:		91.67 %%
Epoch 346 of 500 took 0.529s
  training loss:		0.106894
  validation loss:		0.442070
  validation accuracy:		91.67 %%
Epoch 347 of 500 took 0.528s
  training loss:		0.101618
  validation loss:		0.442254
  validation accuracy:		91.67 %%
Epoch 348 of 500 took 0.513s
  training loss:		0.107960
  validation loss:		0.438327
  validation accuracy:		91.67 %%
Epoch 349 of 500 took 0.521s
  training loss:		0.104171
  validation loss:		0.437612
  validation accuracy:		91.67 %%
Epoch 350 of 500 took 0.516s
  training loss:		0.097367
  validation loss:		0.442194
  validation accuracy:		91.67 %%
Epoch 351 of 500 took 0.539s
  training loss:		0.108259
  validation loss:		0.440893
  validation accuracy:		91.83 %%
Epoch 352 of 500 took 0.516s
  training loss:		0.098119
  validation loss:		0.441407
  validation accuracy:		91.67 %%
Epoch 353 of 500 took 0.543s
  training loss:		0.101273
  validation loss:		0.440963
  validation accuracy:		91.67 %%
Epoch 354 of 500 took 0.520s
  training loss:		0.102387
  validation loss:		0.441369
  validation accuracy:		91.67 %%
Epoch 355 of 500 took 0.546s
  training loss:		0.100373
  validation loss:		0.442022
  validation accuracy:		91.83 %%
Epoch 356 of 500 took 0.510s
  training loss:		0.105401
  validation loss:		0.442814
  validation accuracy:		91.67 %%
Epoch 357 of 500 took 0.504s
  training loss:		0.104517
  validation loss:		0.440065
  validation accuracy:		91.67 %%
Epoch 358 of 500 took 0.516s
  training loss:		0.107570
  validation loss:		0.439339
  validation accuracy:		91.67 %%
Epoch 359 of 500 took 0.505s
  training loss:		0.100327
  validation loss:		0.443119
  validation accuracy:		91.67 %%
Epoch 360 of 500 took 0.523s
  training loss:		0.107022
  validation loss:		0.445418
  validation accuracy:		91.67 %%
Epoch 361 of 500 took 0.510s
  training loss:		0.101770
  validation loss:		0.444039
  validation accuracy:		91.67 %%
Epoch 362 of 500 took 0.505s
  training loss:		0.101237
  validation loss:		0.443763
  validation accuracy:		91.67 %%
Epoch 363 of 500 took 0.519s
  training loss:		0.097788
  validation loss:		0.444285
  validation accuracy:		91.67 %%
Epoch 364 of 500 took 0.496s
  training loss:		0.100630
  validation loss:		0.444176
  validation accuracy:		91.67 %%
Epoch 365 of 500 took 0.506s
  training loss:		0.103064
  validation loss:		0.443331
  validation accuracy:		91.67 %%
Epoch 366 of 500 took 0.502s
  training loss:		0.101692
  validation loss:		0.444615
  validation accuracy:		91.67 %%
Epoch 367 of 500 took 0.531s
  training loss:		0.095892
  validation loss:		0.449158
  validation accuracy:		91.67 %%
Epoch 368 of 500 took 0.608s
  training loss:		0.096963
  validation loss:		0.450234
  validation accuracy:		91.67 %%
Epoch 369 of 500 took 0.573s
  training loss:		0.102659
  validation loss:		0.446115
  validation accuracy:		91.67 %%
Epoch 370 of 500 took 0.590s
  training loss:		0.095891
  validation loss:		0.448329
  validation accuracy:		91.50 %%
Epoch 371 of 500 took 0.592s
  training loss:		0.099817
  validation loss:		0.452704
  validation accuracy:		91.67 %%
Epoch 372 of 500 took 0.523s
  training loss:		0.099222
  validation loss:		0.454639
  validation accuracy:		91.50 %%
Epoch 373 of 500 took 0.540s
  training loss:		0.103786
  validation loss:		0.453629
  validation accuracy:		91.67 %%
Epoch 374 of 500 took 0.509s
  training loss:		0.102217
  validation loss:		0.452222
  validation accuracy:		91.50 %%
Epoch 375 of 500 took 0.509s
  training loss:		0.096869
  validation loss:		0.452751
  validation accuracy:		91.67 %%
Epoch 376 of 500 took 0.514s
  training loss:		0.099671
  validation loss:		0.451003
  validation accuracy:		91.67 %%
Epoch 377 of 500 took 0.504s
  training loss:		0.100581
  validation loss:		0.449755
  validation accuracy:		91.83 %%
Epoch 378 of 500 took 0.511s
  training loss:		0.102720
  validation loss:		0.449226
  validation accuracy:		91.67 %%
Epoch 379 of 500 took 0.503s
  training loss:		0.102073
  validation loss:		0.450568
  validation accuracy:		91.67 %%
Epoch 380 of 500 took 0.518s
  training loss:		0.093670
  validation loss:		0.452252
  validation accuracy:		91.67 %%
Epoch 381 of 500 took 0.503s
  training loss:		0.098529
  validation loss:		0.451112
  validation accuracy:		91.67 %%
Epoch 382 of 500 took 0.510s
  training loss:		0.092224
  validation loss:		0.453382
  validation accuracy:		91.67 %%
Epoch 383 of 500 took 0.526s
  training loss:		0.098685
  validation loss:		0.454893
  validation accuracy:		91.67 %%
Epoch 384 of 500 took 0.560s
  training loss:		0.101828
  validation loss:		0.454771
  validation accuracy:		91.67 %%
Epoch 385 of 500 took 0.565s
  training loss:		0.098287
  validation loss:		0.454854
  validation accuracy:		91.67 %%
Epoch 386 of 500 took 0.549s
  training loss:		0.097364
  validation loss:		0.456531
  validation accuracy:		91.67 %%
Epoch 387 of 500 took 0.545s
  training loss:		0.092238
  validation loss:		0.458380
  validation accuracy:		91.67 %%
Epoch 388 of 500 took 0.565s
  training loss:		0.099652
  validation loss:		0.458915
  validation accuracy:		91.50 %%
Epoch 389 of 500 took 0.563s
  training loss:		0.098059
  validation loss:		0.456971
  validation accuracy:		91.67 %%
Epoch 390 of 500 took 0.527s
  training loss:		0.094568
  validation loss:		0.456896
  validation accuracy:		91.50 %%
Epoch 391 of 500 took 0.506s
  training loss:		0.098770
  validation loss:		0.457336
  validation accuracy:		91.50 %%
Epoch 392 of 500 took 0.532s
  training loss:		0.095801
  validation loss:		0.456776
  validation accuracy:		91.83 %%
Epoch 393 of 500 took 0.546s
  training loss:		0.093626
  validation loss:		0.458275
  validation accuracy:		91.67 %%
Epoch 394 of 500 took 0.550s
  training loss:		0.098596
  validation loss:		0.458332
  validation accuracy:		91.67 %%
Epoch 395 of 500 took 0.590s
  training loss:		0.098164
  validation loss:		0.458762
  validation accuracy:		91.67 %%
Epoch 396 of 500 took 0.515s
  training loss:		0.091681
  validation loss:		0.460753
  validation accuracy:		91.67 %%
Epoch 397 of 500 took 0.544s
  training loss:		0.097967
  validation loss:		0.464030
  validation accuracy:		91.67 %%
Epoch 398 of 500 took 0.521s
  training loss:		0.096328
  validation loss:		0.464873
  validation accuracy:		91.67 %%
Epoch 399 of 500 took 0.539s
  training loss:		0.092246
  validation loss:		0.462225
  validation accuracy:		91.67 %%
Epoch 400 of 500 took 0.531s
  training loss:		0.096577
  validation loss:		0.460759
  validation accuracy:		91.67 %%
Epoch 401 of 500 took 0.559s
  training loss:		0.091564
  validation loss:		0.462478
  validation accuracy:		91.67 %%
Epoch 402 of 500 took 0.527s
  training loss:		0.093332
  validation loss:		0.461832
  validation accuracy:		91.67 %%
Epoch 403 of 500 took 0.506s
  training loss:		0.094001
  validation loss:		0.462473
  validation accuracy:		91.50 %%
Epoch 404 of 500 took 0.578s
  training loss:		0.092078
  validation loss:		0.465058
  validation accuracy:		91.67 %%
Epoch 405 of 500 took 0.521s
  training loss:		0.091831
  validation loss:		0.464808
  validation accuracy:		91.50 %%
Epoch 406 of 500 took 0.564s
  training loss:		0.094271
  validation loss:		0.463161
  validation accuracy:		91.50 %%
Epoch 407 of 500 took 0.543s
  training loss:		0.095988
  validation loss:		0.462729
  validation accuracy:		91.50 %%
Epoch 408 of 500 took 0.548s
  training loss:		0.090120
  validation loss:		0.464403
  validation accuracy:		91.67 %%
Epoch 409 of 500 took 0.543s
  training loss:		0.098736
  validation loss:		0.464823
  validation accuracy:		91.50 %%
Epoch 410 of 500 took 0.567s
  training loss:		0.090225
  validation loss:		0.465560
  validation accuracy:		91.50 %%
Epoch 411 of 500 took 0.537s
  training loss:		0.089716
  validation loss:		0.461259
  validation accuracy:		91.67 %%
Epoch 412 of 500 took 0.556s
  training loss:		0.093358
  validation loss:		0.462501
  validation accuracy:		91.67 %%
Epoch 413 of 500 took 0.510s
  training loss:		0.091310
  validation loss:		0.463541
  validation accuracy:		91.50 %%
Epoch 414 of 500 took 0.547s
  training loss:		0.091233
  validation loss:		0.464665
  validation accuracy:		91.67 %%
Epoch 415 of 500 took 0.556s
  training loss:		0.097118
  validation loss:		0.461792
  validation accuracy:		91.67 %%
Epoch 416 of 500 took 0.569s
  training loss:		0.098389
  validation loss:		0.462225
  validation accuracy:		91.83 %%
Epoch 417 of 500 took 0.571s
  training loss:		0.093560
  validation loss:		0.463787
  validation accuracy:		91.33 %%
Epoch 418 of 500 took 0.540s
  training loss:		0.095032
  validation loss:		0.462827
  validation accuracy:		91.67 %%
Epoch 419 of 500 took 0.573s
  training loss:		0.094116
  validation loss:		0.465845
  validation accuracy:		91.50 %%
Epoch 420 of 500 took 0.578s
  training loss:		0.089167
  validation loss:		0.467287
  validation accuracy:		91.67 %%
Epoch 421 of 500 took 0.590s
  training loss:		0.090164
  validation loss:		0.467489
  validation accuracy:		91.67 %%
Epoch 422 of 500 took 0.624s
  training loss:		0.088922
  validation loss:		0.465690
  validation accuracy:		91.50 %%
Epoch 423 of 500 took 0.564s
  training loss:		0.093394
  validation loss:		0.464297
  validation accuracy:		91.67 %%
Epoch 424 of 500 took 0.519s
  training loss:		0.092953
  validation loss:		0.464224
  validation accuracy:		91.50 %%
Epoch 425 of 500 took 0.572s
  training loss:		0.092648
  validation loss:		0.466099
  validation accuracy:		91.50 %%
Epoch 426 of 500 took 0.542s
  training loss:		0.089321
  validation loss:		0.468458
  validation accuracy:		91.50 %%
Epoch 427 of 500 took 0.537s
  training loss:		0.087487
  validation loss:		0.470311
  validation accuracy:		91.67 %%
Epoch 428 of 500 took 0.552s
  training loss:		0.087772
  validation loss:		0.469926
  validation accuracy:		91.67 %%
Epoch 429 of 500 took 0.533s
  training loss:		0.089466
  validation loss:		0.466367
  validation accuracy:		91.50 %%
Epoch 430 of 500 took 0.521s
  training loss:		0.091164
  validation loss:		0.467908
  validation accuracy:		91.67 %%
Epoch 431 of 500 took 0.561s
  training loss:		0.091671
  validation loss:		0.468511
  validation accuracy:		91.67 %%
Epoch 432 of 500 took 0.528s
  training loss:		0.088325
  validation loss:		0.470769
  validation accuracy:		91.67 %%
Epoch 433 of 500 took 0.535s
  training loss:		0.094575
  validation loss:		0.466750
  validation accuracy:		91.67 %%
Epoch 434 of 500 took 0.562s
  training loss:		0.086203
  validation loss:		0.465801
  validation accuracy:		91.50 %%
Epoch 435 of 500 took 0.540s
  training loss:		0.090701
  validation loss:		0.466512
  validation accuracy:		91.50 %%
Epoch 436 of 500 took 0.597s
  training loss:		0.088922
  validation loss:		0.470448
  validation accuracy:		91.67 %%
Epoch 437 of 500 took 0.530s
  training loss:		0.089456
  validation loss:		0.474570
  validation accuracy:		91.50 %%
Epoch 438 of 500 took 0.542s
  training loss:		0.093599
  validation loss:		0.472383
  validation accuracy:		91.50 %%
Epoch 439 of 500 took 0.569s
  training loss:		0.088055
  validation loss:		0.471588
  validation accuracy:		91.50 %%
Epoch 440 of 500 took 0.589s
  training loss:		0.090465
  validation loss:		0.473730
  validation accuracy:		91.67 %%
Epoch 441 of 500 took 0.563s
  training loss:		0.087227
  validation loss:		0.479504
  validation accuracy:		91.67 %%
Epoch 442 of 500 took 0.574s
  training loss:		0.093528
  validation loss:		0.478564
  validation accuracy:		91.50 %%
Epoch 443 of 500 took 0.519s
  training loss:		0.091817
  validation loss:		0.470676
  validation accuracy:		91.50 %%
Epoch 444 of 500 took 0.540s
  training loss:		0.089917
  validation loss:		0.466475
  validation accuracy:		91.50 %%
Epoch 445 of 500 took 0.561s
  training loss:		0.087898
  validation loss:		0.471731
  validation accuracy:		91.50 %%
Epoch 446 of 500 took 0.566s
  training loss:		0.089354
  validation loss:		0.477481
  validation accuracy:		91.50 %%
Epoch 447 of 500 took 0.534s
  training loss:		0.089637
  validation loss:		0.475223
  validation accuracy:		91.50 %%
Epoch 448 of 500 took 0.577s
  training loss:		0.088660
  validation loss:		0.475150
  validation accuracy:		91.33 %%
Epoch 449 of 500 took 0.503s
  training loss:		0.085992
  validation loss:		0.476908
  validation accuracy:		91.50 %%
Epoch 450 of 500 took 0.513s
  training loss:		0.089980
  validation loss:		0.475831
  validation accuracy:		91.67 %%
Epoch 451 of 500 took 0.521s
  training loss:		0.084162
  validation loss:		0.476943
  validation accuracy:		91.67 %%
Epoch 452 of 500 took 0.502s
  training loss:		0.087743
  validation loss:		0.475777
  validation accuracy:		91.67 %%
Epoch 453 of 500 took 0.507s
  training loss:		0.088418
  validation loss:		0.476291
  validation accuracy:		91.50 %%
Epoch 454 of 500 took 0.511s
  training loss:		0.087290
  validation loss:		0.479921
  validation accuracy:		91.17 %%
Epoch 455 of 500 took 0.505s
  training loss:		0.089352
  validation loss:		0.478292
  validation accuracy:		91.33 %%
Epoch 456 of 500 took 0.504s
  training loss:		0.095240
  validation loss:		0.477826
  validation accuracy:		91.33 %%
Epoch 457 of 500 took 0.503s
  training loss:		0.087969
  validation loss:		0.476403
  validation accuracy:		91.50 %%
Epoch 458 of 500 took 0.501s
  training loss:		0.090563
  validation loss:		0.477968
  validation accuracy:		91.50 %%
Epoch 459 of 500 took 0.511s
  training loss:		0.085327
  validation loss:		0.479293
  validation accuracy:		91.33 %%
Epoch 460 of 500 took 0.515s
  training loss:		0.089703
  validation loss:		0.481388
  validation accuracy:		91.50 %%
Epoch 461 of 500 took 0.517s
  training loss:		0.095642
  validation loss:		0.475863
  validation accuracy:		91.33 %%
Epoch 462 of 500 took 0.497s
  training loss:		0.083026
  validation loss:		0.473741
  validation accuracy:		91.50 %%
Epoch 463 of 500 took 0.519s
  training loss:		0.085041
  validation loss:		0.479369
  validation accuracy:		91.50 %%
Epoch 464 of 500 took 0.511s
  training loss:		0.084955
  validation loss:		0.480957
  validation accuracy:		91.50 %%
Epoch 465 of 500 took 0.501s
  training loss:		0.086455
  validation loss:		0.483783
  validation accuracy:		91.33 %%
Epoch 466 of 500 took 0.492s
  training loss:		0.090641
  validation loss:		0.484308
  validation accuracy:		91.50 %%
Epoch 467 of 500 took 0.504s
  training loss:		0.086076
  validation loss:		0.479515
  validation accuracy:		91.33 %%
Epoch 468 of 500 took 0.518s
  training loss:		0.087550
  validation loss:		0.479509
  validation accuracy:		91.33 %%
Epoch 469 of 500 took 0.511s
  training loss:		0.088354
  validation loss:		0.481809
  validation accuracy:		91.33 %%
Epoch 470 of 500 took 0.499s
  training loss:		0.084638
  validation loss:		0.482032
  validation accuracy:		91.33 %%
Epoch 471 of 500 took 0.508s
  training loss:		0.085921
  validation loss:		0.480937
  validation accuracy:		91.33 %%
Epoch 472 of 500 took 0.547s
  training loss:		0.085513
  validation loss:		0.482076
  validation accuracy:		91.33 %%
Epoch 473 of 500 took 0.601s
  training loss:		0.083161
  validation loss:		0.489134
  validation accuracy:		91.50 %%
Epoch 474 of 500 took 0.598s
  training loss:		0.090308
  validation loss:		0.484985
  validation accuracy:		91.33 %%
Epoch 475 of 500 took 0.547s
  training loss:		0.086438
  validation loss:		0.480717
  validation accuracy:		91.17 %%
Epoch 476 of 500 took 0.622s
  training loss:		0.081136
  validation loss:		0.486286
  validation accuracy:		91.33 %%
Epoch 477 of 500 took 0.603s
  training loss:		0.089759
  validation loss:		0.485286
  validation accuracy:		91.17 %%
Epoch 478 of 500 took 0.564s
  training loss:		0.085017
  validation loss:		0.485951
  validation accuracy:		91.17 %%
Epoch 479 of 500 took 0.597s
  training loss:		0.082980
  validation loss:		0.486202
  validation accuracy:		91.33 %%
Epoch 480 of 500 took 0.590s
  training loss:		0.083761
  validation loss:		0.485011
  validation accuracy:		91.33 %%
Epoch 481 of 500 took 0.540s
  training loss:		0.087234
  validation loss:		0.486708
  validation accuracy:		91.67 %%
Epoch 482 of 500 took 0.539s
  training loss:		0.083104
  validation loss:		0.491138
  validation accuracy:		91.50 %%
Epoch 483 of 500 took 0.534s
  training loss:		0.085939
  validation loss:		0.490389
  validation accuracy:		91.50 %%
Epoch 484 of 500 took 0.563s
  training loss:		0.085987
  validation loss:		0.489229
  validation accuracy:		91.17 %%
Epoch 485 of 500 took 0.575s
  training loss:		0.088535
  validation loss:		0.488268
  validation accuracy:		91.33 %%
Epoch 486 of 500 took 0.503s
  training loss:		0.083276
  validation loss:		0.486258
  validation accuracy:		91.50 %%
Epoch 487 of 500 took 0.505s
  training loss:		0.086571
  validation loss:		0.485124
  validation accuracy:		91.50 %%
Epoch 488 of 500 took 0.544s
  training loss:		0.085009
  validation loss:		0.488071
  validation accuracy:		91.33 %%
Epoch 489 of 500 took 0.549s
  training loss:		0.082974
  validation loss:		0.489233
  validation accuracy:		91.50 %%
Epoch 490 of 500 took 0.517s
  training loss:		0.081769
  validation loss:		0.491784
  validation accuracy:		91.67 %%
Epoch 491 of 500 took 0.507s
  training loss:		0.081230
  validation loss:		0.491790
  validation accuracy:		91.17 %%
Epoch 492 of 500 took 0.525s
  training loss:		0.087636
  validation loss:		0.491618
  validation accuracy:		91.33 %%
Epoch 493 of 500 took 0.512s
  training loss:		0.077988
  validation loss:		0.492815
  validation accuracy:		91.50 %%
Epoch 494 of 500 took 0.510s
  training loss:		0.088125
  validation loss:		0.492982
  validation accuracy:		91.33 %%
Epoch 495 of 500 took 0.527s
  training loss:		0.084025
  validation loss:		0.492356
  validation accuracy:		91.33 %%
Epoch 496 of 500 took 0.518s
  training loss:		0.081907
  validation loss:		0.495231
  validation accuracy:		91.33 %%
Epoch 497 of 500 took 0.524s
  training loss:		0.081390
  validation loss:		0.496492
  validation accuracy:		91.17 %%
Epoch 498 of 500 took 0.554s
  training loss:		0.082482
  validation loss:		0.495703
  validation accuracy:		91.17 %%
Epoch 499 of 500 took 0.547s
  training loss:		0.082908
  validation loss:		0.493745
  validation accuracy:		90.83 %%
Epoch 500 of 500 took 0.530s
  training loss:		0.082753
  validation loss:		0.496571
  validation accuracy:		91.00 %%