Skip to content

Instantly share code, notes, and snippets.

@jzstark
Last active January 20, 2019 19:35
Show Gist options
  • Select an option

  • Save jzstark/f97c77ed1f9a0f95040b51b4e236a212 to your computer and use it in GitHub Desktop.

Select an option

Save jzstark/f97c77ed1f9a0f95040b51b4e236a212 to your computer and use it in GitHub Desktop.
## Change the definition of MNSIT network with full DNN
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import math
import os
import sys
import time
import numpy as np
import tensorflow as tf
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets
NUM_CLASSES = 10
IMAGE_SIZE = 28
IMAGE_PIXELS = IMAGE_SIZE * IMAGE_SIZE
def cnn_model(images):
# images already preprocessed, so a useless lambda layer here
lamb = images * (1.)
conv1 = tf.layers.conv2d(inputs=lamb, filters=32, kernel_size=[5, 5],
padding="same", activation=tf.nn.relu)
pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)
dropout = tf.layers.dropout(inputs=pool1, rate=0.1)
flatten = tf.layers.flatten(inputs=dropout)
dense = tf.layers.dense(inputs=flatten, units=1024, activation=tf.nn.relu)
logits = tf.layers.dense(inputs=dense, units=10)
tf.add_to_collection("logits", logits)
return logits
def loss(logits, labels):
labels = tf.to_int64(labels)
return tf.losses.softmax_cross_entropy(onehot_labels=labels, logits=logits)
def training(loss, learning_rate, name='train_op'):
optimizer = tf.train.AdagradOptimizer(learning_rate)
global_step = tf.Variable(0, name='global_step', trainable=False)
train_op = optimizer.minimize(loss, global_step=global_step, name=name)
return train_op
def evaluation(logits, labels, name='eval_correct'):
#labels = tf.where(tf.equal(labels, 1)) # dense form
#correct = tf.nn.in_top_k(logits, labels, 1)
correct = tf.equal(tf.argmax(logits,1), tf.argmax(labels,1))
return tf.reduce_sum(tf.cast(correct, tf.int32), name=name)
input_data_dir = os.path.join(os.getenv('TEST_TMPDIR', '/tmp'),
'tensorflow/mnist/input_data')
data_sets = read_data_sets(input_data_dir, False)
log_dir = os.path.join(os.getenv('TEST_TMPDIR', '/tmp'),
'tensorflow/mnist/logs/fully_connected_feed'),
batch_size = 100
learning_rate = 0.005
hidden1 = 128
hidden2 = 32
max_steps = 400
checkpoint_file = os.path.join(os.getenv('HOME'),
'Tmp/tf_converter/model4.ckpt')
meta_file = checkpoint_file + '.meta'
### Utils
def get_one_hot(targets, nb_classes):
res = np.eye(nb_classes)[np.array(targets).reshape(-1)]
return res.astype('uint8')
def placeholder_inputs(batch_size):
images_placeholder = tf.placeholder(
tf.float32, shape=(batch_size, IMAGE_SIZE, IMAGE_SIZE, 1),
name='images_placeholder')
labels_placeholder = tf.placeholder(tf.int32,
shape=(batch_size, NUM_CLASSES), name='labels_placeholder')
return images_placeholder, labels_placeholder
def fill_feed_dict(data_set, images_pl, labels_pl):
images_feed, labels_feed = data_set.next_batch(batch_size, False)
images_feed = np.reshape(images_feed, (-1, 28, 28, 1))
labels_feed = get_one_hot(labels_feed, NUM_CLASSES)
feed_dict = {
images_pl: images_feed,
labels_pl: labels_feed,
}
return feed_dict
def do_eval(sess,
eval_correct,
images_placeholder,
labels_placeholder,
data_set):
true_count = 0 # Counts the number of correct predictions.
steps_per_epoch = data_set.num_examples // batch_size
num_examples = steps_per_epoch * batch_size
for step in xrange(steps_per_epoch):
feed_dict = fill_feed_dict(data_set, images_placeholder, labels_placeholder)
true_count += sess.run(eval_correct, feed_dict=feed_dict)
precision = float(true_count) / num_examples
print('Num examples: %d Num correct: %d Precision @ 1: %0.04f' %
(num_examples, true_count, precision))
## Build Graph and save
with tf.Graph().as_default():
sess = tf.Session()
images_placeholder, labels_placeholder = placeholder_inputs(batch_size)
logits = cnn_model(images_placeholder)
saver = tf.train.Saver()
init = tf.global_variables_initializer() #necessary
sess.run(init)
saver.save(sess, checkpoint_file)
## Start training
with tf.Graph().as_default():
sess = tf.Session()
saver = tf.train.import_meta_graph(meta_file)
graph = tf.get_default_graph()
g = saver.export_meta_graph()
print(g)
"""
images_placeholder = graph.get_tensor_by_name('images_placeholder:0')
labels_placeholder = graph.get_tensor_by_name('labels_placeholder:0')
# logits = graph.get_tensor_by_name('softmax_linear_logits:0') --> does not work
logits = tf.get_collection("logits")[0]
loss = loss(logits, labels_placeholder)
train_op = training(loss, learning_rate)
eval_correct = evaluation(logits, labels_placeholder)
init = tf.global_variables_initializer()
sess.run(init)
for step in xrange(max_steps):
start_time = time.time()
feed_dict = fill_feed_dict(data_sets.train,
images_placeholder, labels_placeholder)
_, loss_value = sess.run([train_op, loss], feed_dict=feed_dict)
duration = time.time() - start_time
if step % 100 == 0:
print('Step %d: loss = %.2f (%.3f sec)' % (step, loss_value, duration))
if (step + 1) % 200 == 0 or (step + 1) == max_steps:
print('Test Data Eval:')
do_eval(sess, eval_correct, images_placeholder, labels_placeholder, data_sets.test)
"""
#====
#from tensorflow.python.tools import inspect_checkpoint as chkp
#chkp.print_tensors_in_checkpoint_file("model.ckpt", tensor_name='', all_tensors=True)
"""
sess = tf.InteractiveSession()
new_saver = tf.train.import_meta_graph(meta_file)
g = new_saver.export_meta_graph()
print(g)
"""
meta_info_def {
stripped_op_list {
op {
name: "Add"
input_arg {
name: "x"
type_attr: "T"
}
input_arg {
name: "y"
type_attr: "T"
}
output_arg {
name: "z"
type_attr: "T"
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_BFLOAT16
type: DT_HALF
type: DT_FLOAT
type: DT_DOUBLE
type: DT_UINT8
type: DT_INT8
type: DT_INT16
type: DT_INT32
type: DT_INT64
type: DT_COMPLEX64
type: DT_COMPLEX128
type: DT_STRING
}
}
}
}
op {
name: "Assign"
input_arg {
name: "ref"
type_attr: "T"
is_ref: true
}
input_arg {
name: "value"
type_attr: "T"
}
output_arg {
name: "output_ref"
type_attr: "T"
is_ref: true
}
attr {
name: "T"
type: "type"
}
attr {
name: "validate_shape"
type: "bool"
default_value {
b: true
}
}
attr {
name: "use_locking"
type: "bool"
default_value {
b: true
}
}
allows_uninitialized_input: true
}
op {
name: "BiasAdd"
input_arg {
name: "value"
type_attr: "T"
}
input_arg {
name: "bias"
type_attr: "T"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_FLOAT
type: DT_DOUBLE
type: DT_INT32
type: DT_UINT8
type: DT_INT16
type: DT_INT8
type: DT_COMPLEX64
type: DT_INT64
type: DT_QINT8
type: DT_QUINT8
type: DT_QINT32
type: DT_BFLOAT16
type: DT_UINT16
type: DT_COMPLEX128
type: DT_HALF
type: DT_UINT32
type: DT_UINT64
}
}
}
attr {
name: "data_format"
type: "string"
default_value {
s: "NHWC"
}
allowed_values {
list {
s: "NHWC"
s: "NCHW"
}
}
}
}
op {
name: "Const"
output_arg {
name: "output"
type_attr: "dtype"
}
attr {
name: "value"
type: "tensor"
}
attr {
name: "dtype"
type: "type"
}
}
op {
name: "Conv2D"
input_arg {
name: "input"
type_attr: "T"
}
input_arg {
name: "filter"
type_attr: "T"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_HALF
type: DT_BFLOAT16
type: DT_FLOAT
type: DT_DOUBLE
}
}
}
attr {
name: "strides"
type: "list(int)"
}
attr {
name: "use_cudnn_on_gpu"
type: "bool"
default_value {
b: true
}
}
attr {
name: "padding"
type: "string"
allowed_values {
list {
s: "SAME"
s: "VALID"
}
}
}
attr {
name: "data_format"
type: "string"
default_value {
s: "NHWC"
}
allowed_values {
list {
s: "NHWC"
s: "NCHW"
}
}
}
attr {
name: "dilations"
type: "list(int)"
default_value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
}
op {
name: "Fill"
input_arg {
name: "dims"
type_attr: "index_type"
}
input_arg {
name: "value"
type_attr: "T"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "T"
type: "type"
}
attr {
name: "index_type"
type: "type"
default_value {
type: DT_INT32
}
allowed_values {
list {
type: DT_INT32
type: DT_INT64
}
}
}
}
op {
name: "Identity"
input_arg {
name: "input"
type_attr: "T"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "T"
type: "type"
}
}
op {
name: "MatMul"
input_arg {
name: "a"
type_attr: "T"
}
input_arg {
name: "b"
type_attr: "T"
}
output_arg {
name: "product"
type_attr: "T"
}
attr {
name: "transpose_a"
type: "bool"
default_value {
b: false
}
}
attr {
name: "transpose_b"
type: "bool"
default_value {
b: false
}
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_BFLOAT16
type: DT_HALF
type: DT_FLOAT
type: DT_DOUBLE
type: DT_INT32
type: DT_COMPLEX64
type: DT_COMPLEX128
}
}
}
}
op {
name: "MaxPool"
input_arg {
name: "input"
type_attr: "T"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "T"
type: "type"
default_value {
type: DT_FLOAT
}
allowed_values {
list {
type: DT_HALF
type: DT_BFLOAT16
type: DT_FLOAT
type: DT_DOUBLE
type: DT_INT32
type: DT_INT64
type: DT_UINT8
type: DT_INT16
type: DT_INT8
type: DT_UINT16
type: DT_QINT8
}
}
}
attr {
name: "ksize"
type: "list(int)"
has_minimum: true
minimum: 4
}
attr {
name: "strides"
type: "list(int)"
has_minimum: true
minimum: 4
}
attr {
name: "padding"
type: "string"
allowed_values {
list {
s: "SAME"
s: "VALID"
}
}
}
attr {
name: "data_format"
type: "string"
default_value {
s: "NHWC"
}
allowed_values {
list {
s: "NHWC"
s: "NCHW"
s: "NCHW_VECT_C"
}
}
}
}
op {
name: "Mul"
input_arg {
name: "x"
type_attr: "T"
}
input_arg {
name: "y"
type_attr: "T"
}
output_arg {
name: "z"
type_attr: "T"
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_BFLOAT16
type: DT_HALF
type: DT_FLOAT
type: DT_DOUBLE
type: DT_UINT8
type: DT_INT8
type: DT_UINT16
type: DT_INT16
type: DT_INT32
type: DT_INT64
type: DT_COMPLEX64
type: DT_COMPLEX128
}
}
}
is_commutative: true
}
op {
name: "NoOp"
}
op {
name: "Pack"
input_arg {
name: "values"
type_attr: "T"
number_attr: "N"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "N"
type: "int"
has_minimum: true
minimum: 1
}
attr {
name: "T"
type: "type"
}
attr {
name: "axis"
type: "int"
default_value {
i: 0
}
}
}
op {
name: "Placeholder"
output_arg {
name: "output"
type_attr: "dtype"
}
attr {
name: "dtype"
type: "type"
}
attr {
name: "shape"
type: "shape"
default_value {
shape {
unknown_rank: true
}
}
}
}
op {
name: "RandomUniform"
input_arg {
name: "shape"
type_attr: "T"
}
output_arg {
name: "output"
type_attr: "dtype"
}
attr {
name: "seed"
type: "int"
default_value {
i: 0
}
}
attr {
name: "seed2"
type: "int"
default_value {
i: 0
}
}
attr {
name: "dtype"
type: "type"
allowed_values {
list {
type: DT_HALF
type: DT_BFLOAT16
type: DT_FLOAT
type: DT_DOUBLE
}
}
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_INT32
type: DT_INT64
}
}
}
is_stateful: true
}
op {
name: "Relu"
input_arg {
name: "features"
type_attr: "T"
}
output_arg {
name: "activations"
type_attr: "T"
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_FLOAT
type: DT_DOUBLE
type: DT_INT32
type: DT_UINT8
type: DT_INT16
type: DT_INT8
type: DT_INT64
type: DT_BFLOAT16
type: DT_UINT16
type: DT_HALF
type: DT_UINT32
type: DT_UINT64
type: DT_QINT8
}
}
}
}
op {
name: "Reshape"
input_arg {
name: "tensor"
type_attr: "T"
}
input_arg {
name: "shape"
type_attr: "Tshape"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "T"
type: "type"
}
attr {
name: "Tshape"
type: "type"
default_value {
type: DT_INT32
}
allowed_values {
list {
type: DT_INT32
type: DT_INT64
}
}
}
}
op {
name: "RestoreV2"
input_arg {
name: "prefix"
type: DT_STRING
}
input_arg {
name: "tensor_names"
type: DT_STRING
}
input_arg {
name: "shape_and_slices"
type: DT_STRING
}
output_arg {
name: "tensors"
type_list_attr: "dtypes"
}
attr {
name: "dtypes"
type: "list(type)"
has_minimum: true
minimum: 1
}
is_stateful: true
}
op {
name: "SaveV2"
input_arg {
name: "prefix"
type: DT_STRING
}
input_arg {
name: "tensor_names"
type: DT_STRING
}
input_arg {
name: "shape_and_slices"
type: DT_STRING
}
input_arg {
name: "tensors"
type_list_attr: "dtypes"
}
attr {
name: "dtypes"
type: "list(type)"
has_minimum: true
minimum: 1
}
is_stateful: true
}
op {
name: "StridedSlice"
input_arg {
name: "input"
type_attr: "T"
}
input_arg {
name: "begin"
type_attr: "Index"
}
input_arg {
name: "end"
type_attr: "Index"
}
input_arg {
name: "strides"
type_attr: "Index"
}
output_arg {
name: "output"
type_attr: "T"
}
attr {
name: "T"
type: "type"
}
attr {
name: "Index"
type: "type"
allowed_values {
list {
type: DT_INT32
type: DT_INT64
}
}
}
attr {
name: "begin_mask"
type: "int"
default_value {
i: 0
}
}
attr {
name: "end_mask"
type: "int"
default_value {
i: 0
}
}
attr {
name: "ellipsis_mask"
type: "int"
default_value {
i: 0
}
}
attr {
name: "new_axis_mask"
type: "int"
default_value {
i: 0
}
}
attr {
name: "shrink_axis_mask"
type: "int"
default_value {
i: 0
}
}
}
op {
name: "Sub"
input_arg {
name: "x"
type_attr: "T"
}
input_arg {
name: "y"
type_attr: "T"
}
output_arg {
name: "z"
type_attr: "T"
}
attr {
name: "T"
type: "type"
allowed_values {
list {
type: DT_BFLOAT16
type: DT_HALF
type: DT_FLOAT
type: DT_DOUBLE
type: DT_UINT8
type: DT_INT8
type: DT_UINT16
type: DT_INT16
type: DT_INT32
type: DT_INT64
type: DT_COMPLEX64
type: DT_COMPLEX128
}
}
}
}
op {
name: "VariableV2"
output_arg {
name: "ref"
type_attr: "dtype"
is_ref: true
}
attr {
name: "shape"
type: "shape"
}
attr {
name: "dtype"
type: "type"
}
attr {
name: "container"
type: "string"
default_value {
s: ""
}
}
attr {
name: "shared_name"
type: "string"
default_value {
s: ""
}
}
is_stateful: true
}
}
tensorflow_version: "1.12.0"
tensorflow_git_version: "v1.12.0-rc2-3-ga6d8ffae09"
}
graph_def {
node {
name: "images_placeholder"
op: "Placeholder"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 28
}
dim {
size: 28
}
dim {
size: 1
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 100
}
dim {
size: 28
}
dim {
size: 28
}
dim {
size: 1
}
}
}
}
}
node {
name: "labels_placeholder"
op: "Placeholder"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 10
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 100
}
dim {
size: 10
}
}
}
}
}
node {
name: "mul/y"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 1.0
}
}
}
}
node {
name: "mul"
op: "Mul"
input: "images_placeholder"
input: "mul/y"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 28
}
dim {
size: 28
}
dim {
size: 1
}
}
}
}
}
}
node {
name: "conv2d/kernel/Initializer/random_uniform/shape"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 4
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "\005\000\000\000\005\000\000\000\001\000\000\000 \000\000\000"
}
}
}
}
node {
name: "conv2d/kernel/Initializer/random_uniform/min"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: -0.0852802842855
}
}
}
}
node {
name: "conv2d/kernel/Initializer/random_uniform/max"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0852802842855
}
}
}
}
node {
name: "conv2d/kernel/Initializer/random_uniform/RandomUniform"
op: "RandomUniform"
input: "conv2d/kernel/Initializer/random_uniform/shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "conv2d/kernel/Initializer/random_uniform/sub"
op: "Sub"
input: "conv2d/kernel/Initializer/random_uniform/max"
input: "conv2d/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
}
node {
name: "conv2d/kernel/Initializer/random_uniform/mul"
op: "Mul"
input: "conv2d/kernel/Initializer/random_uniform/RandomUniform"
input: "conv2d/kernel/Initializer/random_uniform/sub"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
}
}
node {
name: "conv2d/kernel/Initializer/random_uniform"
op: "Add"
input: "conv2d/kernel/Initializer/random_uniform/mul"
input: "conv2d/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
}
}
node {
name: "conv2d/kernel"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d/kernel/Assign"
op: "Assign"
input: "conv2d/kernel"
input: "conv2d/kernel/Initializer/random_uniform"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d/kernel/read"
op: "Identity"
input: "conv2d/kernel"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
}
}
node {
name: "conv2d/bias/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 32
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 32
}
}
float_val: 0.0
}
}
}
}
node {
name: "conv2d/bias"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 32
}
}
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d/bias/Assign"
op: "Assign"
input: "conv2d/bias"
input: "conv2d/bias/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 32
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d/bias/read"
op: "Identity"
input: "conv2d/bias"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 32
}
}
}
}
}
}
node {
name: "conv2d/dilation_rate"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 2
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 2
}
}
tensor_content: "\001\000\000\000\001\000\000\000"
}
}
}
}
node {
name: "conv2d/Conv2D"
op: "Conv2D"
input: "mul"
input: "conv2d/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 28
}
dim {
size: 28
}
dim {
size: 32
}
}
}
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "dilations"
value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
attr {
key: "padding"
value {
s: "SAME"
}
}
attr {
key: "strides"
value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
attr {
key: "use_cudnn_on_gpu"
value {
b: true
}
}
}
node {
name: "conv2d/BiasAdd"
op: "BiasAdd"
input: "conv2d/Conv2D"
input: "conv2d/bias/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 28
}
dim {
size: 28
}
dim {
size: 32
}
}
}
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "conv2d/Relu"
op: "Relu"
input: "conv2d/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 28
}
dim {
size: 28
}
dim {
size: 32
}
}
}
}
}
}
node {
name: "max_pooling2d/MaxPool"
op: "MaxPool"
input: "conv2d/Relu"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 14
}
dim {
size: 14
}
dim {
size: 32
}
}
}
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "ksize"
value {
list {
i: 1
i: 2
i: 2
i: 1
}
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
attr {
key: "strides"
value {
list {
i: 1
i: 2
i: 2
i: 1
}
}
}
}
node {
name: "dropout/Identity"
op: "Identity"
input: "max_pooling2d/MaxPool"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 14
}
dim {
size: 14
}
dim {
size: 32
}
}
}
}
}
}
node {
name: "flatten/Shape"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 4
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "d\000\000\000\016\000\000\000\016\000\000\000 \000\000\000"
}
}
}
}
node {
name: "flatten/strided_slice/stack"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 1
}
}
int_val: 0
}
}
}
}
node {
name: "flatten/strided_slice/stack_1"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 1
}
}
int_val: 1
}
}
}
}
node {
name: "flatten/strided_slice/stack_2"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 1
}
}
int_val: 1
}
}
}
}
node {
name: "flatten/strided_slice"
op: "StridedSlice"
input: "flatten/Shape"
input: "flatten/strided_slice/stack"
input: "flatten/strided_slice/stack_1"
input: "flatten/strided_slice/stack_2"
attr {
key: "Index"
value {
type: DT_INT32
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "begin_mask"
value {
i: 0
}
}
attr {
key: "ellipsis_mask"
value {
i: 0
}
}
attr {
key: "end_mask"
value {
i: 0
}
}
attr {
key: "new_axis_mask"
value {
i: 0
}
}
attr {
key: "shrink_axis_mask"
value {
i: 1
}
}
}
node {
name: "flatten/Reshape/shape/1"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: -1
}
}
}
}
node {
name: "flatten/Reshape/shape"
op: "Pack"
input: "flatten/strided_slice"
input: "flatten/Reshape/shape/1"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 2
}
}
}
}
}
attr {
key: "axis"
value {
i: 0
}
}
}
node {
name: "flatten/Reshape"
op: "Reshape"
input: "dropout/Identity"
input: "flatten/Reshape/shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 6272
}
}
}
}
}
}
node {
name: "dense/kernel/Initializer/random_uniform/shape"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 2
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 2
}
}
tensor_content: "\200\030\000\000\000\004\000\000"
}
}
}
}
node {
name: "dense/kernel/Initializer/random_uniform/min"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: -0.0286769662052
}
}
}
}
node {
name: "dense/kernel/Initializer/random_uniform/max"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0286769662052
}
}
}
}
node {
name: "dense/kernel/Initializer/random_uniform/RandomUniform"
op: "RandomUniform"
input: "dense/kernel/Initializer/random_uniform/shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "dense/kernel/Initializer/random_uniform/sub"
op: "Sub"
input: "dense/kernel/Initializer/random_uniform/max"
input: "dense/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
}
node {
name: "dense/kernel/Initializer/random_uniform/mul"
op: "Mul"
input: "dense/kernel/Initializer/random_uniform/RandomUniform"
input: "dense/kernel/Initializer/random_uniform/sub"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
}
}
node {
name: "dense/kernel/Initializer/random_uniform"
op: "Add"
input: "dense/kernel/Initializer/random_uniform/mul"
input: "dense/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
}
}
node {
name: "dense/kernel"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense/kernel/Assign"
op: "Assign"
input: "dense/kernel"
input: "dense/kernel/Initializer/random_uniform"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense/kernel/read"
op: "Identity"
input: "dense/kernel"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
}
}
node {
name: "dense/bias/Initializer/zeros/shape_as_tensor"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 1
}
}
int_val: 1024
}
}
}
}
node {
name: "dense/bias/Initializer/zeros/Const"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "dense/bias/Initializer/zeros"
op: "Fill"
input: "dense/bias/Initializer/zeros/shape_as_tensor"
input: "dense/bias/Initializer/zeros/Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
}
}
}
}
attr {
key: "index_type"
value {
type: DT_INT32
}
}
}
node {
name: "dense/bias"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
}
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 1024
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense/bias/Assign"
op: "Assign"
input: "dense/bias"
input: "dense/bias/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense/bias/read"
op: "Identity"
input: "dense/bias"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
}
}
}
}
}
node {
name: "dense/MatMul"
op: "MatMul"
input: "flatten/Reshape"
input: "dense/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 1024
}
}
}
}
}
attr {
key: "transpose_a"
value {
b: false
}
}
attr {
key: "transpose_b"
value {
b: false
}
}
}
node {
name: "dense/BiasAdd"
op: "BiasAdd"
input: "dense/MatMul"
input: "dense/bias/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 1024
}
}
}
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "dense/Relu"
op: "Relu"
input: "dense/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 1024
}
}
}
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/shape"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 2
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 2
}
}
tensor_content: "\000\004\000\000\n\000\000\000"
}
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/min"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: -0.0761755108833
}
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/max"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0761755108833
}
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/RandomUniform"
op: "RandomUniform"
input: "dense_1/kernel/Initializer/random_uniform/shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/sub"
op: "Sub"
input: "dense_1/kernel/Initializer/random_uniform/max"
input: "dense_1/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/mul"
op: "Mul"
input: "dense_1/kernel/Initializer/random_uniform/RandomUniform"
input: "dense_1/kernel/Initializer/random_uniform/sub"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform"
op: "Add"
input: "dense_1/kernel/Initializer/random_uniform/mul"
input: "dense_1/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
}
}
node {
name: "dense_1/kernel"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_1/kernel/Assign"
op: "Assign"
input: "dense_1/kernel"
input: "dense_1/kernel/Initializer/random_uniform"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_1/kernel/read"
op: "Identity"
input: "dense_1/kernel"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
}
}
node {
name: "dense_1/bias/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 10
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 10
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_1/bias"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 10
}
}
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 10
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_1/bias/Assign"
op: "Assign"
input: "dense_1/bias"
input: "dense_1/bias/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 10
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_1/bias/read"
op: "Identity"
input: "dense_1/bias"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 10
}
}
}
}
}
}
node {
name: "dense_1/MatMul"
op: "MatMul"
input: "dense/Relu"
input: "dense_1/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 10
}
}
}
}
}
attr {
key: "transpose_a"
value {
b: false
}
}
attr {
key: "transpose_b"
value {
b: false
}
}
}
node {
name: "dense_1/BiasAdd"
op: "BiasAdd"
input: "dense_1/MatMul"
input: "dense_1/bias/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 100
}
dim {
size: 10
}
}
}
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "save/Const"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
}
string_val: "model"
}
}
}
}
node {
name: "save/SaveV2/tensor_names"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 6
}
}
string_val: "conv2d/bias"
string_val: "conv2d/kernel"
string_val: "dense/bias"
string_val: "dense/kernel"
string_val: "dense_1/bias"
string_val: "dense_1/kernel"
}
}
}
}
node {
name: "save/SaveV2/shape_and_slices"
op: "Const"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 6
}
}
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
}
}
}
}
node {
name: "save/SaveV2"
op: "SaveV2"
input: "save/Const"
input: "save/SaveV2/tensor_names"
input: "save/SaveV2/shape_and_slices"
input: "conv2d/bias"
input: "conv2d/kernel"
input: "dense/bias"
input: "dense/kernel"
input: "dense_1/bias"
input: "dense_1/kernel"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
}
}
}
}
node {
name: "save/control_dependency"
op: "Identity"
input: "save/Const"
input: "^save/SaveV2"
attr {
key: "T"
value {
type: DT_STRING
}
}
attr {
key: "_class"
value {
list {
s: "loc:@save/Const"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
}
}
}
}
}
node {
name: "save/RestoreV2/tensor_names"
op: "Const"
device: "/device:CPU:0"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 6
}
}
string_val: "conv2d/bias"
string_val: "conv2d/kernel"
string_val: "dense/bias"
string_val: "dense/kernel"
string_val: "dense_1/bias"
string_val: "dense_1/kernel"
}
}
}
}
node {
name: "save/RestoreV2/shape_and_slices"
op: "Const"
device: "/device:CPU:0"
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6
}
}
}
}
}
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 6
}
}
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2/tensor_names"
input: "save/RestoreV2/shape_and_slices"
device: "/device:CPU:0"
attr {
key: "_output_shapes"
value {
list {
shape {
unknown_rank: true
}
shape {
unknown_rank: true
}
shape {
unknown_rank: true
}
shape {
unknown_rank: true
}
shape {
unknown_rank: true
}
shape {
unknown_rank: true
}
}
}
}
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign"
op: "Assign"
input: "conv2d/bias"
input: "save/RestoreV2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 32
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/Assign_1"
op: "Assign"
input: "conv2d/kernel"
input: "save/RestoreV2:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 5
}
dim {
size: 5
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/Assign_2"
op: "Assign"
input: "dense/bias"
input: "save/RestoreV2:2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/Assign_3"
op: "Assign"
input: "dense/kernel"
input: "save/RestoreV2:3"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 6272
}
dim {
size: 1024
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/Assign_4"
op: "Assign"
input: "dense_1/bias"
input: "save/RestoreV2:4"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 10
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/Assign_5"
op: "Assign"
input: "dense_1/kernel"
input: "save/RestoreV2:5"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "_output_shapes"
value {
list {
shape {
dim {
size: 1024
}
dim {
size: 10
}
}
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/restore_all"
op: "NoOp"
input: "^save/Assign"
input: "^save/Assign_1"
input: "^save/Assign_2"
input: "^save/Assign_3"
input: "^save/Assign_4"
input: "^save/Assign_5"
}
node {
name: "init"
op: "NoOp"
input: "^conv2d/bias/Assign"
input: "^conv2d/kernel/Assign"
input: "^dense/bias/Assign"
input: "^dense/kernel/Assign"
input: "^dense_1/bias/Assign"
input: "^dense_1/kernel/Assign"
}
versions {
producer: 27
}
}
saver_def {
filename_tensor_name: "save/Const:0"
save_tensor_name: "save/control_dependency:0"
restore_op_name: "save/restore_all"
max_to_keep: 5
keep_checkpoint_every_n_hours: 10000.0
version: V2
}
collection_def {
key: "logits"
value {
node_list {
value: "dense_1/BiasAdd:0"
}
}
}
collection_def {
key: "trainable_variables"
value {
bytes_list {
value: "\n\017conv2d/kernel:0\022\024conv2d/kernel/Assign\032\024conv2d/kernel/read:02*conv2d/kernel/Initializer/random_uniform:08\001"
value: "\n\rconv2d/bias:0\022\022conv2d/bias/Assign\032\022conv2d/bias/read:02\037conv2d/bias/Initializer/zeros:08\001"
value: "\n\016dense/kernel:0\022\023dense/kernel/Assign\032\023dense/kernel/read:02)dense/kernel/Initializer/random_uniform:08\001"
value: "\n\014dense/bias:0\022\021dense/bias/Assign\032\021dense/bias/read:02\036dense/bias/Initializer/zeros:08\001"
value: "\n\020dense_1/kernel:0\022\025dense_1/kernel/Assign\032\025dense_1/kernel/read:02+dense_1/kernel/Initializer/random_uniform:08\001"
value: "\n\016dense_1/bias:0\022\023dense_1/bias/Assign\032\023dense_1/bias/read:02 dense_1/bias/Initializer/zeros:08\001"
}
}
}
collection_def {
key: "variables"
value {
bytes_list {
value: "\n\017conv2d/kernel:0\022\024conv2d/kernel/Assign\032\024conv2d/kernel/read:02*conv2d/kernel/Initializer/random_uniform:08\001"
value: "\n\rconv2d/bias:0\022\022conv2d/bias/Assign\032\022conv2d/bias/read:02\037conv2d/bias/Initializer/zeros:08\001"
value: "\n\016dense/kernel:0\022\023dense/kernel/Assign\032\023dense/kernel/read:02)dense/kernel/Initializer/random_uniform:08\001"
value: "\n\014dense/bias:0\022\021dense/bias/Assign\032\021dense/bias/read:02\036dense/bias/Initializer/zeros:08\001"
value: "\n\020dense_1/kernel:0\022\025dense_1/kernel/Assign\032\025dense_1/kernel/read:02+dense_1/kernel/Initializer/random_uniform:08\001"
value: "\n\016dense_1/bias:0\022\023dense_1/bias/Assign\032\023dense_1/bias/read:02 dense_1/bias/Initializer/zeros:08\001"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment