In [1]:
from IPython.display import Image
Image('image/network_flowchart.png')


Out[1]:

In [2]:
%matplotlib inline
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
from sklearn.metrics import confusion_matrix
import time
from datetime import timedelta
import math
import os

import sys
sys.path.append('./utility')

Download CIFAR10

download.maybe_download_and_extract(url=data_url, download_dir=data_path)

data_url = "https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz"

data_path = "data/CIFAR-10/"


In [3]:
import cifar10
cifar10.maybe_download_and_extract()


Data has apparently already been downloaded and unpacked.

CIFAR 10 Attributres

Classes in CIFAR10


In [4]:
class_names = cifar10.load_class_names()
class_names


Loading data: data/CIFAR-10/cifar-10-batches-py/batches.meta
Out[4]:
['airplane',
 'automobile',
 'bird',
 'cat',
 'deer',
 'dog',
 'frog',
 'horse',
 'ship',
 'truck']

Load Training Data


In [5]:
images_train, cls_train, labels_train = cifar10.load_training_data()


Loading data: data/CIFAR-10/cifar-10-batches-py/data_batch_1
Loading data: data/CIFAR-10/cifar-10-batches-py/data_batch_2
Loading data: data/CIFAR-10/cifar-10-batches-py/data_batch_3
Loading data: data/CIFAR-10/cifar-10-batches-py/data_batch_4
Loading data: data/CIFAR-10/cifar-10-batches-py/data_batch_5

In [6]:
print(images_train.shape)
print(labels_train.shape)
print(cls_train.shape)


(50000, 32, 32, 3)
(50000, 10)
(50000,)

In [7]:
images_test, cls_test, labels_test = cifar10.load_test_data()
print("Size of:")
print("- Training-set:\t\t{}".format(len(images_train)))
print("- Test-set:\t\t{}".format(len(images_test)))


Loading data: data/CIFAR-10/cifar-10-batches-py/test_batch
Size of:
- Training-set:		50000
- Test-set:		10000

In [8]:
import help_function as h

# Get the first images from the test-set.
images = images_test[0:9]
# Get the true classes for those images.
cls_true = cls_test[0:9]
# Plot the images and labels using our helper-function above.
h.plot_images(images=images, cls_true=cls_true, smooth=False)


Loading data: data/CIFAR-10/cifar-10-batches-py/batches.meta

Buildup Placeholder


In [9]:
from cifar10 import img_size, num_channels, num_classes
x = tf.placeholder(tf.float32, shape=[None, img_size, img_size, num_channels], name='x')
y_true = tf.placeholder(tf.float32, shape=[None, num_classes], name='y_true')
y_true_cls = tf.argmax(y_true, dimension=1)

is_training = tf.placeholder(tf.bool, name='is_training')

Main Architechture of Model


In [10]:
Image('image/network_flowchart.png')


Out[10]:

Create Network Variable


In [11]:
initializer = tf.truncated_normal_initializer(stddev=0.01, dtype=tf.float32)


with tf.variable_scope("network_var") as scope:
    try:
        conv1w = tf.get_variable('conv1w', [5,5,3,64], initializer=initializer)
        conv1b = tf.get_variable('conv1b', [64], initializer=initializer)
        
        conv2w = tf.get_variable('conv2w', [5,5,64,64], initializer=initializer)
        conv2b = tf.get_variable('conv2b', [64], initializer=initializer)
        
        fc3w = tf.get_variable('fc3w', [2304,256], initializer=initializer)
        fc3b = tf.get_variable('fc3b', [256], initializer=initializer)
        
        fc4w = tf.get_variable('fc4w', [256,128], initializer=initializer)
        fc4b = tf.get_variable('fc4b', [128], initializer=initializer)
        
        fc5w = tf.get_variable('fc5w', [128,10], initializer=initializer)
        fc5b = tf.get_variable('fc5b', [10], initializer=initializer)
            
    except:
        scope.reuse_variables()
        conv1w = tf.get_variable('conv1w', [5,5,3,64], initializer=initializer)
        conv1b = tf.get_variable('conv1b', [64], initializer=initializer)
        
        conv2w = tf.get_variable('conv2w', [5,5,64,64], initializer=initializer)
        conv2b = tf.get_variable('conv2b', [64], initializer=initializer)
        
        fc3w = tf.get_variable('fc3w', [2304,256], initializer=initializer)
        fc3b = tf.get_variable('fc3b', [256], initializer=initializer)
        
        fc4w = tf.get_variable('fc4w', [256,128], initializer=initializer)
        fc4b = tf.get_variable('fc4b', [128], initializer=initializer)
        
        fc5w = tf.get_variable('fc5w', [128,10], initializer=initializer)
        fc5b = tf.get_variable('fc5b', [10], initializer=initializer)
    
        
graph = tf.get_default_graph()
for op in graph.get_operations(): print(op.name)


x
y_true
ArgMax/dimension
ArgMax
is_training
network_var/conv1w/Initializer/truncated_normal/shape
network_var/conv1w/Initializer/truncated_normal/mean
network_var/conv1w/Initializer/truncated_normal/stddev
network_var/conv1w/Initializer/truncated_normal/TruncatedNormal
network_var/conv1w/Initializer/truncated_normal/mul
network_var/conv1w/Initializer/truncated_normal
network_var/conv1w
network_var/conv1w/Assign
network_var/conv1w/read
network_var/conv1b/Initializer/truncated_normal/shape
network_var/conv1b/Initializer/truncated_normal/mean
network_var/conv1b/Initializer/truncated_normal/stddev
network_var/conv1b/Initializer/truncated_normal/TruncatedNormal
network_var/conv1b/Initializer/truncated_normal/mul
network_var/conv1b/Initializer/truncated_normal
network_var/conv1b
network_var/conv1b/Assign
network_var/conv1b/read
network_var/conv2w/Initializer/truncated_normal/shape
network_var/conv2w/Initializer/truncated_normal/mean
network_var/conv2w/Initializer/truncated_normal/stddev
network_var/conv2w/Initializer/truncated_normal/TruncatedNormal
network_var/conv2w/Initializer/truncated_normal/mul
network_var/conv2w/Initializer/truncated_normal
network_var/conv2w
network_var/conv2w/Assign
network_var/conv2w/read
network_var/conv2b/Initializer/truncated_normal/shape
network_var/conv2b/Initializer/truncated_normal/mean
network_var/conv2b/Initializer/truncated_normal/stddev
network_var/conv2b/Initializer/truncated_normal/TruncatedNormal
network_var/conv2b/Initializer/truncated_normal/mul
network_var/conv2b/Initializer/truncated_normal
network_var/conv2b
network_var/conv2b/Assign
network_var/conv2b/read
network_var/fc3w/Initializer/truncated_normal/shape
network_var/fc3w/Initializer/truncated_normal/mean
network_var/fc3w/Initializer/truncated_normal/stddev
network_var/fc3w/Initializer/truncated_normal/TruncatedNormal
network_var/fc3w/Initializer/truncated_normal/mul
network_var/fc3w/Initializer/truncated_normal
network_var/fc3w
network_var/fc3w/Assign
network_var/fc3w/read
network_var/fc3b/Initializer/truncated_normal/shape
network_var/fc3b/Initializer/truncated_normal/mean
network_var/fc3b/Initializer/truncated_normal/stddev
network_var/fc3b/Initializer/truncated_normal/TruncatedNormal
network_var/fc3b/Initializer/truncated_normal/mul
network_var/fc3b/Initializer/truncated_normal
network_var/fc3b
network_var/fc3b/Assign
network_var/fc3b/read
network_var/fc4w/Initializer/truncated_normal/shape
network_var/fc4w/Initializer/truncated_normal/mean
network_var/fc4w/Initializer/truncated_normal/stddev
network_var/fc4w/Initializer/truncated_normal/TruncatedNormal
network_var/fc4w/Initializer/truncated_normal/mul
network_var/fc4w/Initializer/truncated_normal
network_var/fc4w
network_var/fc4w/Assign
network_var/fc4w/read
network_var/fc4b/Initializer/truncated_normal/shape
network_var/fc4b/Initializer/truncated_normal/mean
network_var/fc4b/Initializer/truncated_normal/stddev
network_var/fc4b/Initializer/truncated_normal/TruncatedNormal
network_var/fc4b/Initializer/truncated_normal/mul
network_var/fc4b/Initializer/truncated_normal
network_var/fc4b
network_var/fc4b/Assign
network_var/fc4b/read
network_var/fc5w/Initializer/truncated_normal/shape
network_var/fc5w/Initializer/truncated_normal/mean
network_var/fc5w/Initializer/truncated_normal/stddev
network_var/fc5w/Initializer/truncated_normal/TruncatedNormal
network_var/fc5w/Initializer/truncated_normal/mul
network_var/fc5w/Initializer/truncated_normal
network_var/fc5w
network_var/fc5w/Assign
network_var/fc5w/read
network_var/fc5b/Initializer/truncated_normal/shape
network_var/fc5b/Initializer/truncated_normal/mean
network_var/fc5b/Initializer/truncated_normal/stddev
network_var/fc5b/Initializer/truncated_normal/TruncatedNormal
network_var/fc5b/Initializer/truncated_normal/mul
network_var/fc5b/Initializer/truncated_normal
network_var/fc5b
network_var/fc5b/Assign
network_var/fc5b/read

Build Network


In [12]:
with tf.name_scope("network_test"):
    img = h.pre_process(images=x, training=is_training)
    net = tf.nn.conv2d(img, conv1w, strides=[1, 1, 1, 1], padding='SAME',name='conv1')
    net2 = tf.nn.conv2d(img, conv1w, strides=[1, 1, 1, 1], padding='VALID',name='conv1')
    
    print("Raw img:{}, Processed:{}".format(x.get_shape(), img.get_shape()))
    print("SAME:", net)
    print("VALID:", net2)


Raw img:(?, 32, 32, 3), Processed:(?, 24, 24, 3)
SAME: Tensor("network_test/conv1:0", shape=(?, 24, 24, 64), dtype=float32)
VALID: Tensor("network_test/conv1_1:0", shape=(?, 20, 20, 64), dtype=float32)

In [13]:
with tf.name_scope("network"):
    img = h.pre_process(images=x, training=is_training)
    
    net = tf.nn.conv2d(img, conv1w, strides=[1, 1, 1, 1], padding='SAME',name='conv1')
    net = tf.add(net,conv1b, name='add_bias1')
    net = tf.nn.relu(net, name='relu_1')
    
    net = tf.nn.max_pool(net, ksize=[1, 3, 3, 1],strides=[1, 2, 2, 1], padding='SAME')
    
    net = tf.nn.conv2d(net, conv2w, strides=[1, 1, 1, 1], padding='SAME',name='conv2')
    net = tf.add(net,conv2b, name='add_bias2')
    net = tf.nn.relu(net, name='relu_2')
    
    net = tf.nn.max_pool(net, ksize=[1, 3, 3, 1],strides=[1, 2, 2, 1], padding='SAME')
    
    print("Before reshape: ", net)
    reshape_net = tf.reshape(net, [-1, int(np.prod(net.get_shape()[1:]))])
    print("After reshape: ", reshape_net)
    
    
    net = tf.nn.relu(tf.add(tf.matmul(reshape_net,fc3w),fc3b))
    net = tf.nn.relu(tf.add(tf.matmul(net,fc4w),fc4b))
    logits = tf.add(tf.matmul(net,fc5w),fc5b)
    
    print("Final output: ", logits)


Before reshape:  Tensor("network/MaxPool_1:0", shape=(?, 6, 6, 64), dtype=float32)
After reshape:  Tensor("network/Reshape:0", shape=(?, 2304), dtype=float32)
Final output:  Tensor("network/Add_2:0", shape=(?, 10), dtype=float32)

Loss Function


In [14]:
losses = tf.nn.softmax_cross_entropy_with_logits(labels=y_true, logits=logits)  
loss = tf.reduce_mean(losses, name='loss') 
optimizer = tf.train.AdamOptimizer(learning_rate=1e-4).minimize(loss)

Calculate Accuracy


In [15]:
y_pred = tf.nn.softmax(logits)
y_pred_cls = tf.argmax(y_pred, dimension=1)
correct_prediction = tf.equal(y_pred_cls, y_true_cls)
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

Start Runing your Session


In [16]:
session = tf.Session()
saver = tf.train.Saver() 
session.run(tf.global_variables_initializer())

In [17]:
save_dir = "./model"

try:
    print("Trying to restore last checkpoint ...")

    # Use TensorFlow to find the latest checkpoint - if any.
    last_chk_path = tf.train.latest_checkpoint(checkpoint_dir=save_dir)

    # Try and load the data in the checkpoint.
    saver.restore(session, save_path=last_chk_path)

    # If we get to this point, the checkpoint was successfully loaded.
    print("Restored checkpoint from:", last_chk_path)
except:
    # If the above failed for some reason, simply
    # initialize all the variables for the TensorFlow graph.
    print("Failed to restore checkpoint. Initializing variables instead.")
    session.run(tf.global_variables_initializer())


Trying to restore last checkpoint ...
Restored checkpoint from: ./model/network.ckpt-53500

Determine Batch Size


In [20]:
train_batch_size = 64
num_iterations = 100000

Start Training your model


In [21]:
start_time = time.time()

for i in range(num_iterations):
    # Get a batch of training examples.
    # x_batch now holds a batch of images and
    # y_true_batch are the true labels for those images.
    x_batch, y_true_batch = h.random_batch(images_train, labels_train, train_batch_size)

    # Put the batch into a dict with the proper names
    # for placeholder variables in the TensorFlow graph.
    feed_dict_train = {x: x_batch,
                       y_true: y_true_batch,
                          is_training:True}

    # Run the optimizer using this batch of training data.
    # TensorFlow assigns the variables in feed_dict_train
    # to the placeholder variables and then runs the optimizer.
    # We also want to retrieve the global_step counter.
    session.run( optimizer,feed_dict=feed_dict_train)

    # Print status to screen every 100 iterations (and last).
    if (i % 100 == 0) or (i == num_iterations - 1):
        # Calculate the accuracy on the training-batch.
        batch_acc = session.run(accuracy,
                                feed_dict=feed_dict_train)

        # Print status.
        msg = "Global Step: {0:>6}, Training Batch Accuracy: {1:>6.1%}"
        print(msg.format(i, batch_acc))

    # Save a checkpoint to disk every 1000 iterations (and last).
    if (i % 500 == 0) or (i == num_iterations - 1):
        # Save all variables of the TensorFlow graph to a
        # checkpoint. Append the global_step counter
        # to the filename so we save the last several checkpoints.
        saver.save(session,
                   save_path=os.path.join(save_dir, "network.ckpt"),
                   global_step=i)

        print("Saved checkpoint.")

# Ending time.
end_time = time.time()

# Difference between start and end-times.
time_dif = end_time - start_time

# Print the time-usage.
print("Time usage: " + str(timedelta(seconds=int(round(time_dif)))))


Global Step:      0, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:    100, Training Batch Accuracy:  75.0%
Global Step:    200, Training Batch Accuracy:  70.3%
Global Step:    300, Training Batch Accuracy:  70.3%
Global Step:    400, Training Batch Accuracy:  70.3%
Global Step:    500, Training Batch Accuracy:  64.1%
Saved checkpoint.
Global Step:    600, Training Batch Accuracy:  71.9%
Global Step:    700, Training Batch Accuracy:  67.2%
Global Step:    800, Training Batch Accuracy:  64.1%
Global Step:    900, Training Batch Accuracy:  71.9%
Global Step:   1000, Training Batch Accuracy:  82.8%
Saved checkpoint.
Global Step:   1100, Training Batch Accuracy:  59.4%
Global Step:   1200, Training Batch Accuracy:  59.4%
Global Step:   1300, Training Batch Accuracy:  70.3%
Global Step:   1400, Training Batch Accuracy:  73.4%
Global Step:   1500, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:   1600, Training Batch Accuracy:  57.8%
Global Step:   1700, Training Batch Accuracy:  76.6%
Global Step:   1800, Training Batch Accuracy:  75.0%
Global Step:   1900, Training Batch Accuracy:  67.2%
Global Step:   2000, Training Batch Accuracy:  62.5%
Saved checkpoint.
Global Step:   2100, Training Batch Accuracy:  73.4%
Global Step:   2200, Training Batch Accuracy:  84.4%
Global Step:   2300, Training Batch Accuracy:  64.1%
Global Step:   2400, Training Batch Accuracy:  71.9%
Global Step:   2500, Training Batch Accuracy:  64.1%
Saved checkpoint.
Global Step:   2600, Training Batch Accuracy:  71.9%
Global Step:   2700, Training Batch Accuracy:  68.8%
Global Step:   2800, Training Batch Accuracy:  73.4%
Global Step:   2900, Training Batch Accuracy:  68.8%
Global Step:   3000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:   3100, Training Batch Accuracy:  65.6%
Global Step:   3200, Training Batch Accuracy:  71.9%
Global Step:   3300, Training Batch Accuracy:  75.0%
Global Step:   3400, Training Batch Accuracy:  71.9%
Global Step:   3500, Training Batch Accuracy:  64.1%
Saved checkpoint.
Global Step:   3600, Training Batch Accuracy:  73.4%
Global Step:   3700, Training Batch Accuracy:  73.4%
Global Step:   3800, Training Batch Accuracy:  68.8%
Global Step:   3900, Training Batch Accuracy:  65.6%
Global Step:   4000, Training Batch Accuracy:  62.5%
Saved checkpoint.
Global Step:   4100, Training Batch Accuracy:  64.1%
Global Step:   4200, Training Batch Accuracy:  71.9%
Global Step:   4300, Training Batch Accuracy:  73.4%
Global Step:   4400, Training Batch Accuracy:  73.4%
Global Step:   4500, Training Batch Accuracy:  64.1%
Saved checkpoint.
Global Step:   4600, Training Batch Accuracy:  78.1%
Global Step:   4700, Training Batch Accuracy:  62.5%
Global Step:   4800, Training Batch Accuracy:  76.6%
Global Step:   4900, Training Batch Accuracy:  60.9%
Global Step:   5000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:   5100, Training Batch Accuracy:  71.9%
Global Step:   5200, Training Batch Accuracy:  62.5%
Global Step:   5300, Training Batch Accuracy:  67.2%
Global Step:   5400, Training Batch Accuracy:  75.0%
Global Step:   5500, Training Batch Accuracy:  67.2%
Saved checkpoint.
Global Step:   5600, Training Batch Accuracy:  75.0%
Global Step:   5700, Training Batch Accuracy:  76.6%
Global Step:   5800, Training Batch Accuracy:  70.3%
Global Step:   5900, Training Batch Accuracy:  65.6%
Global Step:   6000, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:   6100, Training Batch Accuracy:  64.1%
Global Step:   6200, Training Batch Accuracy:  79.7%
Global Step:   6300, Training Batch Accuracy:  68.8%
Global Step:   6400, Training Batch Accuracy:  68.8%
Global Step:   6500, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:   6600, Training Batch Accuracy:  56.2%
Global Step:   6700, Training Batch Accuracy:  65.6%
Global Step:   6800, Training Batch Accuracy:  70.3%
Global Step:   6900, Training Batch Accuracy:  73.4%
Global Step:   7000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:   7100, Training Batch Accuracy:  64.1%
Global Step:   7200, Training Batch Accuracy:  65.6%
Global Step:   7300, Training Batch Accuracy:  73.4%
Global Step:   7400, Training Batch Accuracy:  73.4%
Global Step:   7500, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:   7600, Training Batch Accuracy:  78.1%
Global Step:   7700, Training Batch Accuracy:  57.8%
Global Step:   7800, Training Batch Accuracy:  78.1%
Global Step:   7900, Training Batch Accuracy:  65.6%
Global Step:   8000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:   8100, Training Batch Accuracy:  73.4%
Global Step:   8200, Training Batch Accuracy:  73.4%
Global Step:   8300, Training Batch Accuracy:  75.0%
Global Step:   8400, Training Batch Accuracy:  64.1%
Global Step:   8500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:   8600, Training Batch Accuracy:  62.5%
Global Step:   8700, Training Batch Accuracy:  60.9%
Global Step:   8800, Training Batch Accuracy:  78.1%
Global Step:   8900, Training Batch Accuracy:  65.6%
Global Step:   9000, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:   9100, Training Batch Accuracy:  73.4%
Global Step:   9200, Training Batch Accuracy:  62.5%
Global Step:   9300, Training Batch Accuracy:  59.4%
Global Step:   9400, Training Batch Accuracy:  59.4%
Global Step:   9500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:   9600, Training Batch Accuracy:  64.1%
Global Step:   9700, Training Batch Accuracy:  75.0%
Global Step:   9800, Training Batch Accuracy:  68.8%
Global Step:   9900, Training Batch Accuracy:  68.8%
Global Step:  10000, Training Batch Accuracy:  67.2%
Saved checkpoint.
Global Step:  10100, Training Batch Accuracy:  68.8%
Global Step:  10200, Training Batch Accuracy:  68.8%
Global Step:  10300, Training Batch Accuracy:  71.9%
Global Step:  10400, Training Batch Accuracy:  73.4%
Global Step:  10500, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:  10600, Training Batch Accuracy:  73.4%
Global Step:  10700, Training Batch Accuracy:  68.8%
Global Step:  10800, Training Batch Accuracy:  68.8%
Global Step:  10900, Training Batch Accuracy:  76.6%
Global Step:  11000, Training Batch Accuracy:  62.5%
Saved checkpoint.
Global Step:  11100, Training Batch Accuracy:  62.5%
Global Step:  11200, Training Batch Accuracy:  62.5%
Global Step:  11300, Training Batch Accuracy:  70.3%
Global Step:  11400, Training Batch Accuracy:  64.1%
Global Step:  11500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  11600, Training Batch Accuracy:  59.4%
Global Step:  11700, Training Batch Accuracy:  67.2%
Global Step:  11800, Training Batch Accuracy:  75.0%
Global Step:  11900, Training Batch Accuracy:  67.2%
Global Step:  12000, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:  12100, Training Batch Accuracy:  65.6%
Global Step:  12200, Training Batch Accuracy:  75.0%
Global Step:  12300, Training Batch Accuracy:  65.6%
Global Step:  12400, Training Batch Accuracy:  70.3%
Global Step:  12500, Training Batch Accuracy:  65.6%
Saved checkpoint.
Global Step:  12600, Training Batch Accuracy:  71.9%
Global Step:  12700, Training Batch Accuracy:  76.6%
Global Step:  12800, Training Batch Accuracy:  75.0%
Global Step:  12900, Training Batch Accuracy:  76.6%
Global Step:  13000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  13100, Training Batch Accuracy:  65.6%
Global Step:  13200, Training Batch Accuracy:  67.2%
Global Step:  13300, Training Batch Accuracy:  64.1%
Global Step:  13400, Training Batch Accuracy:  73.4%
Global Step:  13500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  13600, Training Batch Accuracy:  73.4%
Global Step:  13700, Training Batch Accuracy:  62.5%
Global Step:  13800, Training Batch Accuracy:  68.8%
Global Step:  13900, Training Batch Accuracy:  78.1%
Global Step:  14000, Training Batch Accuracy:  67.2%
Saved checkpoint.
Global Step:  14100, Training Batch Accuracy:  67.2%
Global Step:  14200, Training Batch Accuracy:  71.9%
Global Step:  14300, Training Batch Accuracy:  71.9%
Global Step:  14400, Training Batch Accuracy:  68.8%
Global Step:  14500, Training Batch Accuracy:  64.1%
Saved checkpoint.
Global Step:  14600, Training Batch Accuracy:  78.1%
Global Step:  14700, Training Batch Accuracy:  71.9%
Global Step:  14800, Training Batch Accuracy:  67.2%
Global Step:  14900, Training Batch Accuracy:  67.2%
Global Step:  15000, Training Batch Accuracy:  67.2%
Saved checkpoint.
Global Step:  15100, Training Batch Accuracy:  62.5%
Global Step:  15200, Training Batch Accuracy:  67.2%
Global Step:  15300, Training Batch Accuracy:  75.0%
Global Step:  15400, Training Batch Accuracy:  70.3%
Global Step:  15500, Training Batch Accuracy:  64.1%
Saved checkpoint.
Global Step:  15600, Training Batch Accuracy:  67.2%
Global Step:  15700, Training Batch Accuracy:  64.1%
Global Step:  15800, Training Batch Accuracy:  79.7%
Global Step:  15900, Training Batch Accuracy:  75.0%
Global Step:  16000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  16100, Training Batch Accuracy:  60.9%
Global Step:  16200, Training Batch Accuracy:  67.2%
Global Step:  16300, Training Batch Accuracy:  59.4%
Global Step:  16400, Training Batch Accuracy:  73.4%
Global Step:  16500, Training Batch Accuracy:  64.1%
Saved checkpoint.
Global Step:  16600, Training Batch Accuracy:  73.4%
Global Step:  16700, Training Batch Accuracy:  70.3%
Global Step:  16800, Training Batch Accuracy:  67.2%
Global Step:  16900, Training Batch Accuracy:  67.2%
Global Step:  17000, Training Batch Accuracy:  62.5%
Saved checkpoint.
Global Step:  17100, Training Batch Accuracy:  68.8%
Global Step:  17200, Training Batch Accuracy:  71.9%
Global Step:  17300, Training Batch Accuracy:  64.1%
Global Step:  17400, Training Batch Accuracy:  59.4%
Global Step:  17500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  17600, Training Batch Accuracy:  70.3%
Global Step:  17700, Training Batch Accuracy:  62.5%
Global Step:  17800, Training Batch Accuracy:  70.3%
Global Step:  17900, Training Batch Accuracy:  71.9%
Global Step:  18000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  18100, Training Batch Accuracy:  67.2%
Global Step:  18200, Training Batch Accuracy:  64.1%
Global Step:  18300, Training Batch Accuracy:  76.6%
Global Step:  18400, Training Batch Accuracy:  68.8%
Global Step:  18500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  18600, Training Batch Accuracy:  79.7%
Global Step:  18700, Training Batch Accuracy:  71.9%
Global Step:  18800, Training Batch Accuracy:  70.3%
Global Step:  18900, Training Batch Accuracy:  70.3%
Global Step:  19000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  19100, Training Batch Accuracy:  68.8%
Global Step:  19200, Training Batch Accuracy:  76.6%
Global Step:  19300, Training Batch Accuracy:  59.4%
Global Step:  19400, Training Batch Accuracy:  68.8%
Global Step:  19500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  19600, Training Batch Accuracy:  70.3%
Global Step:  19700, Training Batch Accuracy:  71.9%
Global Step:  19800, Training Batch Accuracy:  62.5%
Global Step:  19900, Training Batch Accuracy:  70.3%
Global Step:  20000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  20100, Training Batch Accuracy:  78.1%
Global Step:  20200, Training Batch Accuracy:  70.3%
Global Step:  20300, Training Batch Accuracy:  56.2%
Global Step:  20400, Training Batch Accuracy:  78.1%
Global Step:  20500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  20600, Training Batch Accuracy:  67.2%
Global Step:  20700, Training Batch Accuracy:  62.5%
Global Step:  20800, Training Batch Accuracy:  70.3%
Global Step:  20900, Training Batch Accuracy:  75.0%
Global Step:  21000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  21100, Training Batch Accuracy:  78.1%
Global Step:  21200, Training Batch Accuracy:  71.9%
Global Step:  21300, Training Batch Accuracy:  73.4%
Global Step:  21400, Training Batch Accuracy:  71.9%
Global Step:  21500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  21600, Training Batch Accuracy:  75.0%
Global Step:  21700, Training Batch Accuracy:  68.8%
Global Step:  21800, Training Batch Accuracy:  67.2%
Global Step:  21900, Training Batch Accuracy:  65.6%
Global Step:  22000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  22100, Training Batch Accuracy:  71.9%
Global Step:  22200, Training Batch Accuracy:  71.9%
Global Step:  22300, Training Batch Accuracy:  68.8%
Global Step:  22400, Training Batch Accuracy:  65.6%
Global Step:  22500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  22600, Training Batch Accuracy:  70.3%
Global Step:  22700, Training Batch Accuracy:  68.8%
Global Step:  22800, Training Batch Accuracy:  85.9%
Global Step:  22900, Training Batch Accuracy:  76.6%
Global Step:  23000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  23100, Training Batch Accuracy:  75.0%
Global Step:  23200, Training Batch Accuracy:  67.2%
Global Step:  23300, Training Batch Accuracy:  78.1%
Global Step:  23400, Training Batch Accuracy:  68.8%
Global Step:  23500, Training Batch Accuracy:  65.6%
Saved checkpoint.
Global Step:  23600, Training Batch Accuracy:  73.4%
Global Step:  23700, Training Batch Accuracy:  60.9%
Global Step:  23800, Training Batch Accuracy:  68.8%
Global Step:  23900, Training Batch Accuracy:  73.4%
Global Step:  24000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  24100, Training Batch Accuracy:  62.5%
Global Step:  24200, Training Batch Accuracy:  79.7%
Global Step:  24300, Training Batch Accuracy:  75.0%
Global Step:  24400, Training Batch Accuracy:  70.3%
Global Step:  24500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  24600, Training Batch Accuracy:  65.6%
Global Step:  24700, Training Batch Accuracy:  68.8%
Global Step:  24800, Training Batch Accuracy:  65.6%
Global Step:  24900, Training Batch Accuracy:  67.2%
Global Step:  25000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  25100, Training Batch Accuracy:  65.6%
Global Step:  25200, Training Batch Accuracy:  64.1%
Global Step:  25300, Training Batch Accuracy:  68.8%
Global Step:  25400, Training Batch Accuracy:  73.4%
Global Step:  25500, Training Batch Accuracy:  65.6%
Saved checkpoint.
Global Step:  25600, Training Batch Accuracy:  76.6%
Global Step:  25700, Training Batch Accuracy:  62.5%
Global Step:  25800, Training Batch Accuracy:  71.9%
Global Step:  25900, Training Batch Accuracy:  81.2%
Global Step:  26000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  26100, Training Batch Accuracy:  70.3%
Global Step:  26200, Training Batch Accuracy:  67.2%
Global Step:  26300, Training Batch Accuracy:  67.2%
Global Step:  26400, Training Batch Accuracy:  73.4%
Global Step:  26500, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:  26600, Training Batch Accuracy:  70.3%
Global Step:  26700, Training Batch Accuracy:  67.2%
Global Step:  26800, Training Batch Accuracy:  73.4%
Global Step:  26900, Training Batch Accuracy:  70.3%
Global Step:  27000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  27100, Training Batch Accuracy:  73.4%
Global Step:  27200, Training Batch Accuracy:  78.1%
Global Step:  27300, Training Batch Accuracy:  76.6%
Global Step:  27400, Training Batch Accuracy:  73.4%
Global Step:  27500, Training Batch Accuracy:  84.4%
Saved checkpoint.
Global Step:  27600, Training Batch Accuracy:  78.1%
Global Step:  27700, Training Batch Accuracy:  71.9%
Global Step:  27800, Training Batch Accuracy:  76.6%
Global Step:  27900, Training Batch Accuracy:  76.6%
Global Step:  28000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  28100, Training Batch Accuracy:  73.4%
Global Step:  28200, Training Batch Accuracy:  73.4%
Global Step:  28300, Training Batch Accuracy:  57.8%
Global Step:  28400, Training Batch Accuracy:  82.8%
Global Step:  28500, Training Batch Accuracy:  65.6%
Saved checkpoint.
Global Step:  28600, Training Batch Accuracy:  65.6%
Global Step:  28700, Training Batch Accuracy:  71.9%
Global Step:  28800, Training Batch Accuracy:  79.7%
Global Step:  28900, Training Batch Accuracy:  79.7%
Global Step:  29000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  29100, Training Batch Accuracy:  84.4%
Global Step:  29200, Training Batch Accuracy:  84.4%
Global Step:  29300, Training Batch Accuracy:  65.6%
Global Step:  29400, Training Batch Accuracy:  67.2%
Global Step:  29500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  29600, Training Batch Accuracy:  78.1%
Global Step:  29700, Training Batch Accuracy:  75.0%
Global Step:  29800, Training Batch Accuracy:  73.4%
Global Step:  29900, Training Batch Accuracy:  62.5%
Global Step:  30000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  30100, Training Batch Accuracy:  79.7%
Global Step:  30200, Training Batch Accuracy:  75.0%
Global Step:  30300, Training Batch Accuracy:  73.4%
Global Step:  30400, Training Batch Accuracy:  71.9%
Global Step:  30500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  30600, Training Batch Accuracy:  65.6%
Global Step:  30700, Training Batch Accuracy:  73.4%
Global Step:  30800, Training Batch Accuracy:  62.5%
Global Step:  30900, Training Batch Accuracy:  75.0%
Global Step:  31000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  31100, Training Batch Accuracy:  78.1%
Global Step:  31200, Training Batch Accuracy:  65.6%
Global Step:  31300, Training Batch Accuracy:  64.1%
Global Step:  31400, Training Batch Accuracy:  67.2%
Global Step:  31500, Training Batch Accuracy:  57.8%
Saved checkpoint.
Global Step:  31600, Training Batch Accuracy:  81.2%
Global Step:  31700, Training Batch Accuracy:  68.8%
Global Step:  31800, Training Batch Accuracy:  75.0%
Global Step:  31900, Training Batch Accuracy:  67.2%
Global Step:  32000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  32100, Training Batch Accuracy:  64.1%
Global Step:  32200, Training Batch Accuracy:  67.2%
Global Step:  32300, Training Batch Accuracy:  71.9%
Global Step:  32400, Training Batch Accuracy:  70.3%
Global Step:  32500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  32600, Training Batch Accuracy:  65.6%
Global Step:  32700, Training Batch Accuracy:  73.4%
Global Step:  32800, Training Batch Accuracy:  73.4%
Global Step:  32900, Training Batch Accuracy:  65.6%
Global Step:  33000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  33100, Training Batch Accuracy:  75.0%
Global Step:  33200, Training Batch Accuracy:  75.0%
Global Step:  33300, Training Batch Accuracy:  73.4%
Global Step:  33400, Training Batch Accuracy:  78.1%
Global Step:  33500, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:  33600, Training Batch Accuracy:  68.8%
Global Step:  33700, Training Batch Accuracy:  71.9%
Global Step:  33800, Training Batch Accuracy:  68.8%
Global Step:  33900, Training Batch Accuracy:  78.1%
Global Step:  34000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  34100, Training Batch Accuracy:  71.9%
Global Step:  34200, Training Batch Accuracy:  65.6%
Global Step:  34300, Training Batch Accuracy:  71.9%
Global Step:  34400, Training Batch Accuracy:  67.2%
Global Step:  34500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  34600, Training Batch Accuracy:  73.4%
Global Step:  34700, Training Batch Accuracy:  71.9%
Global Step:  34800, Training Batch Accuracy:  68.8%
Global Step:  34900, Training Batch Accuracy:  81.2%
Global Step:  35000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  35100, Training Batch Accuracy:  76.6%
Global Step:  35200, Training Batch Accuracy:  71.9%
Global Step:  35300, Training Batch Accuracy:  73.4%
Global Step:  35400, Training Batch Accuracy:  76.6%
Global Step:  35500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  35600, Training Batch Accuracy:  79.7%
Global Step:  35700, Training Batch Accuracy:  65.6%
Global Step:  35800, Training Batch Accuracy:  71.9%
Global Step:  35900, Training Batch Accuracy:  64.1%
Global Step:  36000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  36100, Training Batch Accuracy:  75.0%
Global Step:  36200, Training Batch Accuracy:  68.8%
Global Step:  36300, Training Batch Accuracy:  71.9%
Global Step:  36400, Training Batch Accuracy:  73.4%
Global Step:  36500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  36600, Training Batch Accuracy:  75.0%
Global Step:  36700, Training Batch Accuracy:  81.2%
Global Step:  36800, Training Batch Accuracy:  71.9%
Global Step:  36900, Training Batch Accuracy:  70.3%
Global Step:  37000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  37100, Training Batch Accuracy:  78.1%
Global Step:  37200, Training Batch Accuracy:  68.8%
Global Step:  37300, Training Batch Accuracy:  71.9%
Global Step:  37400, Training Batch Accuracy:  71.9%
Global Step:  37500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  37600, Training Batch Accuracy:  67.2%
Global Step:  37700, Training Batch Accuracy:  62.5%
Global Step:  37800, Training Batch Accuracy:  67.2%
Global Step:  37900, Training Batch Accuracy:  79.7%
Global Step:  38000, Training Batch Accuracy:  85.9%
Saved checkpoint.
Global Step:  38100, Training Batch Accuracy:  75.0%
Global Step:  38200, Training Batch Accuracy:  81.2%
Global Step:  38300, Training Batch Accuracy:  73.4%
Global Step:  38400, Training Batch Accuracy:  71.9%
Global Step:  38500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  38600, Training Batch Accuracy:  68.8%
Global Step:  38700, Training Batch Accuracy:  75.0%
Global Step:  38800, Training Batch Accuracy:  71.9%
Global Step:  38900, Training Batch Accuracy:  79.7%
Global Step:  39000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  39100, Training Batch Accuracy:  67.2%
Global Step:  39200, Training Batch Accuracy:  73.4%
Global Step:  39300, Training Batch Accuracy:  76.6%
Global Step:  39400, Training Batch Accuracy:  71.9%
Global Step:  39500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  39600, Training Batch Accuracy:  70.3%
Global Step:  39700, Training Batch Accuracy:  78.1%
Global Step:  39800, Training Batch Accuracy:  81.2%
Global Step:  39900, Training Batch Accuracy:  78.1%
Global Step:  40000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  40100, Training Batch Accuracy:  70.3%
Global Step:  40200, Training Batch Accuracy:  75.0%
Global Step:  40300, Training Batch Accuracy:  75.0%
Global Step:  40400, Training Batch Accuracy:  76.6%
Global Step:  40500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  40600, Training Batch Accuracy:  75.0%
Global Step:  40700, Training Batch Accuracy:  71.9%
Global Step:  40800, Training Batch Accuracy:  64.1%
Global Step:  40900, Training Batch Accuracy:  75.0%
Global Step:  41000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  41100, Training Batch Accuracy:  67.2%
Global Step:  41200, Training Batch Accuracy:  71.9%
Global Step:  41300, Training Batch Accuracy:  78.1%
Global Step:  41400, Training Batch Accuracy:  75.0%
Global Step:  41500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  41600, Training Batch Accuracy:  78.1%
Global Step:  41700, Training Batch Accuracy:  67.2%
Global Step:  41800, Training Batch Accuracy:  81.2%
Global Step:  41900, Training Batch Accuracy:  68.8%
Global Step:  42000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  42100, Training Batch Accuracy:  79.7%
Global Step:  42200, Training Batch Accuracy:  71.9%
Global Step:  42300, Training Batch Accuracy:  70.3%
Global Step:  42400, Training Batch Accuracy:  78.1%
Global Step:  42500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  42600, Training Batch Accuracy:  75.0%
Global Step:  42700, Training Batch Accuracy:  78.1%
Global Step:  42800, Training Batch Accuracy:  82.8%
Global Step:  42900, Training Batch Accuracy:  73.4%
Global Step:  43000, Training Batch Accuracy:  67.2%
Saved checkpoint.
Global Step:  43100, Training Batch Accuracy:  70.3%
Global Step:  43200, Training Batch Accuracy:  76.6%
Global Step:  43300, Training Batch Accuracy:  75.0%
Global Step:  43400, Training Batch Accuracy:  82.8%
Global Step:  43500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  43600, Training Batch Accuracy:  71.9%
Global Step:  43700, Training Batch Accuracy:  71.9%
Global Step:  43800, Training Batch Accuracy:  73.4%
Global Step:  43900, Training Batch Accuracy:  73.4%
Global Step:  44000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  44100, Training Batch Accuracy:  67.2%
Global Step:  44200, Training Batch Accuracy:  68.8%
Global Step:  44300, Training Batch Accuracy:  79.7%
Global Step:  44400, Training Batch Accuracy:  67.2%
Global Step:  44500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  44600, Training Batch Accuracy:  68.8%
Global Step:  44700, Training Batch Accuracy:  75.0%
Global Step:  44800, Training Batch Accuracy:  78.1%
Global Step:  44900, Training Batch Accuracy:  76.6%
Global Step:  45000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  45100, Training Batch Accuracy:  75.0%
Global Step:  45200, Training Batch Accuracy:  79.7%
Global Step:  45300, Training Batch Accuracy:  65.6%
Global Step:  45400, Training Batch Accuracy:  81.2%
Global Step:  45500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  45600, Training Batch Accuracy:  68.8%
Global Step:  45700, Training Batch Accuracy:  68.8%
Global Step:  45800, Training Batch Accuracy:  68.8%
Global Step:  45900, Training Batch Accuracy:  82.8%
Global Step:  46000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  46100, Training Batch Accuracy:  78.1%
Global Step:  46200, Training Batch Accuracy:  71.9%
Global Step:  46300, Training Batch Accuracy:  68.8%
Global Step:  46400, Training Batch Accuracy:  70.3%
Global Step:  46500, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  46600, Training Batch Accuracy:  75.0%
Global Step:  46700, Training Batch Accuracy:  73.4%
Global Step:  46800, Training Batch Accuracy:  73.4%
Global Step:  46900, Training Batch Accuracy:  68.8%
Global Step:  47000, Training Batch Accuracy:  81.2%
Saved checkpoint.
Global Step:  47100, Training Batch Accuracy:  71.9%
Global Step:  47200, Training Batch Accuracy:  78.1%
Global Step:  47300, Training Batch Accuracy:  71.9%
Global Step:  47400, Training Batch Accuracy:  64.1%
Global Step:  47500, Training Batch Accuracy:  67.2%
Saved checkpoint.
Global Step:  47600, Training Batch Accuracy:  62.5%
Global Step:  47700, Training Batch Accuracy:  78.1%
Global Step:  47800, Training Batch Accuracy:  71.9%
Global Step:  47900, Training Batch Accuracy:  71.9%
Global Step:  48000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  48100, Training Batch Accuracy:  71.9%
Global Step:  48200, Training Batch Accuracy:  71.9%
Global Step:  48300, Training Batch Accuracy:  79.7%
Global Step:  48400, Training Batch Accuracy:  67.2%
Global Step:  48500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  48600, Training Batch Accuracy:  70.3%
Global Step:  48700, Training Batch Accuracy:  65.6%
Global Step:  48800, Training Batch Accuracy:  71.9%
Global Step:  48900, Training Batch Accuracy:  85.9%
Global Step:  49000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  49100, Training Batch Accuracy:  82.8%
Global Step:  49200, Training Batch Accuracy:  78.1%
Global Step:  49300, Training Batch Accuracy:  78.1%
Global Step:  49400, Training Batch Accuracy:  76.6%
Global Step:  49500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  49600, Training Batch Accuracy:  75.0%
Global Step:  49700, Training Batch Accuracy:  73.4%
Global Step:  49800, Training Batch Accuracy:  62.5%
Global Step:  49900, Training Batch Accuracy:  68.8%
Global Step:  50000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  50100, Training Batch Accuracy:  71.9%
Global Step:  50200, Training Batch Accuracy:  82.8%
Global Step:  50300, Training Batch Accuracy:  65.6%
Global Step:  50400, Training Batch Accuracy:  73.4%
Global Step:  50500, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:  50600, Training Batch Accuracy:  76.6%
Global Step:  50700, Training Batch Accuracy:  75.0%
Global Step:  50800, Training Batch Accuracy:  76.6%
Global Step:  50900, Training Batch Accuracy:  57.8%
Global Step:  51000, Training Batch Accuracy:  84.4%
Saved checkpoint.
Global Step:  51100, Training Batch Accuracy:  73.4%
Global Step:  51200, Training Batch Accuracy:  68.8%
Global Step:  51300, Training Batch Accuracy:  82.8%
Global Step:  51400, Training Batch Accuracy:  78.1%
Global Step:  51500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  51600, Training Batch Accuracy:  79.7%
Global Step:  51700, Training Batch Accuracy:  85.9%
Global Step:  51800, Training Batch Accuracy:  57.8%
Global Step:  51900, Training Batch Accuracy:  62.5%
Global Step:  52000, Training Batch Accuracy:  84.4%
Saved checkpoint.
Global Step:  52100, Training Batch Accuracy:  73.4%
Global Step:  52200, Training Batch Accuracy:  85.9%
Global Step:  52300, Training Batch Accuracy:  71.9%
Global Step:  52400, Training Batch Accuracy:  78.1%
Global Step:  52500, Training Batch Accuracy:  60.9%
Saved checkpoint.
Global Step:  52600, Training Batch Accuracy:  75.0%
Global Step:  52700, Training Batch Accuracy:  73.4%
Global Step:  52800, Training Batch Accuracy:  81.2%
Global Step:  52900, Training Batch Accuracy:  71.9%
Global Step:  53000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  53100, Training Batch Accuracy:  65.6%
Global Step:  53200, Training Batch Accuracy:  71.9%
Global Step:  53300, Training Batch Accuracy:  65.6%
Global Step:  53400, Training Batch Accuracy:  82.8%
Global Step:  53500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  53600, Training Batch Accuracy:  81.2%
Global Step:  53700, Training Batch Accuracy:  84.4%
Global Step:  53800, Training Batch Accuracy:  71.9%
Global Step:  53900, Training Batch Accuracy:  73.4%
Global Step:  54000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  54100, Training Batch Accuracy:  81.2%
Global Step:  54200, Training Batch Accuracy:  78.1%
Global Step:  54300, Training Batch Accuracy:  60.9%
Global Step:  54400, Training Batch Accuracy:  75.0%
Global Step:  54500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  54600, Training Batch Accuracy:  75.0%
Global Step:  54700, Training Batch Accuracy:  71.9%
Global Step:  54800, Training Batch Accuracy:  84.4%
Global Step:  54900, Training Batch Accuracy:  79.7%
Global Step:  55000, Training Batch Accuracy:  60.9%
Saved checkpoint.
Global Step:  55100, Training Batch Accuracy:  70.3%
Global Step:  55200, Training Batch Accuracy:  71.9%
Global Step:  55300, Training Batch Accuracy:  75.0%
Global Step:  55400, Training Batch Accuracy:  79.7%
Global Step:  55500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  55600, Training Batch Accuracy:  71.9%
Global Step:  55700, Training Batch Accuracy:  85.9%
Global Step:  55800, Training Batch Accuracy:  68.8%
Global Step:  55900, Training Batch Accuracy:  76.6%
Global Step:  56000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  56100, Training Batch Accuracy:  75.0%
Global Step:  56200, Training Batch Accuracy:  78.1%
Global Step:  56300, Training Batch Accuracy:  75.0%
Global Step:  56400, Training Batch Accuracy:  70.3%
Global Step:  56500, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  56600, Training Batch Accuracy:  76.6%
Global Step:  56700, Training Batch Accuracy:  68.8%
Global Step:  56800, Training Batch Accuracy:  67.2%
Global Step:  56900, Training Batch Accuracy:  73.4%
Global Step:  57000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  57100, Training Batch Accuracy:  81.2%
Global Step:  57200, Training Batch Accuracy:  68.8%
Global Step:  57300, Training Batch Accuracy:  75.0%
Global Step:  57400, Training Batch Accuracy:  75.0%
Global Step:  57500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  57600, Training Batch Accuracy:  73.4%
Global Step:  57700, Training Batch Accuracy:  70.3%
Global Step:  57800, Training Batch Accuracy:  73.4%
Global Step:  57900, Training Batch Accuracy:  84.4%
Global Step:  58000, Training Batch Accuracy:  81.2%
Saved checkpoint.
Global Step:  58100, Training Batch Accuracy:  78.1%
Global Step:  58200, Training Batch Accuracy:  82.8%
Global Step:  58300, Training Batch Accuracy:  71.9%
Global Step:  58400, Training Batch Accuracy:  76.6%
Global Step:  58500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  58600, Training Batch Accuracy:  64.1%
Global Step:  58700, Training Batch Accuracy:  75.0%
Global Step:  58800, Training Batch Accuracy:  78.1%
Global Step:  58900, Training Batch Accuracy:  79.7%
Global Step:  59000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  59100, Training Batch Accuracy:  73.4%
Global Step:  59200, Training Batch Accuracy:  70.3%
Global Step:  59300, Training Batch Accuracy:  73.4%
Global Step:  59400, Training Batch Accuracy:  68.8%
Global Step:  59500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  59600, Training Batch Accuracy:  71.9%
Global Step:  59700, Training Batch Accuracy:  81.2%
Global Step:  59800, Training Batch Accuracy:  65.6%
Global Step:  59900, Training Batch Accuracy:  79.7%
Global Step:  60000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  60100, Training Batch Accuracy:  73.4%
Global Step:  60200, Training Batch Accuracy:  76.6%
Global Step:  60300, Training Batch Accuracy:  71.9%
Global Step:  60400, Training Batch Accuracy:  76.6%
Global Step:  60500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  60600, Training Batch Accuracy:  75.0%
Global Step:  60700, Training Batch Accuracy:  76.6%
Global Step:  60800, Training Batch Accuracy:  78.1%
Global Step:  60900, Training Batch Accuracy:  81.2%
Global Step:  61000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  61100, Training Batch Accuracy:  84.4%
Global Step:  61200, Training Batch Accuracy:  71.9%
Global Step:  61300, Training Batch Accuracy:  65.6%
Global Step:  61400, Training Batch Accuracy:  73.4%
Global Step:  61500, Training Batch Accuracy:  81.2%
Saved checkpoint.
Global Step:  61600, Training Batch Accuracy:  71.9%
Global Step:  61700, Training Batch Accuracy:  76.6%
Global Step:  61800, Training Batch Accuracy:  84.4%
Global Step:  61900, Training Batch Accuracy:  79.7%
Global Step:  62000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  62100, Training Batch Accuracy:  68.8%
Global Step:  62200, Training Batch Accuracy:  59.4%
Global Step:  62300, Training Batch Accuracy:  84.4%
Global Step:  62400, Training Batch Accuracy:  79.7%
Global Step:  62500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  62600, Training Batch Accuracy:  79.7%
Global Step:  62700, Training Batch Accuracy:  67.2%
Global Step:  62800, Training Batch Accuracy:  71.9%
Global Step:  62900, Training Batch Accuracy:  75.0%
Global Step:  63000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  63100, Training Batch Accuracy:  76.6%
Global Step:  63200, Training Batch Accuracy:  76.6%
Global Step:  63300, Training Batch Accuracy:  79.7%
Global Step:  63400, Training Batch Accuracy:  73.4%
Global Step:  63500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  63600, Training Batch Accuracy:  67.2%
Global Step:  63700, Training Batch Accuracy:  67.2%
Global Step:  63800, Training Batch Accuracy:  79.7%
Global Step:  63900, Training Batch Accuracy:  70.3%
Global Step:  64000, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:  64100, Training Batch Accuracy:  64.1%
Global Step:  64200, Training Batch Accuracy:  64.1%
Global Step:  64300, Training Batch Accuracy:  70.3%
Global Step:  64400, Training Batch Accuracy:  71.9%
Global Step:  64500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  64600, Training Batch Accuracy:  70.3%
Global Step:  64700, Training Batch Accuracy:  78.1%
Global Step:  64800, Training Batch Accuracy:  71.9%
Global Step:  64900, Training Batch Accuracy:  76.6%
Global Step:  65000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  65100, Training Batch Accuracy:  87.5%
Global Step:  65200, Training Batch Accuracy:  76.6%
Global Step:  65300, Training Batch Accuracy:  73.4%
Global Step:  65400, Training Batch Accuracy:  75.0%
Global Step:  65500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  65600, Training Batch Accuracy:  82.8%
Global Step:  65700, Training Batch Accuracy:  67.2%
Global Step:  65800, Training Batch Accuracy:  78.1%
Global Step:  65900, Training Batch Accuracy:  62.5%
Global Step:  66000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  66100, Training Batch Accuracy:  76.6%
Global Step:  66200, Training Batch Accuracy:  73.4%
Global Step:  66300, Training Batch Accuracy:  76.6%
Global Step:  66400, Training Batch Accuracy:  75.0%
Global Step:  66500, Training Batch Accuracy:  82.8%
Saved checkpoint.
Global Step:  66600, Training Batch Accuracy:  75.0%
Global Step:  66700, Training Batch Accuracy:  70.3%
Global Step:  66800, Training Batch Accuracy:  62.5%
Global Step:  66900, Training Batch Accuracy:  82.8%
Global Step:  67000, Training Batch Accuracy:  62.5%
Saved checkpoint.
Global Step:  67100, Training Batch Accuracy:  73.4%
Global Step:  67200, Training Batch Accuracy:  87.5%
Global Step:  67300, Training Batch Accuracy:  70.3%
Global Step:  67400, Training Batch Accuracy:  81.2%
Global Step:  67500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  67600, Training Batch Accuracy:  84.4%
Global Step:  67700, Training Batch Accuracy:  82.8%
Global Step:  67800, Training Batch Accuracy:  73.4%
Global Step:  67900, Training Batch Accuracy:  70.3%
Global Step:  68000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  68100, Training Batch Accuracy:  79.7%
Global Step:  68200, Training Batch Accuracy:  76.6%
Global Step:  68300, Training Batch Accuracy:  73.4%
Global Step:  68400, Training Batch Accuracy:  76.6%
Global Step:  68500, Training Batch Accuracy:  82.8%
Saved checkpoint.
Global Step:  68600, Training Batch Accuracy:  73.4%
Global Step:  68700, Training Batch Accuracy:  76.6%
Global Step:  68800, Training Batch Accuracy:  73.4%
Global Step:  68900, Training Batch Accuracy:  81.2%
Global Step:  69000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  69100, Training Batch Accuracy:  76.6%
Global Step:  69200, Training Batch Accuracy:  90.6%
Global Step:  69300, Training Batch Accuracy:  73.4%
Global Step:  69400, Training Batch Accuracy:  81.2%
Global Step:  69500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  69600, Training Batch Accuracy:  78.1%
Global Step:  69700, Training Batch Accuracy:  68.8%
Global Step:  69800, Training Batch Accuracy:  70.3%
Global Step:  69900, Training Batch Accuracy:  76.6%
Global Step:  70000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  70100, Training Batch Accuracy:  71.9%
Global Step:  70200, Training Batch Accuracy:  82.8%
Global Step:  70300, Training Batch Accuracy:  73.4%
Global Step:  70400, Training Batch Accuracy:  73.4%
Global Step:  70500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  70600, Training Batch Accuracy:  78.1%
Global Step:  70700, Training Batch Accuracy:  76.6%
Global Step:  70800, Training Batch Accuracy:  81.2%
Global Step:  70900, Training Batch Accuracy:  68.8%
Global Step:  71000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  71100, Training Batch Accuracy:  75.0%
Global Step:  71200, Training Batch Accuracy:  68.8%
Global Step:  71300, Training Batch Accuracy:  76.6%
Global Step:  71400, Training Batch Accuracy:  68.8%
Global Step:  71500, Training Batch Accuracy:  81.2%
Saved checkpoint.
Global Step:  71600, Training Batch Accuracy:  76.6%
Global Step:  71700, Training Batch Accuracy:  78.1%
Global Step:  71800, Training Batch Accuracy:  78.1%
Global Step:  71900, Training Batch Accuracy:  82.8%
Global Step:  72000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  72100, Training Batch Accuracy:  78.1%
Global Step:  72200, Training Batch Accuracy:  62.5%
Global Step:  72300, Training Batch Accuracy:  68.8%
Global Step:  72400, Training Batch Accuracy:  81.2%
Global Step:  72500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  72600, Training Batch Accuracy:  71.9%
Global Step:  72700, Training Batch Accuracy:  78.1%
Global Step:  72800, Training Batch Accuracy:  78.1%
Global Step:  72900, Training Batch Accuracy:  79.7%
Global Step:  73000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  73100, Training Batch Accuracy:  78.1%
Global Step:  73200, Training Batch Accuracy:  76.6%
Global Step:  73300, Training Batch Accuracy:  84.4%
Global Step:  73400, Training Batch Accuracy:  81.2%
Global Step:  73500, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  73600, Training Batch Accuracy:  71.9%
Global Step:  73700, Training Batch Accuracy:  70.3%
Global Step:  73800, Training Batch Accuracy:  70.3%
Global Step:  73900, Training Batch Accuracy:  68.8%
Global Step:  74000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  74100, Training Batch Accuracy:  68.8%
Global Step:  74200, Training Batch Accuracy:  76.6%
Global Step:  74300, Training Batch Accuracy:  81.2%
Global Step:  74400, Training Batch Accuracy:  75.0%
Global Step:  74500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  74600, Training Batch Accuracy:  76.6%
Global Step:  74700, Training Batch Accuracy:  73.4%
Global Step:  74800, Training Batch Accuracy:  79.7%
Global Step:  74900, Training Batch Accuracy:  75.0%
Global Step:  75000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  75100, Training Batch Accuracy:  75.0%
Global Step:  75200, Training Batch Accuracy:  79.7%
Global Step:  75300, Training Batch Accuracy:  68.8%
Global Step:  75400, Training Batch Accuracy:  71.9%
Global Step:  75500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  75600, Training Batch Accuracy:  76.6%
Global Step:  75700, Training Batch Accuracy:  78.1%
Global Step:  75800, Training Batch Accuracy:  78.1%
Global Step:  75900, Training Batch Accuracy:  78.1%
Global Step:  76000, Training Batch Accuracy:  81.2%
Saved checkpoint.
Global Step:  76100, Training Batch Accuracy:  79.7%
Global Step:  76200, Training Batch Accuracy:  73.4%
Global Step:  76300, Training Batch Accuracy:  67.2%
Global Step:  76400, Training Batch Accuracy:  71.9%
Global Step:  76500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  76600, Training Batch Accuracy:  78.1%
Global Step:  76700, Training Batch Accuracy:  82.8%
Global Step:  76800, Training Batch Accuracy:  65.6%
Global Step:  76900, Training Batch Accuracy:  84.4%
Global Step:  77000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  77100, Training Batch Accuracy:  73.4%
Global Step:  77200, Training Batch Accuracy:  82.8%
Global Step:  77300, Training Batch Accuracy:  79.7%
Global Step:  77400, Training Batch Accuracy:  78.1%
Global Step:  77500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  77600, Training Batch Accuracy:  78.1%
Global Step:  77700, Training Batch Accuracy:  68.8%
Global Step:  77800, Training Batch Accuracy:  78.1%
Global Step:  77900, Training Batch Accuracy:  79.7%
Global Step:  78000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  78100, Training Batch Accuracy:  79.7%
Global Step:  78200, Training Batch Accuracy:  70.3%
Global Step:  78300, Training Batch Accuracy:  71.9%
Global Step:  78400, Training Batch Accuracy:  85.9%
Global Step:  78500, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  78600, Training Batch Accuracy:  76.6%
Global Step:  78700, Training Batch Accuracy:  73.4%
Global Step:  78800, Training Batch Accuracy:  79.7%
Global Step:  78900, Training Batch Accuracy:  79.7%
Global Step:  79000, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  79100, Training Batch Accuracy:  82.8%
Global Step:  79200, Training Batch Accuracy:  65.6%
Global Step:  79300, Training Batch Accuracy:  82.8%
Global Step:  79400, Training Batch Accuracy:  81.2%
Global Step:  79500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  79600, Training Batch Accuracy:  70.3%
Global Step:  79700, Training Batch Accuracy:  75.0%
Global Step:  79800, Training Batch Accuracy:  75.0%
Global Step:  79900, Training Batch Accuracy:  71.9%
Global Step:  80000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  80100, Training Batch Accuracy:  73.4%
Global Step:  80200, Training Batch Accuracy:  78.1%
Global Step:  80300, Training Batch Accuracy:  76.6%
Global Step:  80400, Training Batch Accuracy:  82.8%
Global Step:  80500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  80600, Training Batch Accuracy:  81.2%
Global Step:  80700, Training Batch Accuracy:  73.4%
Global Step:  80800, Training Batch Accuracy:  76.6%
Global Step:  80900, Training Batch Accuracy:  79.7%
Global Step:  81000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  81100, Training Batch Accuracy:  81.2%
Global Step:  81200, Training Batch Accuracy:  81.2%
Global Step:  81300, Training Batch Accuracy:  67.2%
Global Step:  81400, Training Batch Accuracy:  71.9%
Global Step:  81500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  81600, Training Batch Accuracy:  81.2%
Global Step:  81700, Training Batch Accuracy:  78.1%
Global Step:  81800, Training Batch Accuracy:  68.8%
Global Step:  81900, Training Batch Accuracy:  70.3%
Global Step:  82000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  82100, Training Batch Accuracy:  73.4%
Global Step:  82200, Training Batch Accuracy:  75.0%
Global Step:  82300, Training Batch Accuracy:  75.0%
Global Step:  82400, Training Batch Accuracy:  78.1%
Global Step:  82500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  82600, Training Batch Accuracy:  79.7%
Global Step:  82700, Training Batch Accuracy:  76.6%
Global Step:  82800, Training Batch Accuracy:  79.7%
Global Step:  82900, Training Batch Accuracy:  75.0%
Global Step:  83000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  83100, Training Batch Accuracy:  84.4%
Global Step:  83200, Training Batch Accuracy:  81.2%
Global Step:  83300, Training Batch Accuracy:  79.7%
Global Step:  83400, Training Batch Accuracy:  71.9%
Global Step:  83500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  83600, Training Batch Accuracy:  70.3%
Global Step:  83700, Training Batch Accuracy:  76.6%
Global Step:  83800, Training Batch Accuracy:  79.7%
Global Step:  83900, Training Batch Accuracy:  75.0%
Global Step:  84000, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  84100, Training Batch Accuracy:  76.6%
Global Step:  84200, Training Batch Accuracy:  78.1%
Global Step:  84300, Training Batch Accuracy:  81.2%
Global Step:  84400, Training Batch Accuracy:  82.8%
Global Step:  84500, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  84600, Training Batch Accuracy:  81.2%
Global Step:  84700, Training Batch Accuracy:  75.0%
Global Step:  84800, Training Batch Accuracy:  70.3%
Global Step:  84900, Training Batch Accuracy:  73.4%
Global Step:  85000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  85100, Training Batch Accuracy:  85.9%
Global Step:  85200, Training Batch Accuracy:  89.1%
Global Step:  85300, Training Batch Accuracy:  76.6%
Global Step:  85400, Training Batch Accuracy:  76.6%
Global Step:  85500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  85600, Training Batch Accuracy:  78.1%
Global Step:  85700, Training Batch Accuracy:  79.7%
Global Step:  85800, Training Batch Accuracy:  78.1%
Global Step:  85900, Training Batch Accuracy:  82.8%
Global Step:  86000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  86100, Training Batch Accuracy:  78.1%
Global Step:  86200, Training Batch Accuracy:  82.8%
Global Step:  86300, Training Batch Accuracy:  81.2%
Global Step:  86400, Training Batch Accuracy:  76.6%
Global Step:  86500, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  86600, Training Batch Accuracy:  76.6%
Global Step:  86700, Training Batch Accuracy:  76.6%
Global Step:  86800, Training Batch Accuracy:  68.8%
Global Step:  86900, Training Batch Accuracy:  79.7%
Global Step:  87000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  87100, Training Batch Accuracy:  84.4%
Global Step:  87200, Training Batch Accuracy:  81.2%
Global Step:  87300, Training Batch Accuracy:  73.4%
Global Step:  87400, Training Batch Accuracy:  76.6%
Global Step:  87500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  87600, Training Batch Accuracy:  82.8%
Global Step:  87700, Training Batch Accuracy:  73.4%
Global Step:  87800, Training Batch Accuracy:  64.1%
Global Step:  87900, Training Batch Accuracy:  79.7%
Global Step:  88000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  88100, Training Batch Accuracy:  81.2%
Global Step:  88200, Training Batch Accuracy:  76.6%
Global Step:  88300, Training Batch Accuracy:  82.8%
Global Step:  88400, Training Batch Accuracy:  75.0%
Global Step:  88500, Training Batch Accuracy:  78.1%
Saved checkpoint.
Global Step:  88600, Training Batch Accuracy:  76.6%
Global Step:  88700, Training Batch Accuracy:  82.8%
Global Step:  88800, Training Batch Accuracy:  75.0%
Global Step:  88900, Training Batch Accuracy:  70.3%
Global Step:  89000, Training Batch Accuracy:  85.9%
Saved checkpoint.
Global Step:  89100, Training Batch Accuracy:  76.6%
Global Step:  89200, Training Batch Accuracy:  81.2%
Global Step:  89300, Training Batch Accuracy:  78.1%
Global Step:  89400, Training Batch Accuracy:  79.7%
Global Step:  89500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  89600, Training Batch Accuracy:  75.0%
Global Step:  89700, Training Batch Accuracy:  75.0%
Global Step:  89800, Training Batch Accuracy:  76.6%
Global Step:  89900, Training Batch Accuracy:  79.7%
Global Step:  90000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  90100, Training Batch Accuracy:  75.0%
Global Step:  90200, Training Batch Accuracy:  75.0%
Global Step:  90300, Training Batch Accuracy:  62.5%
Global Step:  90400, Training Batch Accuracy:  79.7%
Global Step:  90500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  90600, Training Batch Accuracy:  70.3%
Global Step:  90700, Training Batch Accuracy:  85.9%
Global Step:  90800, Training Batch Accuracy:  76.6%
Global Step:  90900, Training Batch Accuracy:  82.8%
Global Step:  91000, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  91100, Training Batch Accuracy:  71.9%
Global Step:  91200, Training Batch Accuracy:  79.7%
Global Step:  91300, Training Batch Accuracy:  73.4%
Global Step:  91400, Training Batch Accuracy:  81.2%
Global Step:  91500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  91600, Training Batch Accuracy:  78.1%
Global Step:  91700, Training Batch Accuracy:  84.4%
Global Step:  91800, Training Batch Accuracy:  79.7%
Global Step:  91900, Training Batch Accuracy:  79.7%
Global Step:  92000, Training Batch Accuracy:  68.8%
Saved checkpoint.
Global Step:  92100, Training Batch Accuracy:  81.2%
Global Step:  92200, Training Batch Accuracy:  67.2%
Global Step:  92300, Training Batch Accuracy:  82.8%
Global Step:  92400, Training Batch Accuracy:  78.1%
Global Step:  92500, Training Batch Accuracy:  87.5%
Saved checkpoint.
Global Step:  92600, Training Batch Accuracy:  82.8%
Global Step:  92700, Training Batch Accuracy:  75.0%
Global Step:  92800, Training Batch Accuracy:  78.1%
Global Step:  92900, Training Batch Accuracy:  81.2%
Global Step:  93000, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  93100, Training Batch Accuracy:  78.1%
Global Step:  93200, Training Batch Accuracy:  78.1%
Global Step:  93300, Training Batch Accuracy:  92.2%
Global Step:  93400, Training Batch Accuracy:  81.2%
Global Step:  93500, Training Batch Accuracy:  73.4%
Saved checkpoint.
Global Step:  93600, Training Batch Accuracy:  82.8%
Global Step:  93700, Training Batch Accuracy:  81.2%
Global Step:  93800, Training Batch Accuracy:  81.2%
Global Step:  93900, Training Batch Accuracy:  81.2%
Global Step:  94000, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  94100, Training Batch Accuracy:  82.8%
Global Step:  94200, Training Batch Accuracy:  73.4%
Global Step:  94300, Training Batch Accuracy:  79.7%
Global Step:  94400, Training Batch Accuracy:  78.1%
Global Step:  94500, Training Batch Accuracy:  75.0%
Saved checkpoint.
Global Step:  94600, Training Batch Accuracy:  79.7%
Global Step:  94700, Training Batch Accuracy:  73.4%
Global Step:  94800, Training Batch Accuracy:  78.1%
Global Step:  94900, Training Batch Accuracy:  75.0%
Global Step:  95000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  95100, Training Batch Accuracy:  73.4%
Global Step:  95200, Training Batch Accuracy:  79.7%
Global Step:  95300, Training Batch Accuracy:  75.0%
Global Step:  95400, Training Batch Accuracy:  76.6%
Global Step:  95500, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  95600, Training Batch Accuracy:  78.1%
Global Step:  95700, Training Batch Accuracy:  78.1%
Global Step:  95800, Training Batch Accuracy:  78.1%
Global Step:  95900, Training Batch Accuracy:  85.9%
Global Step:  96000, Training Batch Accuracy:  85.9%
Saved checkpoint.
Global Step:  96100, Training Batch Accuracy:  78.1%
Global Step:  96200, Training Batch Accuracy:  82.8%
Global Step:  96300, Training Batch Accuracy:  81.2%
Global Step:  96400, Training Batch Accuracy:  84.4%
Global Step:  96500, Training Batch Accuracy:  79.7%
Saved checkpoint.
Global Step:  96600, Training Batch Accuracy:  82.8%
Global Step:  96700, Training Batch Accuracy:  76.6%
Global Step:  96800, Training Batch Accuracy:  79.7%
Global Step:  96900, Training Batch Accuracy:  68.8%
Global Step:  97000, Training Batch Accuracy:  76.6%
Saved checkpoint.
Global Step:  97100, Training Batch Accuracy:  87.5%
Global Step:  97200, Training Batch Accuracy:  76.6%
Global Step:  97300, Training Batch Accuracy:  75.0%
Global Step:  97400, Training Batch Accuracy:  79.7%
Global Step:  97500, Training Batch Accuracy:  81.2%
Saved checkpoint.
Global Step:  97600, Training Batch Accuracy:  78.1%
Global Step:  97700, Training Batch Accuracy:  76.6%
Global Step:  97800, Training Batch Accuracy:  82.8%
Global Step:  97900, Training Batch Accuracy:  79.7%
Global Step:  98000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  98100, Training Batch Accuracy:  85.9%
Global Step:  98200, Training Batch Accuracy:  76.6%
Global Step:  98300, Training Batch Accuracy:  75.0%
Global Step:  98400, Training Batch Accuracy:  79.7%
Global Step:  98500, Training Batch Accuracy:  85.9%
Saved checkpoint.
Global Step:  98600, Training Batch Accuracy:  82.8%
Global Step:  98700, Training Batch Accuracy:  79.7%
Global Step:  98800, Training Batch Accuracy:  75.0%
Global Step:  98900, Training Batch Accuracy:  84.4%
Global Step:  99000, Training Batch Accuracy:  71.9%
Saved checkpoint.
Global Step:  99100, Training Batch Accuracy:  82.8%
Global Step:  99200, Training Batch Accuracy:  76.6%
Global Step:  99300, Training Batch Accuracy:  81.2%
Global Step:  99400, Training Batch Accuracy:  84.4%
Global Step:  99500, Training Batch Accuracy:  70.3%
Saved checkpoint.
Global Step:  99600, Training Batch Accuracy:  79.7%
Global Step:  99700, Training Batch Accuracy:  81.2%
Global Step:  99800, Training Batch Accuracy:  79.7%
Global Step:  99900, Training Batch Accuracy:  82.8%
Global Step:  99999, Training Batch Accuracy:  73.4%
Saved checkpoint.
Time usage: 0:55:25

Predict Test Class & Plot Results


In [97]:
# Split the data-set in batches of this size to limit RAM usage.
batch_size = 256

def predict_cls(images, labels, cls_true):
    # Number of images.
    num_images = len(images)

    # Allocate an array for the predicted classes which
    # will be calculated in batches and filled into this array.
    cls_pred = np.zeros(shape=num_images, dtype=np.int)

    # Now calculate the predicted classes for the batches.
    # We will just iterate through all the batches.
    # There might be a more clever and Pythonic way of doing this.

    # The starting index for the next batch is denoted i.
    i = 0

    while i < num_images:
        # The ending index for the next batch is denoted j.
        j = min(i + batch_size, num_images)

        # Create a feed-dict with the images and labels
        # between index i and j.
        feed_dict = {x: images[i:j, :],
                     y_true: labels[i:j, :],
                     is_training:True}

        # Calculate the predicted class using TensorFlow.
        cls_pred[i:j] = session.run(y_pred_cls, feed_dict=feed_dict)

        # Set the start-index for the next batch to the
        # end-index of the current batch.
        i = j

    # Create a boolean array whether each image is correctly classified.
    correct = (cls_true == cls_pred)

    return correct, cls_pred

In [98]:
def predict_cls_test():
    return predict_cls(images = images_test,
                       labels = labels_test,
                       cls_true = cls_test)

In [99]:
def classification_accuracy(correct):
    # When averaging a boolean array, False means 0 and True means 1.
    # So we are calculating: number of True / len(correct) which is
    # the same as the classification accuracy.
    
    # Return the classification accuracy
    # and the number of correct classifications.
    return correct.mean(), correct.sum()

In [119]:
# For all the images in the test-set,
# calculate the predicted classes and whether they are correct.
correct, cls_pred = predict_cls_test()
# Classification accuracy and the number of correct classifications.
acc, num_correct = classification_accuracy(correct)

# Number of images being classified.
num_images = len(correct)

# Print the accuracy.
msg = "Accuracy on Test-Set: {0:.1%} ({1} / {2})"
print(msg.format(acc, num_correct, num_images))


[ True  True  True ...,  True  True  True]
Accuracy on Test-Set: 49.4% (4940 / 10000)

In [101]:
def plot_example_errors(cls_pred, correct):
    # This function is called from print_test_accuracy() below.

    # cls_pred is an array of the predicted class-number for
    # all images in the test-set.

    # correct is a boolean array whether the predicted class
    # is equal to the true class for each image in the test-set.

    # Negate the boolean array.
    incorrect = (correct == False)
    
    # Get the images from the test-set that have been
    # incorrectly classified.
    images = images_test[incorrect]
    
    # Get the predicted classes for those images.
    cls_pred = cls_pred[incorrect]

    # Get the true classes for those images.
    cls_true = cls_test[incorrect]
    
    # Plot the first 9 images.
    h.plot_images(images=images[0:9],
                cls_true=cls_true[0:9],
                cls_pred=cls_pred[0:9])

In [102]:
plot_example_errors(cls_pred=cls_pred, correct=correct)



In [103]:
Image('image/confusion_matrix.png')


Out[103]:

In [104]:
def plot_confusion_matrix(cls_pred):
    # This is called from print_test_accuracy() below.

    # cls_pred is an array of the predicted class-number for
    # all images in the test-set.

    # Get the confusion matrix using sklearn.
    cm = confusion_matrix(y_true=cls_test,  # True class for test-set.
                          y_pred=cls_pred)  # Predicted class.

    # Print the confusion matrix as text.
    for i in range(num_classes):
        # Append the class-name to each confusion_matrixline.
        class_name = "({}) {}".format(i, class_names[i])
        print(cm[i, :], class_name)

    # Print the class-numbers for easy reference.
    class_numbers = [" ({0})".format(i) for i in range(num_classes)]
    print("".join(class_numbers))

In [105]:
print("Confusion Matrix:")
plot_confusion_matrix(cls_pred=cls_pred)


Confusion Matrix:
[530  42  32  17  14  11  10  15 261  68] (0) airplane
[ 43 606   3  11  14   5  11   8 153 146] (1) automobile
[133  32 196  91 146 115  78  86  71  52] (2) bird
[ 41  26  43 254  49 237  96  73  81 100] (3) cat
[ 79  43  69  66 261  62 101 212  39  68] (4) deer
[ 28  32  44 173  53 428  48  93  40  61] (5) dog
[ 16  30  31  87  78  36 609  17  38  58] (6) frog
[ 29  20  14  50  54  99  11 579  15 129] (7) horse
[ 88  36   5  11   3   6   4   8 767  72] (8) ship
[ 43 119   3  16   7   3  11  37 129 632] (9) truck
 (0) (1) (2) (3) (4) (5) (6) (7) (8) (9)

Plot Convolution Weight


In [106]:
for op in graph.get_operations(): print(op.name)


x
y_true
ArgMax/dimension
ArgMax
is_training
network_var/conv1w/Initializer/truncated_normal/shape
network_var/conv1w/Initializer/truncated_normal/mean
network_var/conv1w/Initializer/truncated_normal/stddev
network_var/conv1w/Initializer/truncated_normal/TruncatedNormal
network_var/conv1w/Initializer/truncated_normal/mul
network_var/conv1w/Initializer/truncated_normal
network_var/conv1w
network_var/conv1w/Assign
network_var/conv1w/read
network_var/conv1b/Initializer/truncated_normal/shape
network_var/conv1b/Initializer/truncated_normal/mean
network_var/conv1b/Initializer/truncated_normal/stddev
network_var/conv1b/Initializer/truncated_normal/TruncatedNormal
network_var/conv1b/Initializer/truncated_normal/mul
network_var/conv1b/Initializer/truncated_normal
network_var/conv1b
network_var/conv1b/Assign
network_var/conv1b/read
network_var/conv2w/Initializer/truncated_normal/shape
network_var/conv2w/Initializer/truncated_normal/mean
network_var/conv2w/Initializer/truncated_normal/stddev
network_var/conv2w/Initializer/truncated_normal/TruncatedNormal
network_var/conv2w/Initializer/truncated_normal/mul
network_var/conv2w/Initializer/truncated_normal
network_var/conv2w
network_var/conv2w/Assign
network_var/conv2w/read
network_var/conv2b/Initializer/truncated_normal/shape
network_var/conv2b/Initializer/truncated_normal/mean
network_var/conv2b/Initializer/truncated_normal/stddev
network_var/conv2b/Initializer/truncated_normal/TruncatedNormal
network_var/conv2b/Initializer/truncated_normal/mul
network_var/conv2b/Initializer/truncated_normal
network_var/conv2b
network_var/conv2b/Assign
network_var/conv2b/read
network_var/fc3w/Initializer/truncated_normal/shape
network_var/fc3w/Initializer/truncated_normal/mean
network_var/fc3w/Initializer/truncated_normal/stddev
network_var/fc3w/Initializer/truncated_normal/TruncatedNormal
network_var/fc3w/Initializer/truncated_normal/mul
network_var/fc3w/Initializer/truncated_normal
network_var/fc3w
network_var/fc3w/Assign
network_var/fc3w/read
network_var/fc3b/Initializer/truncated_normal/shape
network_var/fc3b/Initializer/truncated_normal/mean
network_var/fc3b/Initializer/truncated_normal/stddev
network_var/fc3b/Initializer/truncated_normal/TruncatedNormal
network_var/fc3b/Initializer/truncated_normal/mul
network_var/fc3b/Initializer/truncated_normal
network_var/fc3b
network_var/fc3b/Assign
network_var/fc3b/read
network_var/fc4w/Initializer/truncated_normal/shape
network_var/fc4w/Initializer/truncated_normal/mean
network_var/fc4w/Initializer/truncated_normal/stddev
network_var/fc4w/Initializer/truncated_normal/TruncatedNormal
network_var/fc4w/Initializer/truncated_normal/mul
network_var/fc4w/Initializer/truncated_normal
network_var/fc4w
network_var/fc4w/Assign
network_var/fc4w/read
network_var/fc4b/Initializer/truncated_normal/shape
network_var/fc4b/Initializer/truncated_normal/mean
network_var/fc4b/Initializer/truncated_normal/stddev
network_var/fc4b/Initializer/truncated_normal/TruncatedNormal
network_var/fc4b/Initializer/truncated_normal/mul
network_var/fc4b/Initializer/truncated_normal
network_var/fc4b
network_var/fc4b/Assign
network_var/fc4b/read
network_var/fc5w/Initializer/truncated_normal/shape
network_var/fc5w/Initializer/truncated_normal/mean
network_var/fc5w/Initializer/truncated_normal/stddev
network_var/fc5w/Initializer/truncated_normal/TruncatedNormal
network_var/fc5w/Initializer/truncated_normal/mul
network_var/fc5w/Initializer/truncated_normal
network_var/fc5w
network_var/fc5w/Assign
network_var/fc5w/read
network_var/fc5b/Initializer/truncated_normal/shape
network_var/fc5b/Initializer/truncated_normal/mean
network_var/fc5b/Initializer/truncated_normal/stddev
network_var/fc5b/Initializer/truncated_normal/TruncatedNormal
network_var/fc5b/Initializer/truncated_normal/mul
network_var/fc5b/Initializer/truncated_normal
network_var/fc5b
network_var/fc5b/Assign
network_var/fc5b/read
network_test/map/Shape
network_test/map/strided_slice/stack
network_test/map/strided_slice/stack_1
network_test/map/strided_slice/stack_2
network_test/map/strided_slice
network_test/map/TensorArray
network_test/map/TensorArrayUnstack/Shape
network_test/map/TensorArrayUnstack/strided_slice/stack
network_test/map/TensorArrayUnstack/strided_slice/stack_1
network_test/map/TensorArrayUnstack/strided_slice/stack_2
network_test/map/TensorArrayUnstack/strided_slice
network_test/map/TensorArrayUnstack/range/start
network_test/map/TensorArrayUnstack/range/delta
network_test/map/TensorArrayUnstack/range
network_test/map/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3
network_test/map/Const
network_test/map/TensorArray_1
network_test/map/while/Enter
network_test/map/while/Enter_1
network_test/map/while/Merge
network_test/map/while/Merge_1
network_test/map/while/Less/Enter
network_test/map/while/Less
network_test/map/while/LoopCond
network_test/map/while/Switch
network_test/map/while/Switch_1
network_test/map/while/Identity
network_test/map/while/Identity_1
network_test/map/while/TensorArrayReadV3/Enter
network_test/map/while/TensorArrayReadV3/Enter_1
network_test/map/while/TensorArrayReadV3
network_test/map/while/cond/Switch/Enter
network_test/map/while/cond/Switch
network_test/map/while/cond/switch_t
network_test/map/while/cond/switch_f
network_test/map/while/cond/pred_id
network_test/map/while/cond/random_crop/size
network_test/map/while/cond/random_crop/Shape
network_test/map/while/cond/random_crop/GreaterEqual
network_test/map/while/cond/random_crop/Const
network_test/map/while/cond/random_crop/All
network_test/map/while/cond/random_crop/Assert/Const
network_test/map/while/cond/random_crop/Assert/Assert/data_0
network_test/map/while/cond/random_crop/Assert/Assert
network_test/map/while/cond/random_crop/control_dependency
network_test/map/while/cond/random_crop/sub
network_test/map/while/cond/random_crop/add/y
network_test/map/while/cond/random_crop/add
network_test/map/while/cond/random_crop/Shape_1
network_test/map/while/cond/random_crop/random_uniform/min
network_test/map/while/cond/random_crop/random_uniform/max
network_test/map/while/cond/random_crop/random_uniform
network_test/map/while/cond/random_crop/mod
network_test/map/while/cond/random_crop/Switch
network_test/map/while/cond/random_crop
network_test/map/while/cond/random_uniform/shape
network_test/map/while/cond/random_uniform/min
network_test/map/while/cond/random_uniform/max
network_test/map/while/cond/random_uniform/RandomUniform
network_test/map/while/cond/random_uniform/sub
network_test/map/while/cond/random_uniform/mul
network_test/map/while/cond/random_uniform
network_test/map/while/cond/Less/y
network_test/map/while/cond/Less
network_test/map/while/cond/Select/t
network_test/map/while/cond/Select/e
network_test/map/while/cond/Select
network_test/map/while/cond/strided_slice/stack
network_test/map/while/cond/strided_slice/stack_1
network_test/map/while/cond/strided_slice/stack_2/0
network_test/map/while/cond/strided_slice/stack_2/2
network_test/map/while/cond/strided_slice/stack_2
network_test/map/while/cond/strided_slice
network_test/map/while/cond/random_uniform_1/shape
network_test/map/while/cond/random_uniform_1/min
network_test/map/while/cond/random_uniform_1/max
network_test/map/while/cond/random_uniform_1/RandomUniform
network_test/map/while/cond/random_uniform_1/sub
network_test/map/while/cond/random_uniform_1/mul
network_test/map/while/cond/random_uniform_1
network_test/map/while/cond/adjust_hue/Identity
network_test/map/while/cond/adjust_hue/RGBToHSV
network_test/map/while/cond/adjust_hue/Slice/begin
network_test/map/while/cond/adjust_hue/Slice/size
network_test/map/while/cond/adjust_hue/Slice
network_test/map/while/cond/adjust_hue/Slice_1/begin
network_test/map/while/cond/adjust_hue/Slice_1/size
network_test/map/while/cond/adjust_hue/Slice_1
network_test/map/while/cond/adjust_hue/Slice_2/begin
network_test/map/while/cond/adjust_hue/Slice_2/size
network_test/map/while/cond/adjust_hue/Slice_2
network_test/map/while/cond/adjust_hue/add/y
network_test/map/while/cond/adjust_hue/add
network_test/map/while/cond/adjust_hue/add_1
network_test/map/while/cond/adjust_hue/FloorMod/y
network_test/map/while/cond/adjust_hue/FloorMod
network_test/map/while/cond/adjust_hue/concat/axis
network_test/map/while/cond/adjust_hue/concat
network_test/map/while/cond/adjust_hue/HSVToRGB
network_test/map/while/cond/adjust_hue/Identity_1
network_test/map/while/cond/random_uniform_2/shape
network_test/map/while/cond/random_uniform_2/min
network_test/map/while/cond/random_uniform_2/max
network_test/map/while/cond/random_uniform_2/RandomUniform
network_test/map/while/cond/random_uniform_2/sub
network_test/map/while/cond/random_uniform_2/mul
network_test/map/while/cond/random_uniform_2
network_test/map/while/cond/adjust_contrast/Identity
network_test/map/while/cond/adjust_contrast
network_test/map/while/cond/adjust_contrast/Identity_1
network_test/map/while/cond/random_uniform_3/shape
network_test/map/while/cond/random_uniform_3/min
network_test/map/while/cond/random_uniform_3/max
network_test/map/while/cond/random_uniform_3/RandomUniform
network_test/map/while/cond/random_uniform_3/sub
network_test/map/while/cond/random_uniform_3/mul
network_test/map/while/cond/random_uniform_3
network_test/map/while/cond/adjust_brightness/Identity
network_test/map/while/cond/adjust_brightness
network_test/map/while/cond/adjust_brightness/Identity_1
network_test/map/while/cond/random_uniform_4/shape
network_test/map/while/cond/random_uniform_4/min
network_test/map/while/cond/random_uniform_4/max
network_test/map/while/cond/random_uniform_4/RandomUniform
network_test/map/while/cond/random_uniform_4/sub
network_test/map/while/cond/random_uniform_4/mul
network_test/map/while/cond/random_uniform_4
network_test/map/while/cond/adjust_saturation/Identity
network_test/map/while/cond/adjust_saturation/RGBToHSV
network_test/map/while/cond/adjust_saturation/Slice/begin
network_test/map/while/cond/adjust_saturation/Slice/size
network_test/map/while/cond/adjust_saturation/Slice
network_test/map/while/cond/adjust_saturation/Slice_1/begin
network_test/map/while/cond/adjust_saturation/Slice_1/size
network_test/map/while/cond/adjust_saturation/Slice_1
network_test/map/while/cond/adjust_saturation/Slice_2/begin
network_test/map/while/cond/adjust_saturation/Slice_2/size
network_test/map/while/cond/adjust_saturation/Slice_2
network_test/map/while/cond/adjust_saturation/mul
network_test/map/while/cond/adjust_saturation/clip_by_value/Minimum/y
network_test/map/while/cond/adjust_saturation/clip_by_value/Minimum
network_test/map/while/cond/adjust_saturation/clip_by_value/y
network_test/map/while/cond/adjust_saturation/clip_by_value
network_test/map/while/cond/adjust_saturation/concat/axis
network_test/map/while/cond/adjust_saturation/concat
network_test/map/while/cond/adjust_saturation/HSVToRGB
network_test/map/while/cond/adjust_saturation/Identity_1
network_test/map/while/cond/Minimum/y
network_test/map/while/cond/Minimum
network_test/map/while/cond/Maximum/y
network_test/map/while/cond/Maximum
network_test/map/while/cond/control_dependency/Switch
network_test/map/while/cond/control_dependency
network_test/map/while/cond/control_dependency_1
network_test/map/while/cond/stack
network_test/map/while/cond/stack_1
network_test/map/while/cond/Slice
network_test/map/while/cond/control_dependency_2
network_test/map/while/cond/stack_2
network_test/map/while/cond/Reshape/shape
network_test/map/while/cond/Reshape
network_test/map/while/cond/Pad
network_test/map/while/cond/control_dependency_3
network_test/map/while/cond/Merge
network_test/map/while/TensorArrayWrite/TensorArrayWriteV3/Enter
network_test/map/while/TensorArrayWrite/TensorArrayWriteV3
network_test/map/while/add/y
network_test/map/while/add
network_test/map/while/NextIteration
network_test/map/while/NextIteration_1
network_test/map/while/Exit
network_test/map/while/Exit_1
network_test/map/TensorArrayStack/TensorArraySizeV3
network_test/map/TensorArrayStack/range/start
network_test/map/TensorArrayStack/range/delta
network_test/map/TensorArrayStack/range
network_test/map/TensorArrayStack/TensorArrayGatherV3
network_test/conv1
network_test/conv1_1
network/map/Shape
network/map/strided_slice/stack
network/map/strided_slice/stack_1
network/map/strided_slice/stack_2
network/map/strided_slice
network/map/TensorArray
network/map/TensorArrayUnstack/Shape
network/map/TensorArrayUnstack/strided_slice/stack
network/map/TensorArrayUnstack/strided_slice/stack_1
network/map/TensorArrayUnstack/strided_slice/stack_2
network/map/TensorArrayUnstack/strided_slice
network/map/TensorArrayUnstack/range/start
network/map/TensorArrayUnstack/range/delta
network/map/TensorArrayUnstack/range
network/map/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3
network/map/Const
network/map/TensorArray_1
network/map/while/Enter
network/map/while/Enter_1
network/map/while/Merge
network/map/while/Merge_1
network/map/while/Less/Enter
network/map/while/Less
network/map/while/LoopCond
network/map/while/Switch
network/map/while/Switch_1
network/map/while/Identity
network/map/while/Identity_1
network/map/while/TensorArrayReadV3/Enter
network/map/while/TensorArrayReadV3/Enter_1
network/map/while/TensorArrayReadV3
network/map/while/cond/Switch/Enter
network/map/while/cond/Switch
network/map/while/cond/switch_t
network/map/while/cond/switch_f
network/map/while/cond/pred_id
network/map/while/cond/random_crop/size
network/map/while/cond/random_crop/Shape
network/map/while/cond/random_crop/GreaterEqual
network/map/while/cond/random_crop/Const
network/map/while/cond/random_crop/All
network/map/while/cond/random_crop/Assert/Const
network/map/while/cond/random_crop/Assert/Assert/data_0
network/map/while/cond/random_crop/Assert/Assert
network/map/while/cond/random_crop/control_dependency
network/map/while/cond/random_crop/sub
network/map/while/cond/random_crop/add/y
network/map/while/cond/random_crop/add
network/map/while/cond/random_crop/Shape_1
network/map/while/cond/random_crop/random_uniform/min
network/map/while/cond/random_crop/random_uniform/max
network/map/while/cond/random_crop/random_uniform
network/map/while/cond/random_crop/mod
network/map/while/cond/random_crop/Switch
network/map/while/cond/random_crop
network/map/while/cond/random_uniform/shape
network/map/while/cond/random_uniform/min
network/map/while/cond/random_uniform/max
network/map/while/cond/random_uniform/RandomUniform
network/map/while/cond/random_uniform/sub
network/map/while/cond/random_uniform/mul
network/map/while/cond/random_uniform
network/map/while/cond/Less/y
network/map/while/cond/Less
network/map/while/cond/Select/t
network/map/while/cond/Select/e
network/map/while/cond/Select
network/map/while/cond/strided_slice/stack
network/map/while/cond/strided_slice/stack_1
network/map/while/cond/strided_slice/stack_2/0
network/map/while/cond/strided_slice/stack_2/2
network/map/while/cond/strided_slice/stack_2
network/map/while/cond/strided_slice
network/map/while/cond/random_uniform_1/shape
network/map/while/cond/random_uniform_1/min
network/map/while/cond/random_uniform_1/max
network/map/while/cond/random_uniform_1/RandomUniform
network/map/while/cond/random_uniform_1/sub
network/map/while/cond/random_uniform_1/mul
network/map/while/cond/random_uniform_1
network/map/while/cond/adjust_hue/Identity
network/map/while/cond/adjust_hue/RGBToHSV
network/map/while/cond/adjust_hue/Slice/begin
network/map/while/cond/adjust_hue/Slice/size
network/map/while/cond/adjust_hue/Slice
network/map/while/cond/adjust_hue/Slice_1/begin
network/map/while/cond/adjust_hue/Slice_1/size
network/map/while/cond/adjust_hue/Slice_1
network/map/while/cond/adjust_hue/Slice_2/begin
network/map/while/cond/adjust_hue/Slice_2/size
network/map/while/cond/adjust_hue/Slice_2
network/map/while/cond/adjust_hue/add/y
network/map/while/cond/adjust_hue/add
network/map/while/cond/adjust_hue/add_1
network/map/while/cond/adjust_hue/FloorMod/y
network/map/while/cond/adjust_hue/FloorMod
network/map/while/cond/adjust_hue/concat/axis
network/map/while/cond/adjust_hue/concat
network/map/while/cond/adjust_hue/HSVToRGB
network/map/while/cond/adjust_hue/Identity_1
network/map/while/cond/random_uniform_2/shape
network/map/while/cond/random_uniform_2/min
network/map/while/cond/random_uniform_2/max
network/map/while/cond/random_uniform_2/RandomUniform
network/map/while/cond/random_uniform_2/sub
network/map/while/cond/random_uniform_2/mul
network/map/while/cond/random_uniform_2
network/map/while/cond/adjust_contrast/Identity
network/map/while/cond/adjust_contrast
network/map/while/cond/adjust_contrast/Identity_1
network/map/while/cond/random_uniform_3/shape
network/map/while/cond/random_uniform_3/min
network/map/while/cond/random_uniform_3/max
network/map/while/cond/random_uniform_3/RandomUniform
network/map/while/cond/random_uniform_3/sub
network/map/while/cond/random_uniform_3/mul
network/map/while/cond/random_uniform_3
network/map/while/cond/adjust_brightness/Identity
network/map/while/cond/adjust_brightness
network/map/while/cond/adjust_brightness/Identity_1
network/map/while/cond/random_uniform_4/shape
network/map/while/cond/random_uniform_4/min
network/map/while/cond/random_uniform_4/max
network/map/while/cond/random_uniform_4/RandomUniform
network/map/while/cond/random_uniform_4/sub
network/map/while/cond/random_uniform_4/mul
network/map/while/cond/random_uniform_4
network/map/while/cond/adjust_saturation/Identity
network/map/while/cond/adjust_saturation/RGBToHSV
network/map/while/cond/adjust_saturation/Slice/begin
network/map/while/cond/adjust_saturation/Slice/size
network/map/while/cond/adjust_saturation/Slice
network/map/while/cond/adjust_saturation/Slice_1/begin
network/map/while/cond/adjust_saturation/Slice_1/size
network/map/while/cond/adjust_saturation/Slice_1
network/map/while/cond/adjust_saturation/Slice_2/begin
network/map/while/cond/adjust_saturation/Slice_2/size
network/map/while/cond/adjust_saturation/Slice_2
network/map/while/cond/adjust_saturation/mul
network/map/while/cond/adjust_saturation/clip_by_value/Minimum/y
network/map/while/cond/adjust_saturation/clip_by_value/Minimum
network/map/while/cond/adjust_saturation/clip_by_value/y
network/map/while/cond/adjust_saturation/clip_by_value
network/map/while/cond/adjust_saturation/concat/axis
network/map/while/cond/adjust_saturation/concat
network/map/while/cond/adjust_saturation/HSVToRGB
network/map/while/cond/adjust_saturation/Identity_1
network/map/while/cond/Minimum/y
network/map/while/cond/Minimum
network/map/while/cond/Maximum/y
network/map/while/cond/Maximum
network/map/while/cond/control_dependency/Switch
network/map/while/cond/control_dependency
network/map/while/cond/control_dependency_1
network/map/while/cond/stack
network/map/while/cond/stack_1
network/map/while/cond/Slice
network/map/while/cond/control_dependency_2
network/map/while/cond/stack_2
network/map/while/cond/Reshape/shape
network/map/while/cond/Reshape
network/map/while/cond/Pad
network/map/while/cond/control_dependency_3
network/map/while/cond/Merge
network/map/while/TensorArrayWrite/TensorArrayWriteV3/Enter
network/map/while/TensorArrayWrite/TensorArrayWriteV3
network/map/while/add/y
network/map/while/add
network/map/while/NextIteration
network/map/while/NextIteration_1
network/map/while/Exit
network/map/while/Exit_1
network/map/TensorArrayStack/TensorArraySizeV3
network/map/TensorArrayStack/range/start
network/map/TensorArrayStack/range/delta
network/map/TensorArrayStack/range
network/map/TensorArrayStack/TensorArrayGatherV3
network/conv1
network/add_bias1
network/relu_1
network/MaxPool
network/conv2
network/add_bias2
network/relu_2
network/MaxPool_1
network/Reshape/shape
network/Reshape
network/MatMul
network/Add
network/Relu
network/MatMul_1
network/Add_1
network/Relu_1
network/MatMul_2
network/Add_2
Rank
Shape
Rank_1
Shape_1
Sub/y
Sub
Slice/begin
Slice/size
Slice
concat/values_0
concat/axis
concat
Reshape
Rank_2
Shape_2
Sub_1/y
Sub_1
Slice_1/begin
Slice_1/size
Slice_1
concat_1/values_0
concat_1/axis
concat_1
Reshape_1
SoftmaxCrossEntropyWithLogits
Sub_2/y
Sub_2
Slice_2/begin
Slice_2/size
Slice_2
Reshape_2
Const
loss
gradients/Shape
gradients/Const
gradients/Fill
gradients/loss_grad/Reshape/shape
gradients/loss_grad/Reshape
gradients/loss_grad/Shape
gradients/loss_grad/Tile
gradients/loss_grad/Shape_1
gradients/loss_grad/Shape_2
gradients/loss_grad/Const
gradients/loss_grad/Prod
gradients/loss_grad/Const_1
gradients/loss_grad/Prod_1
gradients/loss_grad/Maximum/y
gradients/loss_grad/Maximum
gradients/loss_grad/floordiv
gradients/loss_grad/Cast
gradients/loss_grad/truediv
gradients/Reshape_2_grad/Shape
gradients/Reshape_2_grad/Reshape
gradients/zeros_like
gradients/SoftmaxCrossEntropyWithLogits_grad/PreventGradient
gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim
gradients/SoftmaxCrossEntropyWithLogits_grad/ExpandDims
gradients/SoftmaxCrossEntropyWithLogits_grad/mul
gradients/Reshape_grad/Shape
gradients/Reshape_grad/Reshape
gradients/network/Add_2_grad/Shape
gradients/network/Add_2_grad/Shape_1
gradients/network/Add_2_grad/BroadcastGradientArgs
gradients/network/Add_2_grad/Sum
gradients/network/Add_2_grad/Reshape
gradients/network/Add_2_grad/Sum_1
gradients/network/Add_2_grad/Reshape_1
gradients/network/Add_2_grad/tuple/group_deps
gradients/network/Add_2_grad/tuple/control_dependency
gradients/network/Add_2_grad/tuple/control_dependency_1
gradients/network/MatMul_2_grad/MatMul
gradients/network/MatMul_2_grad/MatMul_1
gradients/network/MatMul_2_grad/tuple/group_deps
gradients/network/MatMul_2_grad/tuple/control_dependency
gradients/network/MatMul_2_grad/tuple/control_dependency_1
gradients/network/Relu_1_grad/ReluGrad
gradients/network/Add_1_grad/Shape
gradients/network/Add_1_grad/Shape_1
gradients/network/Add_1_grad/BroadcastGradientArgs
gradients/network/Add_1_grad/Sum
gradients/network/Add_1_grad/Reshape
gradients/network/Add_1_grad/Sum_1
gradients/network/Add_1_grad/Reshape_1
gradients/network/Add_1_grad/tuple/group_deps
gradients/network/Add_1_grad/tuple/control_dependency
gradients/network/Add_1_grad/tuple/control_dependency_1
gradients/network/MatMul_1_grad/MatMul
gradients/network/MatMul_1_grad/MatMul_1
gradients/network/MatMul_1_grad/tuple/group_deps
gradients/network/MatMul_1_grad/tuple/control_dependency
gradients/network/MatMul_1_grad/tuple/control_dependency_1
gradients/network/Relu_grad/ReluGrad
gradients/network/Add_grad/Shape
gradients/network/Add_grad/Shape_1
gradients/network/Add_grad/BroadcastGradientArgs
gradients/network/Add_grad/Sum
gradients/network/Add_grad/Reshape
gradients/network/Add_grad/Sum_1
gradients/network/Add_grad/Reshape_1
gradients/network/Add_grad/tuple/group_deps
gradients/network/Add_grad/tuple/control_dependency
gradients/network/Add_grad/tuple/control_dependency_1
gradients/network/MatMul_grad/MatMul
gradients/network/MatMul_grad/MatMul_1
gradients/network/MatMul_grad/tuple/group_deps
gradients/network/MatMul_grad/tuple/control_dependency
gradients/network/MatMul_grad/tuple/control_dependency_1
gradients/network/Reshape_grad/Shape
gradients/network/Reshape_grad/Reshape
gradients/network/MaxPool_1_grad/MaxPoolGrad
gradients/network/relu_2_grad/ReluGrad
gradients/network/add_bias2_grad/Shape
gradients/network/add_bias2_grad/Shape_1
gradients/network/add_bias2_grad/BroadcastGradientArgs
gradients/network/add_bias2_grad/Sum
gradients/network/add_bias2_grad/Reshape
gradients/network/add_bias2_grad/Sum_1
gradients/network/add_bias2_grad/Reshape_1
gradients/network/add_bias2_grad/tuple/group_deps
gradients/network/add_bias2_grad/tuple/control_dependency
gradients/network/add_bias2_grad/tuple/control_dependency_1
gradients/network/conv2_grad/Shape
gradients/network/conv2_grad/Conv2DBackpropInput
gradients/network/conv2_grad/Shape_1
gradients/network/conv2_grad/Conv2DBackpropFilter
gradients/network/conv2_grad/tuple/group_deps
gradients/network/conv2_grad/tuple/control_dependency
gradients/network/conv2_grad/tuple/control_dependency_1
gradients/network/MaxPool_grad/MaxPoolGrad
gradients/network/relu_1_grad/ReluGrad
gradients/network/add_bias1_grad/Shape
gradients/network/add_bias1_grad/Shape_1
gradients/network/add_bias1_grad/BroadcastGradientArgs
gradients/network/add_bias1_grad/Sum
gradients/network/add_bias1_grad/Reshape
gradients/network/add_bias1_grad/Sum_1
gradients/network/add_bias1_grad/Reshape_1
gradients/network/add_bias1_grad/tuple/group_deps
gradients/network/add_bias1_grad/tuple/control_dependency
gradients/network/add_bias1_grad/tuple/control_dependency_1
gradients/network/conv1_grad/Shape
gradients/network/conv1_grad/Conv2DBackpropInput
gradients/network/conv1_grad/Shape_1
gradients/network/conv1_grad/Conv2DBackpropFilter
gradients/network/conv1_grad/tuple/group_deps
gradients/network/conv1_grad/tuple/control_dependency
gradients/network/conv1_grad/tuple/control_dependency_1
beta1_power/initial_value
beta1_power
beta1_power/Assign
beta1_power/read
beta2_power/initial_value
beta2_power
beta2_power/Assign
beta2_power/read
zeros
network_var/conv1w/Adam
network_var/conv1w/Adam/Assign
network_var/conv1w/Adam/read
zeros_1
network_var/conv1w/Adam_1
network_var/conv1w/Adam_1/Assign
network_var/conv1w/Adam_1/read
zeros_2
network_var/conv1b/Adam
network_var/conv1b/Adam/Assign
network_var/conv1b/Adam/read
zeros_3
network_var/conv1b/Adam_1
network_var/conv1b/Adam_1/Assign
network_var/conv1b/Adam_1/read
zeros_4
network_var/conv2w/Adam
network_var/conv2w/Adam/Assign
network_var/conv2w/Adam/read
zeros_5
network_var/conv2w/Adam_1
network_var/conv2w/Adam_1/Assign
network_var/conv2w/Adam_1/read
zeros_6
network_var/conv2b/Adam
network_var/conv2b/Adam/Assign
network_var/conv2b/Adam/read
zeros_7
network_var/conv2b/Adam_1
network_var/conv2b/Adam_1/Assign
network_var/conv2b/Adam_1/read
zeros_8
network_var/fc3w/Adam
network_var/fc3w/Adam/Assign
network_var/fc3w/Adam/read
zeros_9
network_var/fc3w/Adam_1
network_var/fc3w/Adam_1/Assign
network_var/fc3w/Adam_1/read
zeros_10
network_var/fc3b/Adam
network_var/fc3b/Adam/Assign
network_var/fc3b/Adam/read
zeros_11
network_var/fc3b/Adam_1
network_var/fc3b/Adam_1/Assign
network_var/fc3b/Adam_1/read
zeros_12
network_var/fc4w/Adam
network_var/fc4w/Adam/Assign
network_var/fc4w/Adam/read
zeros_13
network_var/fc4w/Adam_1
network_var/fc4w/Adam_1/Assign
network_var/fc4w/Adam_1/read
zeros_14
network_var/fc4b/Adam
network_var/fc4b/Adam/Assign
network_var/fc4b/Adam/read
zeros_15
network_var/fc4b/Adam_1
network_var/fc4b/Adam_1/Assign
network_var/fc4b/Adam_1/read
zeros_16
network_var/fc5w/Adam
network_var/fc5w/Adam/Assign
network_var/fc5w/Adam/read
zeros_17
network_var/fc5w/Adam_1
network_var/fc5w/Adam_1/Assign
network_var/fc5w/Adam_1/read
zeros_18
network_var/fc5b/Adam
network_var/fc5b/Adam/Assign
network_var/fc5b/Adam/read
zeros_19
network_var/fc5b/Adam_1
network_var/fc5b/Adam_1/Assign
network_var/fc5b/Adam_1/read
Adam/learning_rate
Adam/beta1
Adam/beta2
Adam/epsilon
Adam/update_network_var/conv1w/ApplyAdam
Adam/update_network_var/conv1b/ApplyAdam
Adam/update_network_var/conv2w/ApplyAdam
Adam/update_network_var/conv2b/ApplyAdam
Adam/update_network_var/fc3w/ApplyAdam
Adam/update_network_var/fc3b/ApplyAdam
Adam/update_network_var/fc4w/ApplyAdam
Adam/update_network_var/fc4b/ApplyAdam
Adam/update_network_var/fc5w/ApplyAdam
Adam/update_network_var/fc5b/ApplyAdam
Adam/mul
Adam/Assign
Adam/mul_1
Adam/Assign_1
Adam
Softmax
ArgMax_1/dimension
ArgMax_1
Equal
Cast_1
Const_1
Mean
save/Const
save/SaveV2/tensor_names
save/SaveV2/shape_and_slices
save/SaveV2
save/control_dependency
save/RestoreV2/tensor_names
save/RestoreV2/shape_and_slices
save/RestoreV2
save/Assign
save/RestoreV2_1/tensor_names
save/RestoreV2_1/shape_and_slices
save/RestoreV2_1
save/Assign_1
save/RestoreV2_2/tensor_names
save/RestoreV2_2/shape_and_slices
save/RestoreV2_2
save/Assign_2
save/RestoreV2_3/tensor_names
save/RestoreV2_3/shape_and_slices
save/RestoreV2_3
save/Assign_3
save/RestoreV2_4/tensor_names
save/RestoreV2_4/shape_and_slices
save/RestoreV2_4
save/Assign_4
save/RestoreV2_5/tensor_names
save/RestoreV2_5/shape_and_slices
save/RestoreV2_5
save/Assign_5
save/RestoreV2_6/tensor_names
save/RestoreV2_6/shape_and_slices
save/RestoreV2_6
save/Assign_6
save/RestoreV2_7/tensor_names
save/RestoreV2_7/shape_and_slices
save/RestoreV2_7
save/Assign_7
save/RestoreV2_8/tensor_names
save/RestoreV2_8/shape_and_slices
save/RestoreV2_8
save/Assign_8
save/RestoreV2_9/tensor_names
save/RestoreV2_9/shape_and_slices
save/RestoreV2_9
save/Assign_9
save/RestoreV2_10/tensor_names
save/RestoreV2_10/shape_and_slices
save/RestoreV2_10
save/Assign_10
save/RestoreV2_11/tensor_names
save/RestoreV2_11/shape_and_slices
save/RestoreV2_11
save/Assign_11
save/RestoreV2_12/tensor_names
save/RestoreV2_12/shape_and_slices
save/RestoreV2_12
save/Assign_12
save/RestoreV2_13/tensor_names
save/RestoreV2_13/shape_and_slices
save/RestoreV2_13
save/Assign_13
save/RestoreV2_14/tensor_names
save/RestoreV2_14/shape_and_slices
save/RestoreV2_14
save/Assign_14
save/RestoreV2_15/tensor_names
save/RestoreV2_15/shape_and_slices
save/RestoreV2_15
save/Assign_15
save/RestoreV2_16/tensor_names
save/RestoreV2_16/shape_and_slices
save/RestoreV2_16
save/Assign_16
save/RestoreV2_17/tensor_names
save/RestoreV2_17/shape_and_slices
save/RestoreV2_17
save/Assign_17
save/RestoreV2_18/tensor_names
save/RestoreV2_18/shape_and_slices
save/RestoreV2_18
save/Assign_18
save/RestoreV2_19/tensor_names
save/RestoreV2_19/shape_and_slices
save/RestoreV2_19
save/Assign_19
save/RestoreV2_20/tensor_names
save/RestoreV2_20/shape_and_slices
save/RestoreV2_20
save/Assign_20
save/RestoreV2_21/tensor_names
save/RestoreV2_21/shape_and_slices
save/RestoreV2_21
save/Assign_21
save/RestoreV2_22/tensor_names
save/RestoreV2_22/shape_and_slices
save/RestoreV2_22
save/Assign_22
save/RestoreV2_23/tensor_names
save/RestoreV2_23/shape_and_slices
save/RestoreV2_23
save/Assign_23
save/RestoreV2_24/tensor_names
save/RestoreV2_24/shape_and_slices
save/RestoreV2_24
save/Assign_24
save/RestoreV2_25/tensor_names
save/RestoreV2_25/shape_and_slices
save/RestoreV2_25
save/Assign_25
save/RestoreV2_26/tensor_names
save/RestoreV2_26/shape_and_slices
save/RestoreV2_26
save/Assign_26
save/RestoreV2_27/tensor_names
save/RestoreV2_27/shape_and_slices
save/RestoreV2_27
save/Assign_27
save/RestoreV2_28/tensor_names
save/RestoreV2_28/shape_and_slices
save/RestoreV2_28
save/Assign_28
save/RestoreV2_29/tensor_names
save/RestoreV2_29/shape_and_slices
save/RestoreV2_29
save/Assign_29
save/RestoreV2_30/tensor_names
save/RestoreV2_30/shape_and_slices
save/RestoreV2_30
save/Assign_30
save/RestoreV2_31/tensor_names
save/RestoreV2_31/shape_and_slices
save/RestoreV2_31
save/Assign_31
save/restore_all
init
init_1
init_2
save_1/Const
save_1/SaveV2/tensor_names
save_1/SaveV2/shape_and_slices
save_1/SaveV2
save_1/control_dependency
save_1/RestoreV2/tensor_names
save_1/RestoreV2/shape_and_slices
save_1/RestoreV2
save_1/Assign
save_1/RestoreV2_1/tensor_names
save_1/RestoreV2_1/shape_and_slices
save_1/RestoreV2_1
save_1/Assign_1
save_1/RestoreV2_2/tensor_names
save_1/RestoreV2_2/shape_and_slices
save_1/RestoreV2_2
save_1/Assign_2
save_1/RestoreV2_3/tensor_names
save_1/RestoreV2_3/shape_and_slices
save_1/RestoreV2_3
save_1/Assign_3
save_1/RestoreV2_4/tensor_names
save_1/RestoreV2_4/shape_and_slices
save_1/RestoreV2_4
save_1/Assign_4
save_1/RestoreV2_5/tensor_names
save_1/RestoreV2_5/shape_and_slices
save_1/RestoreV2_5
save_1/Assign_5
save_1/RestoreV2_6/tensor_names
save_1/RestoreV2_6/shape_and_slices
save_1/RestoreV2_6
save_1/Assign_6
save_1/RestoreV2_7/tensor_names
save_1/RestoreV2_7/shape_and_slices
save_1/RestoreV2_7
save_1/Assign_7
save_1/RestoreV2_8/tensor_names
save_1/RestoreV2_8/shape_and_slices
save_1/RestoreV2_8
save_1/Assign_8
save_1/RestoreV2_9/tensor_names
save_1/RestoreV2_9/shape_and_slices
save_1/RestoreV2_9
save_1/Assign_9
save_1/RestoreV2_10/tensor_names
save_1/RestoreV2_10/shape_and_slices
save_1/RestoreV2_10
save_1/Assign_10
save_1/RestoreV2_11/tensor_names
save_1/RestoreV2_11/shape_and_slices
save_1/RestoreV2_11
save_1/Assign_11
save_1/RestoreV2_12/tensor_names
save_1/RestoreV2_12/shape_and_slices
save_1/RestoreV2_12
save_1/Assign_12
save_1/RestoreV2_13/tensor_names
save_1/RestoreV2_13/shape_and_slices
save_1/RestoreV2_13
save_1/Assign_13
save_1/RestoreV2_14/tensor_names
save_1/RestoreV2_14/shape_and_slices
save_1/RestoreV2_14
save_1/Assign_14
save_1/RestoreV2_15/tensor_names
save_1/RestoreV2_15/shape_and_slices
save_1/RestoreV2_15
save_1/Assign_15
save_1/RestoreV2_16/tensor_names
save_1/RestoreV2_16/shape_and_slices
save_1/RestoreV2_16
save_1/Assign_16
save_1/RestoreV2_17/tensor_names
save_1/RestoreV2_17/shape_and_slices
save_1/RestoreV2_17
save_1/Assign_17
save_1/RestoreV2_18/tensor_names
save_1/RestoreV2_18/shape_and_slices
save_1/RestoreV2_18
save_1/Assign_18
save_1/RestoreV2_19/tensor_names
save_1/RestoreV2_19/shape_and_slices
save_1/RestoreV2_19
save_1/Assign_19
save_1/RestoreV2_20/tensor_names
save_1/RestoreV2_20/shape_and_slices
save_1/RestoreV2_20
save_1/Assign_20
save_1/RestoreV2_21/tensor_names
save_1/RestoreV2_21/shape_and_slices
save_1/RestoreV2_21
save_1/Assign_21
save_1/RestoreV2_22/tensor_names
save_1/RestoreV2_22/shape_and_slices
save_1/RestoreV2_22
save_1/Assign_22
save_1/RestoreV2_23/tensor_names
save_1/RestoreV2_23/shape_and_slices
save_1/RestoreV2_23
save_1/Assign_23
save_1/RestoreV2_24/tensor_names
save_1/RestoreV2_24/shape_and_slices
save_1/RestoreV2_24
save_1/Assign_24
save_1/RestoreV2_25/tensor_names
save_1/RestoreV2_25/shape_and_slices
save_1/RestoreV2_25
save_1/Assign_25
save_1/RestoreV2_26/tensor_names
save_1/RestoreV2_26/shape_and_slices
save_1/RestoreV2_26
save_1/Assign_26
save_1/RestoreV2_27/tensor_names
save_1/RestoreV2_27/shape_and_slices
save_1/RestoreV2_27
save_1/Assign_27
save_1/RestoreV2_28/tensor_names
save_1/RestoreV2_28/shape_and_slices
save_1/RestoreV2_28
save_1/Assign_28
save_1/RestoreV2_29/tensor_names
save_1/RestoreV2_29/shape_and_slices
save_1/RestoreV2_29
save_1/Assign_29
save_1/RestoreV2_30/tensor_names
save_1/RestoreV2_30/shape_and_slices
save_1/RestoreV2_30
save_1/Assign_30
save_1/RestoreV2_31/tensor_names
save_1/RestoreV2_31/shape_and_slices
save_1/RestoreV2_31
save_1/Assign_31
save_1/restore_all
init_3

In [107]:
def get_weights_variable(varible_name):
    # Retrieve an existing variable named 'weights' in the scope
    # with the given layer_name.
    # This is awkward because the TensorFlow function was
    # really intended for another purpose.

    with tf.variable_scope("network_var",reuse=True):
        variable = tf.get_variable(varible_name)

    return variable

weights_conv1 = get_weights_variable(varible_name ='conv1w')
weights_conv2 = get_weights_variable(varible_name ='conv2w')

In [108]:
def plot_conv_weights(weights, input_channel=0):
    # Assume weights are TensorFlow ops for 4-dim variables
    # e.g. weights_conv1 or weights_conv2.

    # Retrieve the values of the weight-variables from TensorFlow.
    # A feed-dict is not necessary because nothing is calculated.
    w = session.run(weights)

    # Print statistics for the weights.
    print("Min:  {0:.5f}, Max:   {1:.5f}".format(w.min(), w.max()))
    print("Mean: {0:.5f}, Stdev: {1:.5f}".format(w.mean(), w.std()))
    
    # Get the lowest and highest values for the weights.
    # This is used to correct the colour intensity across
    # the images so they can be compared with each other.
    w_min = np.min(w)
    w_max = np.max(w)
    abs_max = max(abs(w_min), abs(w_max))

    # Number of filters used in the conv. layer.
    num_filters = w.shape[3]

    # Number of grids to plot.
    # Rounded-up, square-root of the number of filters.
    num_grids = math.ceil(math.sqrt(num_filters))
    
    # Create figure with a grid of sub-plots.
    fig, axes = plt.subplots(num_grids, num_grids)

    # Plot all the filter-weights.
    for i, ax in enumerate(axes.flat):
        # Only plot the valid filter-weights.
        if i<num_filters:
            # Get the weights for the i'th filter of the input channel.
            # The format of this 4-dim tensor is determined by the
            # TensorFlow API. See Tutorial #02 for more details.
            img = w[:, :, input_channel, i]

            # Plot image.
            ax.imshow(img, vmin=-abs_max, vmax=abs_max,
                      interpolation='nearest', cmap='seismic')
        
        # Remove ticks from the plot.
        ax.set_xticks([])
        ax.set_yticks([])
    
    # Ensure the plot is shown correctly with multiple plots
    # in a single Notebook cell.
    plt.show()

In [109]:
plot_conv_weights(weights=weights_conv1, input_channel=0)


Min:  -0.06610, Max:   0.06305
Mean: -0.00034, Stdev: 0.01940

In [111]:
plot_conv_weights(weights=weights_conv2, input_channel=0)


Min:  -0.29111, Max:   0.21174
Mean: -0.00191, Stdev: 0.03159

Plot image after convolution


In [112]:
def plot_image(image):
    # Create figure with sub-plots.
    fig, axes = plt.subplots(1, 2)

    # References to the sub-plots.
    ax0 = axes.flat[0]
    ax1 = axes.flat[1]

    # Show raw and smoothened images in sub-plots.
    ax0.imshow(image, interpolation='nearest')
    ax1.imshow(image, interpolation='spline16')

    # Set labels.
    ax0.set_xlabel('Raw')
    ax1.set_xlabel('Smooth')
    
    # Ensure the plot is shown correctly with multiple plots
    # in a single Notebook cell.
    plt.show()

def get_test_image(i):
    return images_test[i, :, :, :], cls_test[i]

In [120]:
img, cls = get_test_image(0)
plot_image(img)



In [121]:
def get_layer_output(layer_name):
    # The name of the last operation of the convolutional layer.
    # This assumes you are using Relu as the activation-function.
    tensor_name = "network/"+layer_name +":0"

    # Get the tensor with this name.
    tensor = tf.get_default_graph().get_tensor_by_name(tensor_name)

    return tensor

In [122]:
output_conv1 = get_layer_output(layer_name='relu_1')
output_conv2 = get_layer_output(layer_name='relu_2')

In [123]:
def plot_layer_output(layer_output, image):
    # Assume layer_output is a 4-dim tensor
    # e.g. output_conv1 or output_conv2.

    # Create a feed-dict which holds the single input image.
    # Note that TensorFlow needs a list of images,
    # so we just create a list with this one image.
    feed_dict = {x: [image], is_training:False}
    
    # Retrieve the output of the layer after inputting this image.
    values = session.run(layer_output, feed_dict=feed_dict)
    print(layer_output)

    # Get the lowest and highest values.
    # This is used to correct the colour intensity across
    # the images so they can be compared with each other.
    values_min = np.min(values)
    values_max = np.max(values)

    # Number of image channels output by the conv. layer.
    num_images = values.shape[3]

    # Number of grid-cells to plot.
    # Rounded-up, square-root of the number of filters.
    num_grids = math.ceil(math.sqrt(num_images))
    
    # Create figure with a grid of sub-plots.
    fig, axes = plt.subplots(num_grids, num_grids)

    # Plot all the filter-weights.
    for i, ax in enumerate(axes.flat):
        # Only plot the valid image-channels.
        if i<num_images:
            # Get the images for the i'th output channel.
            img = values[0, :, :, i]

            # Plot image.
            ax.imshow(img, vmin=values_min, vmax=values_max,
                      interpolation='nearest', cmap='binary')
        
        # Remove ticks from the plot.
        ax.set_xticks([])
        ax.set_yticks([])
    
    # Ensure the plot is shown correctly with multiple plots
    # in a single Notebook cell.
    plt.show()

In [124]:
plot_layer_output(output_conv1, image=img)


Tensor("network/relu_1:0", shape=(?, 24, 24, 64), dtype=float32)

In [125]:
plot_layer_output(output_conv2, image=img)


Tensor("network/relu_2:0", shape=(?, 12, 12, 64), dtype=float32)

In [ ]: