In [1]:
import tensorflow as tf
from keras.datasets import mnist
from keras.utils import np_utils
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['image.cmap'] = 'gray'
%matplotlib inline
Using TensorFlow backend.
Loading the model.
In [2]:
# Restore model.
sess = tf.Session()
#First let's load meta graph and restore weights
saver = tf.train.import_meta_graph('tf_mnist_model_layers/tf_mnist_model.ckpt.meta')
saver.restore(sess,tf.train.latest_checkpoint('tf_mnist_model_layers/'))
INFO:tensorflow:Restoring parameters from tf_mnist_model_layers/tf_mnist_model.ckpt
Loading the dataset
In [3]:
dataset = mnist.load_data()
train_data = dataset[0][0] / 255
train_data = train_data[..., np.newaxis].astype('float32')
train_labels = np_utils.to_categorical(dataset[0][1]).astype('float32')
test_data = dataset[1][0] / 255
test_data = test_data[..., np.newaxis].astype('float32')
test_labels = np_utils.to_categorical(dataset[1][1]).astype('float32')
plt.imshow(train_data[0, ..., 0])
Out[3]:
<matplotlib.image.AxesImage at 0x7fde82726518>
In [4]:
# Get the first input tensor.
network_input = sess.graph.get_operations()[0].outputs[0]
network_input
Out[4]:
<tf.Tensor 'Placeholder:0' shape=(?, 28, 28, 1) dtype=float32>
Look at all operations to find out the ones that are interesting for weights/activations.
In [5]:
sess.graph.get_operations()
Out[5]:
[<tf.Operation 'Placeholder' type=Placeholder>,
<tf.Operation 'Placeholder_1' type=Placeholder>,
<tf.Operation 'training/input' type=Const>,
<tf.Operation 'training' type=PlaceholderWithDefault>,
<tf.Operation 'conv2d_1/kernel/Initializer/truncated_normal/shape' type=Const>,
<tf.Operation 'conv2d_1/kernel/Initializer/truncated_normal/mean' type=Const>,
<tf.Operation 'conv2d_1/kernel/Initializer/truncated_normal/stddev' type=Const>,
<tf.Operation 'conv2d_1/kernel/Initializer/truncated_normal/TruncatedNormal' type=TruncatedNormal>,
<tf.Operation 'conv2d_1/kernel/Initializer/truncated_normal/mul' type=Mul>,
<tf.Operation 'conv2d_1/kernel/Initializer/truncated_normal' type=Add>,
<tf.Operation 'conv2d_1/kernel' type=VariableV2>,
<tf.Operation 'conv2d_1/kernel/Assign' type=Assign>,
<tf.Operation 'conv2d_1/kernel/read' type=Identity>,
<tf.Operation 'conv2d_1/bias/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_1/bias' type=VariableV2>,
<tf.Operation 'conv2d_1/bias/Assign' type=Assign>,
<tf.Operation 'conv2d_1/bias/read' type=Identity>,
<tf.Operation 'conv2d_1/convolution/Shape' type=Const>,
<tf.Operation 'conv2d_1/convolution/dilation_rate' type=Const>,
<tf.Operation 'conv2d_1/convolution' type=Conv2D>,
<tf.Operation 'conv2d_1/BiasAdd' type=BiasAdd>,
<tf.Operation 'conv2d_1/Relu' type=Relu>,
<tf.Operation 'max_pooling2d_1/MaxPool' type=MaxPool>,
<tf.Operation 'conv2d_2/kernel/Initializer/truncated_normal/shape' type=Const>,
<tf.Operation 'conv2d_2/kernel/Initializer/truncated_normal/mean' type=Const>,
<tf.Operation 'conv2d_2/kernel/Initializer/truncated_normal/stddev' type=Const>,
<tf.Operation 'conv2d_2/kernel/Initializer/truncated_normal/TruncatedNormal' type=TruncatedNormal>,
<tf.Operation 'conv2d_2/kernel/Initializer/truncated_normal/mul' type=Mul>,
<tf.Operation 'conv2d_2/kernel/Initializer/truncated_normal' type=Add>,
<tf.Operation 'conv2d_2/kernel' type=VariableV2>,
<tf.Operation 'conv2d_2/kernel/Assign' type=Assign>,
<tf.Operation 'conv2d_2/kernel/read' type=Identity>,
<tf.Operation 'conv2d_2/bias/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_2/bias' type=VariableV2>,
<tf.Operation 'conv2d_2/bias/Assign' type=Assign>,
<tf.Operation 'conv2d_2/bias/read' type=Identity>,
<tf.Operation 'conv2d_2/convolution/Shape' type=Const>,
<tf.Operation 'conv2d_2/convolution/dilation_rate' type=Const>,
<tf.Operation 'conv2d_2/convolution' type=Conv2D>,
<tf.Operation 'conv2d_2/BiasAdd' type=BiasAdd>,
<tf.Operation 'conv2d_2/Relu' type=Relu>,
<tf.Operation 'dropout_1/cond/Switch' type=Switch>,
<tf.Operation 'dropout_1/cond/switch_t' type=Identity>,
<tf.Operation 'dropout_1/cond/switch_f' type=Identity>,
<tf.Operation 'dropout_1/cond/pred_id' type=Identity>,
<tf.Operation 'dropout_1/cond/dropout/keep_prob' type=Const>,
<tf.Operation 'dropout_1/cond/dropout/Shape/Switch' type=Switch>,
<tf.Operation 'dropout_1/cond/dropout/Shape' type=Shape>,
<tf.Operation 'dropout_1/cond/dropout/random_uniform/min' type=Const>,
<tf.Operation 'dropout_1/cond/dropout/random_uniform/max' type=Const>,
<tf.Operation 'dropout_1/cond/dropout/random_uniform/RandomUniform' type=RandomUniform>,
<tf.Operation 'dropout_1/cond/dropout/random_uniform/sub' type=Sub>,
<tf.Operation 'dropout_1/cond/dropout/random_uniform/mul' type=Mul>,
<tf.Operation 'dropout_1/cond/dropout/random_uniform' type=Add>,
<tf.Operation 'dropout_1/cond/dropout/add' type=Add>,
<tf.Operation 'dropout_1/cond/dropout/Floor' type=Floor>,
<tf.Operation 'dropout_1/cond/dropout/div' type=RealDiv>,
<tf.Operation 'dropout_1/cond/dropout/mul' type=Mul>,
<tf.Operation 'dropout_1/cond/Identity/Switch' type=Switch>,
<tf.Operation 'dropout_1/cond/Identity' type=Identity>,
<tf.Operation 'dropout_1/cond/Merge' type=Merge>,
<tf.Operation 'Flatten/Shape' type=Shape>,
<tf.Operation 'Flatten/Slice/begin' type=Const>,
<tf.Operation 'Flatten/Slice/size' type=Const>,
<tf.Operation 'Flatten/Slice' type=Slice>,
<tf.Operation 'Flatten/Slice_1/begin' type=Const>,
<tf.Operation 'Flatten/Slice_1/size' type=Const>,
<tf.Operation 'Flatten/Slice_1' type=Slice>,
<tf.Operation 'Flatten/Const' type=Const>,
<tf.Operation 'Flatten/Prod' type=Prod>,
<tf.Operation 'Flatten/ExpandDims/dim' type=Const>,
<tf.Operation 'Flatten/ExpandDims' type=ExpandDims>,
<tf.Operation 'Flatten/concat/axis' type=Const>,
<tf.Operation 'Flatten/concat' type=ConcatV2>,
<tf.Operation 'Flatten/Reshape' type=Reshape>,
<tf.Operation 'dense_1/kernel/Initializer/random_uniform/shape' type=Const>,
<tf.Operation 'dense_1/kernel/Initializer/random_uniform/min' type=Const>,
<tf.Operation 'dense_1/kernel/Initializer/random_uniform/max' type=Const>,
<tf.Operation 'dense_1/kernel/Initializer/random_uniform/RandomUniform' type=RandomUniform>,
<tf.Operation 'dense_1/kernel/Initializer/random_uniform/sub' type=Sub>,
<tf.Operation 'dense_1/kernel/Initializer/random_uniform/mul' type=Mul>,
<tf.Operation 'dense_1/kernel/Initializer/random_uniform' type=Add>,
<tf.Operation 'dense_1/kernel' type=VariableV2>,
<tf.Operation 'dense_1/kernel/Assign' type=Assign>,
<tf.Operation 'dense_1/kernel/read' type=Identity>,
<tf.Operation 'dense_1/bias/Initializer/zeros' type=Const>,
<tf.Operation 'dense_1/bias' type=VariableV2>,
<tf.Operation 'dense_1/bias/Assign' type=Assign>,
<tf.Operation 'dense_1/bias/read' type=Identity>,
<tf.Operation 'dense_1/MatMul' type=MatMul>,
<tf.Operation 'dense_1/BiasAdd' type=BiasAdd>,
<tf.Operation 'dense_1/Relu' type=Relu>,
<tf.Operation 'dropout_2/cond/Switch' type=Switch>,
<tf.Operation 'dropout_2/cond/switch_t' type=Identity>,
<tf.Operation 'dropout_2/cond/switch_f' type=Identity>,
<tf.Operation 'dropout_2/cond/pred_id' type=Identity>,
<tf.Operation 'dropout_2/cond/dropout/keep_prob' type=Const>,
<tf.Operation 'dropout_2/cond/dropout/Shape/Switch' type=Switch>,
<tf.Operation 'dropout_2/cond/dropout/Shape' type=Shape>,
<tf.Operation 'dropout_2/cond/dropout/random_uniform/min' type=Const>,
<tf.Operation 'dropout_2/cond/dropout/random_uniform/max' type=Const>,
<tf.Operation 'dropout_2/cond/dropout/random_uniform/RandomUniform' type=RandomUniform>,
<tf.Operation 'dropout_2/cond/dropout/random_uniform/sub' type=Sub>,
<tf.Operation 'dropout_2/cond/dropout/random_uniform/mul' type=Mul>,
<tf.Operation 'dropout_2/cond/dropout/random_uniform' type=Add>,
<tf.Operation 'dropout_2/cond/dropout/add' type=Add>,
<tf.Operation 'dropout_2/cond/dropout/Floor' type=Floor>,
<tf.Operation 'dropout_2/cond/dropout/div' type=RealDiv>,
<tf.Operation 'dropout_2/cond/dropout/mul' type=Mul>,
<tf.Operation 'dropout_2/cond/Identity/Switch' type=Switch>,
<tf.Operation 'dropout_2/cond/Identity' type=Identity>,
<tf.Operation 'dropout_2/cond/Merge' type=Merge>,
<tf.Operation 'dense_2/kernel/Initializer/random_uniform/shape' type=Const>,
<tf.Operation 'dense_2/kernel/Initializer/random_uniform/min' type=Const>,
<tf.Operation 'dense_2/kernel/Initializer/random_uniform/max' type=Const>,
<tf.Operation 'dense_2/kernel/Initializer/random_uniform/RandomUniform' type=RandomUniform>,
<tf.Operation 'dense_2/kernel/Initializer/random_uniform/sub' type=Sub>,
<tf.Operation 'dense_2/kernel/Initializer/random_uniform/mul' type=Mul>,
<tf.Operation 'dense_2/kernel/Initializer/random_uniform' type=Add>,
<tf.Operation 'dense_2/kernel' type=VariableV2>,
<tf.Operation 'dense_2/kernel/Assign' type=Assign>,
<tf.Operation 'dense_2/kernel/read' type=Identity>,
<tf.Operation 'dense_2/bias/Initializer/zeros' type=Const>,
<tf.Operation 'dense_2/bias' type=VariableV2>,
<tf.Operation 'dense_2/bias/Assign' type=Assign>,
<tf.Operation 'dense_2/bias/read' type=Identity>,
<tf.Operation 'dense_2/MatMul' type=MatMul>,
<tf.Operation 'dense_2/BiasAdd' type=BiasAdd>,
<tf.Operation 'loss/Rank' type=Const>,
<tf.Operation 'loss/Shape' type=Shape>,
<tf.Operation 'loss/Rank_1' type=Const>,
<tf.Operation 'loss/Shape_1' type=Shape>,
<tf.Operation 'loss/Sub/y' type=Const>,
<tf.Operation 'loss/Sub' type=Sub>,
<tf.Operation 'loss/Slice/begin' type=Pack>,
<tf.Operation 'loss/Slice/size' type=Const>,
<tf.Operation 'loss/Slice' type=Slice>,
<tf.Operation 'loss/concat/values_0' type=Const>,
<tf.Operation 'loss/concat/axis' type=Const>,
<tf.Operation 'loss/concat' type=ConcatV2>,
<tf.Operation 'loss/Reshape' type=Reshape>,
<tf.Operation 'loss/Rank_2' type=Const>,
<tf.Operation 'loss/Shape_2' type=Shape>,
<tf.Operation 'loss/Sub_1/y' type=Const>,
<tf.Operation 'loss/Sub_1' type=Sub>,
<tf.Operation 'loss/Slice_1/begin' type=Pack>,
<tf.Operation 'loss/Slice_1/size' type=Const>,
<tf.Operation 'loss/Slice_1' type=Slice>,
<tf.Operation 'loss/concat_1/values_0' type=Const>,
<tf.Operation 'loss/concat_1/axis' type=Const>,
<tf.Operation 'loss/concat_1' type=ConcatV2>,
<tf.Operation 'loss/Reshape_1' type=Reshape>,
<tf.Operation 'loss/SoftmaxCrossEntropyWithLogits' type=SoftmaxCrossEntropyWithLogits>,
<tf.Operation 'loss/Sub_2/y' type=Const>,
<tf.Operation 'loss/Sub_2' type=Sub>,
<tf.Operation 'loss/Slice_2/begin' type=Const>,
<tf.Operation 'loss/Slice_2/size' type=Pack>,
<tf.Operation 'loss/Slice_2' type=Slice>,
<tf.Operation 'loss/Reshape_2' type=Reshape>,
<tf.Operation 'loss/Const' type=Const>,
<tf.Operation 'loss/Mean' type=Mean>,
<tf.Operation 'gradients/Shape' type=Const>,
<tf.Operation 'gradients/Const' type=Const>,
<tf.Operation 'gradients/Fill' type=Fill>,
<tf.Operation 'gradients/loss/Mean_grad/Reshape/shape' type=Const>,
<tf.Operation 'gradients/loss/Mean_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/loss/Mean_grad/Shape' type=Shape>,
<tf.Operation 'gradients/loss/Mean_grad/Tile' type=Tile>,
<tf.Operation 'gradients/loss/Mean_grad/Shape_1' type=Shape>,
<tf.Operation 'gradients/loss/Mean_grad/Shape_2' type=Const>,
<tf.Operation 'gradients/loss/Mean_grad/Const' type=Const>,
<tf.Operation 'gradients/loss/Mean_grad/Prod' type=Prod>,
<tf.Operation 'gradients/loss/Mean_grad/Const_1' type=Const>,
<tf.Operation 'gradients/loss/Mean_grad/Prod_1' type=Prod>,
<tf.Operation 'gradients/loss/Mean_grad/Maximum/y' type=Const>,
<tf.Operation 'gradients/loss/Mean_grad/Maximum' type=Maximum>,
<tf.Operation 'gradients/loss/Mean_grad/floordiv' type=FloorDiv>,
<tf.Operation 'gradients/loss/Mean_grad/Cast' type=Cast>,
<tf.Operation 'gradients/loss/Mean_grad/truediv' type=RealDiv>,
<tf.Operation 'gradients/loss/Reshape_2_grad/Shape' type=Shape>,
<tf.Operation 'gradients/loss/Reshape_2_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/zeros_like' type=ZerosLike>,
<tf.Operation 'gradients/loss/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim' type=Const>,
<tf.Operation 'gradients/loss/SoftmaxCrossEntropyWithLogits_grad/ExpandDims' type=ExpandDims>,
<tf.Operation 'gradients/loss/SoftmaxCrossEntropyWithLogits_grad/mul' type=Mul>,
<tf.Operation 'gradients/loss/Reshape_grad/Shape' type=Shape>,
<tf.Operation 'gradients/loss/Reshape_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/dense_2/BiasAdd_grad/BiasAddGrad' type=BiasAddGrad>,
<tf.Operation 'gradients/dense_2/BiasAdd_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dense_2/BiasAdd_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dense_2/BiasAdd_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/dense_2/MatMul_grad/MatMul' type=MatMul>,
<tf.Operation 'gradients/dense_2/MatMul_grad/MatMul_1' type=MatMul>,
<tf.Operation 'gradients/dense_2/MatMul_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dense_2/MatMul_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dense_2/MatMul_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/dropout_2/cond/Merge_grad/cond_grad' type=Switch>,
<tf.Operation 'gradients/dropout_2/cond/Merge_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dropout_2/cond/Merge_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dropout_2/cond/Merge_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/Shape' type=Shape>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/Shape_1' type=Shape>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/BroadcastGradientArgs' type=BroadcastGradientArgs>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/mul' type=Mul>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/Sum' type=Sum>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/mul_1' type=Mul>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/Sum_1' type=Sum>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/Reshape_1' type=Reshape>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dropout_2/cond/dropout/mul_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/Switch' type=Switch>,
<tf.Operation 'gradients/Shape_1' type=Shape>,
<tf.Operation 'gradients/zeros/Const' type=Const>,
<tf.Operation 'gradients/zeros' type=Fill>,
<tf.Operation 'gradients/dropout_2/cond/Identity/Switch_grad/cond_grad' type=Merge>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/Shape' type=Shape>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/Shape_1' type=Const>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/BroadcastGradientArgs' type=BroadcastGradientArgs>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/RealDiv' type=RealDiv>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/Sum' type=Sum>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/Neg' type=Neg>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/RealDiv_1' type=RealDiv>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/RealDiv_2' type=RealDiv>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/mul' type=Mul>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/Sum_1' type=Sum>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/Reshape_1' type=Reshape>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dropout_2/cond/dropout/div_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/Switch_1' type=Switch>,
<tf.Operation 'gradients/Shape_2' type=Shape>,
<tf.Operation 'gradients/zeros_1/Const' type=Const>,
<tf.Operation 'gradients/zeros_1' type=Fill>,
<tf.Operation 'gradients/dropout_2/cond/dropout/Shape/Switch_grad/cond_grad' type=Merge>,
<tf.Operation 'gradients/AddN' type=AddN>,
<tf.Operation 'gradients/dense_1/Relu_grad/ReluGrad' type=ReluGrad>,
<tf.Operation 'gradients/dense_1/BiasAdd_grad/BiasAddGrad' type=BiasAddGrad>,
<tf.Operation 'gradients/dense_1/BiasAdd_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dense_1/BiasAdd_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dense_1/BiasAdd_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/dense_1/MatMul_grad/MatMul' type=MatMul>,
<tf.Operation 'gradients/dense_1/MatMul_grad/MatMul_1' type=MatMul>,
<tf.Operation 'gradients/dense_1/MatMul_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dense_1/MatMul_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dense_1/MatMul_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/Flatten/Reshape_grad/Shape' type=Shape>,
<tf.Operation 'gradients/Flatten/Reshape_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/dropout_1/cond/Merge_grad/cond_grad' type=Switch>,
<tf.Operation 'gradients/dropout_1/cond/Merge_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dropout_1/cond/Merge_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dropout_1/cond/Merge_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/Shape' type=Shape>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/Shape_1' type=Shape>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/BroadcastGradientArgs' type=BroadcastGradientArgs>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/mul' type=Mul>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/Sum' type=Sum>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/mul_1' type=Mul>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/Sum_1' type=Sum>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/Reshape_1' type=Reshape>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dropout_1/cond/dropout/mul_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/Switch_2' type=Switch>,
<tf.Operation 'gradients/Shape_3' type=Shape>,
<tf.Operation 'gradients/zeros_2/Const' type=Const>,
<tf.Operation 'gradients/zeros_2' type=Fill>,
<tf.Operation 'gradients/dropout_1/cond/Identity/Switch_grad/cond_grad' type=Merge>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/Shape' type=Shape>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/Shape_1' type=Const>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/BroadcastGradientArgs' type=BroadcastGradientArgs>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/RealDiv' type=RealDiv>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/Sum' type=Sum>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/Reshape' type=Reshape>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/Neg' type=Neg>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/RealDiv_1' type=RealDiv>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/RealDiv_2' type=RealDiv>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/mul' type=Mul>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/Sum_1' type=Sum>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/Reshape_1' type=Reshape>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/dropout_1/cond/dropout/div_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/Switch_3' type=Switch>,
<tf.Operation 'gradients/Shape_4' type=Shape>,
<tf.Operation 'gradients/zeros_3/Const' type=Const>,
<tf.Operation 'gradients/zeros_3' type=Fill>,
<tf.Operation 'gradients/dropout_1/cond/dropout/Shape/Switch_grad/cond_grad' type=Merge>,
<tf.Operation 'gradients/AddN_1' type=AddN>,
<tf.Operation 'gradients/conv2d_2/Relu_grad/ReluGrad' type=ReluGrad>,
<tf.Operation 'gradients/conv2d_2/BiasAdd_grad/BiasAddGrad' type=BiasAddGrad>,
<tf.Operation 'gradients/conv2d_2/BiasAdd_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/conv2d_2/BiasAdd_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/conv2d_2/BiasAdd_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/conv2d_2/convolution_grad/Shape' type=Shape>,
<tf.Operation 'gradients/conv2d_2/convolution_grad/Conv2DBackpropInput' type=Conv2DBackpropInput>,
<tf.Operation 'gradients/conv2d_2/convolution_grad/Shape_1' type=Const>,
<tf.Operation 'gradients/conv2d_2/convolution_grad/Conv2DBackpropFilter' type=Conv2DBackpropFilter>,
<tf.Operation 'gradients/conv2d_2/convolution_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/conv2d_2/convolution_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/conv2d_2/convolution_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/max_pooling2d_1/MaxPool_grad/MaxPoolGrad' type=MaxPoolGrad>,
<tf.Operation 'gradients/conv2d_1/Relu_grad/ReluGrad' type=ReluGrad>,
<tf.Operation 'gradients/conv2d_1/BiasAdd_grad/BiasAddGrad' type=BiasAddGrad>,
<tf.Operation 'gradients/conv2d_1/BiasAdd_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/conv2d_1/BiasAdd_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/conv2d_1/BiasAdd_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/Shape' type=Shape>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/Conv2DBackpropInput' type=Conv2DBackpropInput>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/Shape_1' type=Const>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/Conv2DBackpropFilter' type=Conv2DBackpropFilter>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/tuple/group_deps' type=NoOp>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/tuple/control_dependency' type=Identity>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/tuple/control_dependency_1' type=Identity>,
<tf.Operation 'beta1_power/initial_value' type=Const>,
<tf.Operation 'beta1_power' type=VariableV2>,
<tf.Operation 'beta1_power/Assign' type=Assign>,
<tf.Operation 'beta1_power/read' type=Identity>,
<tf.Operation 'beta2_power/initial_value' type=Const>,
<tf.Operation 'beta2_power' type=VariableV2>,
<tf.Operation 'beta2_power/Assign' type=Assign>,
<tf.Operation 'beta2_power/read' type=Identity>,
<tf.Operation 'conv2d_1/kernel/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_1/kernel/Adam' type=VariableV2>,
<tf.Operation 'conv2d_1/kernel/Adam/Assign' type=Assign>,
<tf.Operation 'conv2d_1/kernel/Adam/read' type=Identity>,
<tf.Operation 'conv2d_1/kernel/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_1/kernel/Adam_1' type=VariableV2>,
<tf.Operation 'conv2d_1/kernel/Adam_1/Assign' type=Assign>,
<tf.Operation 'conv2d_1/kernel/Adam_1/read' type=Identity>,
<tf.Operation 'conv2d_1/bias/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_1/bias/Adam' type=VariableV2>,
<tf.Operation 'conv2d_1/bias/Adam/Assign' type=Assign>,
<tf.Operation 'conv2d_1/bias/Adam/read' type=Identity>,
<tf.Operation 'conv2d_1/bias/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_1/bias/Adam_1' type=VariableV2>,
<tf.Operation 'conv2d_1/bias/Adam_1/Assign' type=Assign>,
<tf.Operation 'conv2d_1/bias/Adam_1/read' type=Identity>,
<tf.Operation 'conv2d_2/kernel/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_2/kernel/Adam' type=VariableV2>,
<tf.Operation 'conv2d_2/kernel/Adam/Assign' type=Assign>,
<tf.Operation 'conv2d_2/kernel/Adam/read' type=Identity>,
<tf.Operation 'conv2d_2/kernel/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_2/kernel/Adam_1' type=VariableV2>,
<tf.Operation 'conv2d_2/kernel/Adam_1/Assign' type=Assign>,
<tf.Operation 'conv2d_2/kernel/Adam_1/read' type=Identity>,
<tf.Operation 'conv2d_2/bias/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_2/bias/Adam' type=VariableV2>,
<tf.Operation 'conv2d_2/bias/Adam/Assign' type=Assign>,
<tf.Operation 'conv2d_2/bias/Adam/read' type=Identity>,
<tf.Operation 'conv2d_2/bias/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'conv2d_2/bias/Adam_1' type=VariableV2>,
<tf.Operation 'conv2d_2/bias/Adam_1/Assign' type=Assign>,
<tf.Operation 'conv2d_2/bias/Adam_1/read' type=Identity>,
<tf.Operation 'dense_1/kernel/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'dense_1/kernel/Adam' type=VariableV2>,
<tf.Operation 'dense_1/kernel/Adam/Assign' type=Assign>,
<tf.Operation 'dense_1/kernel/Adam/read' type=Identity>,
<tf.Operation 'dense_1/kernel/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'dense_1/kernel/Adam_1' type=VariableV2>,
<tf.Operation 'dense_1/kernel/Adam_1/Assign' type=Assign>,
<tf.Operation 'dense_1/kernel/Adam_1/read' type=Identity>,
<tf.Operation 'dense_1/bias/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'dense_1/bias/Adam' type=VariableV2>,
<tf.Operation 'dense_1/bias/Adam/Assign' type=Assign>,
<tf.Operation 'dense_1/bias/Adam/read' type=Identity>,
<tf.Operation 'dense_1/bias/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'dense_1/bias/Adam_1' type=VariableV2>,
<tf.Operation 'dense_1/bias/Adam_1/Assign' type=Assign>,
<tf.Operation 'dense_1/bias/Adam_1/read' type=Identity>,
<tf.Operation 'dense_2/kernel/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'dense_2/kernel/Adam' type=VariableV2>,
<tf.Operation 'dense_2/kernel/Adam/Assign' type=Assign>,
<tf.Operation 'dense_2/kernel/Adam/read' type=Identity>,
<tf.Operation 'dense_2/kernel/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'dense_2/kernel/Adam_1' type=VariableV2>,
<tf.Operation 'dense_2/kernel/Adam_1/Assign' type=Assign>,
<tf.Operation 'dense_2/kernel/Adam_1/read' type=Identity>,
<tf.Operation 'dense_2/bias/Adam/Initializer/zeros' type=Const>,
<tf.Operation 'dense_2/bias/Adam' type=VariableV2>,
<tf.Operation 'dense_2/bias/Adam/Assign' type=Assign>,
<tf.Operation 'dense_2/bias/Adam/read' type=Identity>,
<tf.Operation 'dense_2/bias/Adam_1/Initializer/zeros' type=Const>,
<tf.Operation 'dense_2/bias/Adam_1' type=VariableV2>,
<tf.Operation 'dense_2/bias/Adam_1/Assign' type=Assign>,
<tf.Operation 'dense_2/bias/Adam_1/read' type=Identity>,
<tf.Operation 'Adam/learning_rate' type=Const>,
<tf.Operation 'Adam/beta1' type=Const>,
<tf.Operation 'Adam/beta2' type=Const>,
<tf.Operation 'Adam/epsilon' type=Const>,
<tf.Operation 'Adam/update_conv2d_1/kernel/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/update_conv2d_1/bias/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/update_conv2d_2/kernel/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/update_conv2d_2/bias/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/update_dense_1/kernel/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/update_dense_1/bias/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/update_dense_2/kernel/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/update_dense_2/bias/ApplyAdam' type=ApplyAdam>,
<tf.Operation 'Adam/mul' type=Mul>,
<tf.Operation 'Adam/Assign' type=Assign>,
<tf.Operation 'Adam/mul_1' type=Mul>,
<tf.Operation 'Adam/Assign_1' type=Assign>,
<tf.Operation 'Adam' type=NoOp>,
<tf.Operation 'ArgMax/dimension' type=Const>,
<tf.Operation 'ArgMax' type=ArgMax>,
<tf.Operation 'ArgMax_1/dimension' type=Const>,
<tf.Operation 'ArgMax_1' type=ArgMax>,
<tf.Operation 'Equal' type=Equal>,
<tf.Operation 'Cast' type=Cast>,
<tf.Operation 'Const' type=Const>,
<tf.Operation 'Mean' type=Mean>,
<tf.Operation 'init' type=NoOp>,
<tf.Operation 'save/Const' type=Const>,
<tf.Operation 'save/SaveV2/tensor_names' type=Const>,
<tf.Operation 'save/SaveV2/shape_and_slices' type=Const>,
<tf.Operation 'save/SaveV2' type=SaveV2>,
<tf.Operation 'save/control_dependency' type=Identity>,
<tf.Operation 'save/RestoreV2/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2' type=RestoreV2>,
<tf.Operation 'save/Assign' type=Assign>,
<tf.Operation 'save/RestoreV2_1/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_1/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_1' type=RestoreV2>,
<tf.Operation 'save/Assign_1' type=Assign>,
<tf.Operation 'save/RestoreV2_2/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_2/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_2' type=RestoreV2>,
<tf.Operation 'save/Assign_2' type=Assign>,
<tf.Operation 'save/RestoreV2_3/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_3/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_3' type=RestoreV2>,
<tf.Operation 'save/Assign_3' type=Assign>,
<tf.Operation 'save/RestoreV2_4/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_4/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_4' type=RestoreV2>,
<tf.Operation 'save/Assign_4' type=Assign>,
<tf.Operation 'save/RestoreV2_5/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_5/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_5' type=RestoreV2>,
<tf.Operation 'save/Assign_5' type=Assign>,
<tf.Operation 'save/RestoreV2_6/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_6/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_6' type=RestoreV2>,
<tf.Operation 'save/Assign_6' type=Assign>,
<tf.Operation 'save/RestoreV2_7/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_7/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_7' type=RestoreV2>,
<tf.Operation 'save/Assign_7' type=Assign>,
<tf.Operation 'save/RestoreV2_8/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_8/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_8' type=RestoreV2>,
<tf.Operation 'save/Assign_8' type=Assign>,
<tf.Operation 'save/RestoreV2_9/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_9/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_9' type=RestoreV2>,
<tf.Operation 'save/Assign_9' type=Assign>,
<tf.Operation 'save/RestoreV2_10/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_10/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_10' type=RestoreV2>,
<tf.Operation 'save/Assign_10' type=Assign>,
<tf.Operation 'save/RestoreV2_11/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_11/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_11' type=RestoreV2>,
<tf.Operation 'save/Assign_11' type=Assign>,
<tf.Operation 'save/RestoreV2_12/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_12/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_12' type=RestoreV2>,
<tf.Operation 'save/Assign_12' type=Assign>,
<tf.Operation 'save/RestoreV2_13/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_13/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_13' type=RestoreV2>,
<tf.Operation 'save/Assign_13' type=Assign>,
<tf.Operation 'save/RestoreV2_14/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_14/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_14' type=RestoreV2>,
<tf.Operation 'save/Assign_14' type=Assign>,
<tf.Operation 'save/RestoreV2_15/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_15/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_15' type=RestoreV2>,
<tf.Operation 'save/Assign_15' type=Assign>,
<tf.Operation 'save/RestoreV2_16/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_16/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_16' type=RestoreV2>,
<tf.Operation 'save/Assign_16' type=Assign>,
<tf.Operation 'save/RestoreV2_17/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_17/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_17' type=RestoreV2>,
<tf.Operation 'save/Assign_17' type=Assign>,
<tf.Operation 'save/RestoreV2_18/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_18/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_18' type=RestoreV2>,
<tf.Operation 'save/Assign_18' type=Assign>,
<tf.Operation 'save/RestoreV2_19/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_19/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_19' type=RestoreV2>,
<tf.Operation 'save/Assign_19' type=Assign>,
<tf.Operation 'save/RestoreV2_20/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_20/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_20' type=RestoreV2>,
<tf.Operation 'save/Assign_20' type=Assign>,
<tf.Operation 'save/RestoreV2_21/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_21/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_21' type=RestoreV2>,
<tf.Operation 'save/Assign_21' type=Assign>,
<tf.Operation 'save/RestoreV2_22/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_22/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_22' type=RestoreV2>,
<tf.Operation 'save/Assign_22' type=Assign>,
<tf.Operation 'save/RestoreV2_23/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_23/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_23' type=RestoreV2>,
<tf.Operation 'save/Assign_23' type=Assign>,
<tf.Operation 'save/RestoreV2_24/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_24/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_24' type=RestoreV2>,
<tf.Operation 'save/Assign_24' type=Assign>,
<tf.Operation 'save/RestoreV2_25/tensor_names' type=Const>,
<tf.Operation 'save/RestoreV2_25/shape_and_slices' type=Const>,
<tf.Operation 'save/RestoreV2_25' type=RestoreV2>,
<tf.Operation 'save/Assign_25' type=Assign>,
<tf.Operation 'save/restore_all' type=NoOp>]
TensorFlow exposes a graph API in which nodes correspond to operations and directed edges correspond to to tensors flowing from one operation to the next. Operations know their respective input and output tensors. Tensors know by which operations they get produced and for which operations they serve as input. c.f. https://www.tensorflow.org/extend/tool_developers/
In [6]:
conv_op = sess.graph.get_operation_by_name('conv2d_1/convolution')
print('inputs: ', list(conv_op.inputs))
print('outputs: ', list(conv_op.outputs))
inputs: [<tf.Tensor 'Placeholder:0' shape=(?, 28, 28, 1) dtype=float32>, <tf.Tensor 'conv2d_1/kernel/read:0' shape=(3, 3, 1, 32) dtype=float32>]
outputs: [<tf.Tensor 'conv2d_1/convolution:0' shape=(?, 26, 26, 32) dtype=float32>]
In [7]:
weight_tensor = conv_op.inputs[1]
weight_tensor
Out[7]:
<tf.Tensor 'conv2d_1/kernel/read:0' shape=(3, 3, 1, 32) dtype=float32>
In [10]:
# Producer ops for the tensor.
weight_tensor.op
Out[10]:
<tf.Operation 'conv2d_1/kernel/read' type=Identity>
In [11]:
# Consumer ops for the tensor.
weight_tensor.consumers()
Out[11]:
[<tf.Operation 'conv2d_1/convolution' type=Conv2D>,
<tf.Operation 'gradients/conv2d_1/convolution_grad/Conv2DBackpropInput' type=Conv2DBackpropInput>]
In [18]:
weight_read_op = sess.graph.get_operation_by_name('conv2d_1/kernel/read')
weight_read_op
Out[18]:
<tf.Operation 'conv2d_1/kernel/read' type=Identity>
In [19]:
conv_op = sess.graph.get_operation_by_name('conv2d_1/convolution')
conv_op
Out[19]:
<tf.Operation 'conv2d_1/convolution' type=Conv2D>
In [20]:
weights_1 = sess.run(weight_read_op.outputs[0])
weights_2 = sess.run(conv_op.inputs[-1])
np.all(weights_1 == weights_2)
Out[20]:
True
Looking at the actual kernels.
In [21]:
print(weights_1.shape)
for i in range(32):
plt.imshow(weights_1[..., 0, i])
plt.show()
(3, 3, 1, 32)
In [22]:
weights_1[..., 0, 0]
Out[22]:
array([[-0.08219472, 0.01501322, 0.03917561],
[ 0.13132864, 0.04290215, -0.04941976],
[-0.05186096, -0.03700988, 0.18301845]], dtype=float32)
The same goes for the bias.
In [23]:
bias_add_op = sess.graph.get_operation_by_name('conv2d_1/BiasAdd')
bias_add_op
Out[23]:
<tf.Operation 'conv2d_1/BiasAdd' type=BiasAdd>
In [24]:
bias = sess.run(bias_add_op.inputs[-1])
bias
Out[24]:
array([ 2.55220849e-03, -6.17763377e-04, 4.65408294e-03,
1.22981519e-02, -2.34646210e-03, -2.23787036e-04,
-3.72230512e-04, 2.21268404e-02, 2.86802351e-02,
-5.76844672e-03, -2.51290301e-04, 1.05109112e-02,
4.26664911e-02, -4.79708280e-04, -1.47018407e-04,
3.36357169e-02, 7.37800947e-05, 8.38877633e-04,
7.63600506e-03, 2.40804045e-04, 8.00278410e-03,
-1.05535528e-02, 3.01947235e-03, 9.05721821e-03,
2.59847904e-04, 8.11665133e-03, -1.28647589e-04,
3.09362952e-02, -2.05803127e-03, -3.35510704e-04,
1.95620786e-02, -4.01624449e-04], dtype=float32)
In [30]:
activation_op = sess.graph.get_operation_by_name('conv2d_1/Relu')
activation_op.outputs[0]
Out[30]:
<tf.Tensor 'conv2d_1/Relu:0' shape=(?, 26, 26, 32) dtype=float32>
In [31]:
activations = sess.run(activation_op.outputs[0], feed_dict={network_input: test_data[0:1]})
activations.shape
Out[31]:
(1, 26, 26, 32)
Look at the activations
In [35]:
for i in range(32):
plt.imshow(activations[0, ..., i])
plt.show()
In [36]:
activations[0, 5:10, 5:10, 0]
Out[36]:
array([[ 0.12313882, 0.07273569, 0.05022647, 0. , 0. ],
[ 0.1309115 , 0.14641027, 0.18909475, 0.19199452, 0.16788514],
[ 0.09613925, 0.1401405 , 0.14798687, 0.1795305 , 0.20586434],
[ 0.04382331, 0.0247027 , 0.02338777, 0. , 0.02700226],
[ 0.02401066, 0. , 0. , 0.01109774, 0.00698234]], dtype=float32)
In [39]:
net_input_op = sess.graph.get_operation_by_name('conv2d_1/BiasAdd')
net_input_op.outputs[0]
Out[39]:
<tf.Tensor 'conv2d_1/BiasAdd:0' shape=(?, 26, 26, 32) dtype=float32>
In [40]:
net_inputs = sess.run(net_input_op.outputs[0], feed_dict={network_input: test_data[0:1]})
net_inputs.shape
Out[40]:
(1, 26, 26, 32)
In [41]:
for i in range(32):
plt.imshow(net_inputs[0, ..., i])
plt.show()
In [42]:
net_inputs[0, 5:10, 5:10, 0]
Out[42]:
array([[ 0.12313882, 0.07273569, 0.05022647, -0.00863712, -0.01102792],
[ 0.1309115 , 0.14641027, 0.18909475, 0.19199452, 0.16788514],
[ 0.09613925, 0.1401405 , 0.14798687, 0.1795305 , 0.20586434],
[ 0.04382331, 0.0247027 , 0.02338777, -0.00067293, 0.02700226],
[ 0.02401066, -0.00127091, -0.01244084, 0.01109774, 0.00698234]], dtype=float32)
In [64]:
conv_op.inputs[0].shape
Out[64]:
TensorShape([Dimension(None), Dimension(28), Dimension(28), Dimension(1)])
In [65]:
conv_op.inputs[0].shape.as_list()
Out[65]:
[None, 28, 28, 1]
In [50]:
sess.graph_def
Out[50]:
node {
name: "Placeholder"
op: "Placeholder"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: -1
}
dim {
size: 28
}
dim {
size: 28
}
dim {
size: 1
}
}
}
}
}
node {
name: "Placeholder_1"
op: "Placeholder"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: -1
}
dim {
size: 10
}
}
}
}
}
node {
name: "training/input"
op: "Const"
attr {
key: "dtype"
value {
type: DT_BOOL
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_BOOL
tensor_shape {
}
bool_val: false
}
}
}
}
node {
name: "training"
op: "PlaceholderWithDefault"
input: "training/input"
attr {
key: "dtype"
value {
type: DT_BOOL
}
}
attr {
key: "shape"
value {
shape {
}
}
}
}
node {
name: "conv2d_1/kernel/Initializer/truncated_normal/shape"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "\003\000\000\000\003\000\000\000\001\000\000\000 \000\000\000"
}
}
}
}
node {
name: "conv2d_1/kernel/Initializer/truncated_normal/mean"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "conv2d_1/kernel/Initializer/truncated_normal/stddev"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.10000000149011612
}
}
}
}
node {
name: "conv2d_1/kernel/Initializer/truncated_normal/TruncatedNormal"
op: "TruncatedNormal"
input: "conv2d_1/kernel/Initializer/truncated_normal/shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "conv2d_1/kernel/Initializer/truncated_normal/mul"
op: "Mul"
input: "conv2d_1/kernel/Initializer/truncated_normal/TruncatedNormal"
input: "conv2d_1/kernel/Initializer/truncated_normal/stddev"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
}
node {
name: "conv2d_1/kernel/Initializer/truncated_normal"
op: "Add"
input: "conv2d_1/kernel/Initializer/truncated_normal/mul"
input: "conv2d_1/kernel/Initializer/truncated_normal/mean"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
}
node {
name: "conv2d_1/kernel"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d_1/kernel/Assign"
op: "Assign"
input: "conv2d_1/kernel"
input: "conv2d_1/kernel/Initializer/truncated_normal"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_1/kernel/read"
op: "Identity"
input: "conv2d_1/kernel"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
}
node {
name: "conv2d_1/bias/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
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_1/bias"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
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_1/bias/Assign"
op: "Assign"
input: "conv2d_1/bias"
input: "conv2d_1/bias/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_1/bias/read"
op: "Identity"
input: "conv2d_1/bias"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
}
node {
name: "conv2d_1/convolution/Shape"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "\003\000\000\000\003\000\000\000\001\000\000\000 \000\000\000"
}
}
}
}
node {
name: "conv2d_1/convolution/dilation_rate"
op: "Const"
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_1/convolution"
op: "Conv2D"
input: "Placeholder"
input: "conv2d_1/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
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_1/BiasAdd"
op: "BiasAdd"
input: "conv2d_1/convolution"
input: "conv2d_1/bias/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "conv2d_1/Relu"
op: "Relu"
input: "conv2d_1/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "max_pooling2d_1/MaxPool"
op: "MaxPool"
input: "conv2d_1/Relu"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
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: "conv2d_2/kernel/Initializer/truncated_normal/shape"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "\003\000\000\000\003\000\000\000 \000\000\000 \000\000\000"
}
}
}
}
node {
name: "conv2d_2/kernel/Initializer/truncated_normal/mean"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "conv2d_2/kernel/Initializer/truncated_normal/stddev"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.10000000149011612
}
}
}
}
node {
name: "conv2d_2/kernel/Initializer/truncated_normal/TruncatedNormal"
op: "TruncatedNormal"
input: "conv2d_2/kernel/Initializer/truncated_normal/shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "conv2d_2/kernel/Initializer/truncated_normal/mul"
op: "Mul"
input: "conv2d_2/kernel/Initializer/truncated_normal/TruncatedNormal"
input: "conv2d_2/kernel/Initializer/truncated_normal/stddev"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
}
node {
name: "conv2d_2/kernel/Initializer/truncated_normal"
op: "Add"
input: "conv2d_2/kernel/Initializer/truncated_normal/mul"
input: "conv2d_2/kernel/Initializer/truncated_normal/mean"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
}
node {
name: "conv2d_2/kernel"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 32
}
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d_2/kernel/Assign"
op: "Assign"
input: "conv2d_2/kernel"
input: "conv2d_2/kernel/Initializer/truncated_normal"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_2/kernel/read"
op: "Identity"
input: "conv2d_2/kernel"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
}
node {
name: "conv2d_2/bias/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
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_2/bias"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
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_2/bias/Assign"
op: "Assign"
input: "conv2d_2/bias"
input: "conv2d_2/bias/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_2/bias/read"
op: "Identity"
input: "conv2d_2/bias"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
}
node {
name: "conv2d_2/convolution/Shape"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "\003\000\000\000\003\000\000\000 \000\000\000 \000\000\000"
}
}
}
}
node {
name: "conv2d_2/convolution/dilation_rate"
op: "Const"
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_2/convolution"
op: "Conv2D"
input: "max_pooling2d_1/MaxPool"
input: "conv2d_2/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
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_2/BiasAdd"
op: "BiasAdd"
input: "conv2d_2/convolution"
input: "conv2d_2/bias/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "conv2d_2/Relu"
op: "Relu"
input: "conv2d_2/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/Switch"
op: "Switch"
input: "training"
input: "training"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_1/cond/switch_t"
op: "Identity"
input: "dropout_1/cond/Switch:1"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_1/cond/switch_f"
op: "Identity"
input: "dropout_1/cond/Switch"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_1/cond/pred_id"
op: "Identity"
input: "training"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_1/cond/dropout/keep_prob"
op: "Const"
input: "^dropout_1/cond/switch_t"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.75
}
}
}
}
node {
name: "dropout_1/cond/dropout/Shape/Switch"
op: "Switch"
input: "conv2d_2/Relu"
input: "dropout_1/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/Relu"
}
}
}
}
node {
name: "dropout_1/cond/dropout/Shape"
op: "Shape"
input: "dropout_1/cond/dropout/Shape/Switch:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "dropout_1/cond/dropout/random_uniform/min"
op: "Const"
input: "^dropout_1/cond/switch_t"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "dropout_1/cond/dropout/random_uniform/max"
op: "Const"
input: "^dropout_1/cond/switch_t"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 1.0
}
}
}
}
node {
name: "dropout_1/cond/dropout/random_uniform/RandomUniform"
op: "RandomUniform"
input: "dropout_1/cond/dropout/Shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "dropout_1/cond/dropout/random_uniform/sub"
op: "Sub"
input: "dropout_1/cond/dropout/random_uniform/max"
input: "dropout_1/cond/dropout/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/dropout/random_uniform/mul"
op: "Mul"
input: "dropout_1/cond/dropout/random_uniform/RandomUniform"
input: "dropout_1/cond/dropout/random_uniform/sub"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/dropout/random_uniform"
op: "Add"
input: "dropout_1/cond/dropout/random_uniform/mul"
input: "dropout_1/cond/dropout/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/dropout/add"
op: "Add"
input: "dropout_1/cond/dropout/keep_prob"
input: "dropout_1/cond/dropout/random_uniform"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/dropout/Floor"
op: "Floor"
input: "dropout_1/cond/dropout/add"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/dropout/div"
op: "RealDiv"
input: "dropout_1/cond/dropout/Shape/Switch:1"
input: "dropout_1/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/dropout/mul"
op: "Mul"
input: "dropout_1/cond/dropout/div"
input: "dropout_1/cond/dropout/Floor"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/Identity/Switch"
op: "Switch"
input: "conv2d_2/Relu"
input: "dropout_1/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/Relu"
}
}
}
}
node {
name: "dropout_1/cond/Identity"
op: "Identity"
input: "dropout_1/cond/Identity/Switch"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_1/cond/Merge"
op: "Merge"
input: "dropout_1/cond/Identity"
input: "dropout_1/cond/dropout/mul"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "Flatten/Shape"
op: "Shape"
input: "dropout_1/cond/Merge"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "Flatten/Slice/begin"
op: "Const"
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/Slice/size"
op: "Const"
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/Slice"
op: "Slice"
input: "Flatten/Shape"
input: "Flatten/Slice/begin"
input: "Flatten/Slice/size"
attr {
key: "Index"
value {
type: DT_INT32
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "Flatten/Slice_1/begin"
op: "Const"
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/Slice_1/size"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 1
}
}
int_val: 3
}
}
}
}
node {
name: "Flatten/Slice_1"
op: "Slice"
input: "Flatten/Shape"
input: "Flatten/Slice_1/begin"
input: "Flatten/Slice_1/size"
attr {
key: "Index"
value {
type: DT_INT32
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "Flatten/Const"
op: "Const"
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/Prod"
op: "Prod"
input: "Flatten/Slice_1"
input: "Flatten/Const"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "Flatten/ExpandDims/dim"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 0
}
}
}
}
node {
name: "Flatten/ExpandDims"
op: "ExpandDims"
input: "Flatten/Prod"
input: "Flatten/ExpandDims/dim"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "Tdim"
value {
type: DT_INT32
}
}
}
node {
name: "Flatten/concat/axis"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 0
}
}
}
}
node {
name: "Flatten/concat"
op: "ConcatV2"
input: "Flatten/Slice"
input: "Flatten/ExpandDims"
input: "Flatten/concat/axis"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
}
node {
name: "Flatten/Reshape"
op: "Reshape"
input: "dropout_1/cond/Merge"
input: "Flatten/concat"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/shape"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 2
}
}
tensor_content: " \017\000\000@\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: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: -0.03904344141483307
}
}
}
}
node {
name: "dense_1/kernel/Initializer/random_uniform/max"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.03904344141483307
}
}
}
}
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: "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"
}
}
}
}
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"
}
}
}
}
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"
}
}
}
}
node {
name: "dense_1/kernel"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3872
}
dim {
size: 64
}
}
}
}
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: "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"
}
}
}
}
node {
name: "dense_1/bias/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 64
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_1/bias"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 64
}
}
}
}
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: "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"
}
}
}
}
node {
name: "dense_1/MatMul"
op: "MatMul"
input: "Flatten/Reshape"
input: "dense_1/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
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: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "dense_1/Relu"
op: "Relu"
input: "dense_1/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/Switch"
op: "Switch"
input: "training"
input: "training"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_2/cond/switch_t"
op: "Identity"
input: "dropout_2/cond/Switch:1"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_2/cond/switch_f"
op: "Identity"
input: "dropout_2/cond/Switch"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_2/cond/pred_id"
op: "Identity"
input: "training"
attr {
key: "T"
value {
type: DT_BOOL
}
}
}
node {
name: "dropout_2/cond/dropout/keep_prob"
op: "Const"
input: "^dropout_2/cond/switch_t"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.5
}
}
}
}
node {
name: "dropout_2/cond/dropout/Shape/Switch"
op: "Switch"
input: "dense_1/Relu"
input: "dropout_2/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/Relu"
}
}
}
}
node {
name: "dropout_2/cond/dropout/Shape"
op: "Shape"
input: "dropout_2/cond/dropout/Shape/Switch:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "dropout_2/cond/dropout/random_uniform/min"
op: "Const"
input: "^dropout_2/cond/switch_t"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "dropout_2/cond/dropout/random_uniform/max"
op: "Const"
input: "^dropout_2/cond/switch_t"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 1.0
}
}
}
}
node {
name: "dropout_2/cond/dropout/random_uniform/RandomUniform"
op: "RandomUniform"
input: "dropout_2/cond/dropout/Shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "dropout_2/cond/dropout/random_uniform/sub"
op: "Sub"
input: "dropout_2/cond/dropout/random_uniform/max"
input: "dropout_2/cond/dropout/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/dropout/random_uniform/mul"
op: "Mul"
input: "dropout_2/cond/dropout/random_uniform/RandomUniform"
input: "dropout_2/cond/dropout/random_uniform/sub"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/dropout/random_uniform"
op: "Add"
input: "dropout_2/cond/dropout/random_uniform/mul"
input: "dropout_2/cond/dropout/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/dropout/add"
op: "Add"
input: "dropout_2/cond/dropout/keep_prob"
input: "dropout_2/cond/dropout/random_uniform"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/dropout/Floor"
op: "Floor"
input: "dropout_2/cond/dropout/add"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/dropout/div"
op: "RealDiv"
input: "dropout_2/cond/dropout/Shape/Switch:1"
input: "dropout_2/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/dropout/mul"
op: "Mul"
input: "dropout_2/cond/dropout/div"
input: "dropout_2/cond/dropout/Floor"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/Identity/Switch"
op: "Switch"
input: "dense_1/Relu"
input: "dropout_2/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/Relu"
}
}
}
}
node {
name: "dropout_2/cond/Identity"
op: "Identity"
input: "dropout_2/cond/Identity/Switch"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dropout_2/cond/Merge"
op: "Merge"
input: "dropout_2/cond/Identity"
input: "dropout_2/cond/dropout/mul"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "dense_2/kernel/Initializer/random_uniform/shape"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 2
}
}
tensor_content: "@\000\000\000\n\000\000\000"
}
}
}
}
node {
name: "dense_2/kernel/Initializer/random_uniform/min"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: -0.2847473919391632
}
}
}
}
node {
name: "dense_2/kernel/Initializer/random_uniform/max"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.2847473919391632
}
}
}
}
node {
name: "dense_2/kernel/Initializer/random_uniform/RandomUniform"
op: "RandomUniform"
input: "dense_2/kernel/Initializer/random_uniform/shape"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "seed"
value {
i: 0
}
}
attr {
key: "seed2"
value {
i: 0
}
}
}
node {
name: "dense_2/kernel/Initializer/random_uniform/sub"
op: "Sub"
input: "dense_2/kernel/Initializer/random_uniform/max"
input: "dense_2/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
}
node {
name: "dense_2/kernel/Initializer/random_uniform/mul"
op: "Mul"
input: "dense_2/kernel/Initializer/random_uniform/RandomUniform"
input: "dense_2/kernel/Initializer/random_uniform/sub"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
}
node {
name: "dense_2/kernel/Initializer/random_uniform"
op: "Add"
input: "dense_2/kernel/Initializer/random_uniform/mul"
input: "dense_2/kernel/Initializer/random_uniform/min"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
}
node {
name: "dense_2/kernel"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 64
}
dim {
size: 10
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_2/kernel/Assign"
op: "Assign"
input: "dense_2/kernel"
input: "dense_2/kernel/Initializer/random_uniform"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_2/kernel/read"
op: "Identity"
input: "dense_2/kernel"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
}
node {
name: "dense_2/bias/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
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_2/bias"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
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_2/bias/Assign"
op: "Assign"
input: "dense_2/bias"
input: "dense_2/bias/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_2/bias/read"
op: "Identity"
input: "dense_2/bias"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
}
node {
name: "dense_2/MatMul"
op: "MatMul"
input: "dropout_2/cond/Merge"
input: "dense_2/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "transpose_a"
value {
b: false
}
}
attr {
key: "transpose_b"
value {
b: false
}
}
}
node {
name: "dense_2/BiasAdd"
op: "BiasAdd"
input: "dense_2/MatMul"
input: "dense_2/bias/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "loss/Rank"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 2
}
}
}
}
node {
name: "loss/Shape"
op: "Shape"
input: "dense_2/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Rank_1"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 2
}
}
}
}
node {
name: "loss/Shape_1"
op: "Shape"
input: "dense_2/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Sub/y"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 1
}
}
}
}
node {
name: "loss/Sub"
op: "Sub"
input: "loss/Rank_1"
input: "loss/Sub/y"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Slice/begin"
op: "Pack"
input: "loss/Sub"
attr {
key: "N"
value {
i: 1
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "axis"
value {
i: 0
}
}
}
node {
name: "loss/Slice/size"
op: "Const"
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: "loss/Slice"
op: "Slice"
input: "loss/Shape_1"
input: "loss/Slice/begin"
input: "loss/Slice/size"
attr {
key: "Index"
value {
type: DT_INT32
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "loss/concat/values_0"
op: "Const"
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: "loss/concat/axis"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 0
}
}
}
}
node {
name: "loss/concat"
op: "ConcatV2"
input: "loss/concat/values_0"
input: "loss/Slice"
input: "loss/concat/axis"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Reshape"
op: "Reshape"
input: "dense_2/BiasAdd"
input: "loss/concat"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Rank_2"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 2
}
}
}
}
node {
name: "loss/Shape_2"
op: "Shape"
input: "Placeholder_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Sub_1/y"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 1
}
}
}
}
node {
name: "loss/Sub_1"
op: "Sub"
input: "loss/Rank_2"
input: "loss/Sub_1/y"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Slice_1/begin"
op: "Pack"
input: "loss/Sub_1"
attr {
key: "N"
value {
i: 1
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "axis"
value {
i: 0
}
}
}
node {
name: "loss/Slice_1/size"
op: "Const"
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: "loss/Slice_1"
op: "Slice"
input: "loss/Shape_2"
input: "loss/Slice_1/begin"
input: "loss/Slice_1/size"
attr {
key: "Index"
value {
type: DT_INT32
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "loss/concat_1/values_0"
op: "Const"
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: "loss/concat_1/axis"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 0
}
}
}
}
node {
name: "loss/concat_1"
op: "ConcatV2"
input: "loss/concat_1/values_0"
input: "loss/Slice_1"
input: "loss/concat_1/axis"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Reshape_1"
op: "Reshape"
input: "Placeholder_1"
input: "loss/concat_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "loss/SoftmaxCrossEntropyWithLogits"
op: "SoftmaxCrossEntropyWithLogits"
input: "loss/Reshape"
input: "loss/Reshape_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "loss/Sub_2/y"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 1
}
}
}
}
node {
name: "loss/Sub_2"
op: "Sub"
input: "loss/Rank"
input: "loss/Sub_2/y"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Slice_2/begin"
op: "Const"
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: "loss/Slice_2/size"
op: "Pack"
input: "loss/Sub_2"
attr {
key: "N"
value {
i: 1
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "axis"
value {
i: 0
}
}
}
node {
name: "loss/Slice_2"
op: "Slice"
input: "loss/Shape"
input: "loss/Slice_2/begin"
input: "loss/Slice_2/size"
attr {
key: "Index"
value {
type: DT_INT32
}
}
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Reshape_2"
op: "Reshape"
input: "loss/SoftmaxCrossEntropyWithLogits"
input: "loss/Slice_2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "loss/Const"
op: "Const"
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: "loss/Mean"
op: "Mean"
input: "loss/Reshape_2"
input: "loss/Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/Shape"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
}
}
}
}
}
}
node {
name: "gradients/Const"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 1.0
}
}
}
}
node {
name: "gradients/Fill"
op: "Fill"
input: "gradients/Shape"
input: "gradients/Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/loss/Mean_grad/Reshape/shape"
op: "Const"
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: "gradients/loss/Mean_grad/Reshape"
op: "Reshape"
input: "gradients/Fill"
input: "gradients/loss/Mean_grad/Reshape/shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Mean_grad/Shape"
op: "Shape"
input: "loss/Reshape_2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Mean_grad/Tile"
op: "Tile"
input: "gradients/loss/Mean_grad/Reshape"
input: "gradients/loss/Mean_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tmultiples"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Mean_grad/Shape_1"
op: "Shape"
input: "loss/Reshape_2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Mean_grad/Shape_2"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
}
}
}
}
}
}
node {
name: "gradients/loss/Mean_grad/Const"
op: "Const"
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: "gradients/loss/Mean_grad/Prod"
op: "Prod"
input: "gradients/loss/Mean_grad/Shape_1"
input: "gradients/loss/Mean_grad/Const"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/loss/Mean_grad/Const_1"
op: "Const"
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: "gradients/loss/Mean_grad/Prod_1"
op: "Prod"
input: "gradients/loss/Mean_grad/Shape_2"
input: "gradients/loss/Mean_grad/Const_1"
attr {
key: "T"
value {
type: DT_INT32
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/loss/Mean_grad/Maximum/y"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 1
}
}
}
}
node {
name: "gradients/loss/Mean_grad/Maximum"
op: "Maximum"
input: "gradients/loss/Mean_grad/Prod_1"
input: "gradients/loss/Mean_grad/Maximum/y"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Mean_grad/floordiv"
op: "FloorDiv"
input: "gradients/loss/Mean_grad/Prod"
input: "gradients/loss/Mean_grad/Maximum"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Mean_grad/Cast"
op: "Cast"
input: "gradients/loss/Mean_grad/floordiv"
attr {
key: "DstT"
value {
type: DT_FLOAT
}
}
attr {
key: "SrcT"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Mean_grad/truediv"
op: "RealDiv"
input: "gradients/loss/Mean_grad/Tile"
input: "gradients/loss/Mean_grad/Cast"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/loss/Reshape_2_grad/Shape"
op: "Shape"
input: "loss/SoftmaxCrossEntropyWithLogits"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Reshape_2_grad/Reshape"
op: "Reshape"
input: "gradients/loss/Mean_grad/truediv"
input: "gradients/loss/Reshape_2_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/zeros_like"
op: "ZerosLike"
input: "loss/SoftmaxCrossEntropyWithLogits:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/loss/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: -1
}
}
}
}
node {
name: "gradients/loss/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
op: "ExpandDims"
input: "gradients/loss/Reshape_2_grad/Reshape"
input: "gradients/loss/SoftmaxCrossEntropyWithLogits_grad/ExpandDims/dim"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tdim"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/SoftmaxCrossEntropyWithLogits_grad/mul"
op: "Mul"
input: "gradients/loss/SoftmaxCrossEntropyWithLogits_grad/ExpandDims"
input: "loss/SoftmaxCrossEntropyWithLogits:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/loss/Reshape_grad/Shape"
op: "Shape"
input: "dense_2/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/loss/Reshape_grad/Reshape"
op: "Reshape"
input: "gradients/loss/SoftmaxCrossEntropyWithLogits_grad/mul"
input: "gradients/loss/Reshape_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dense_2/BiasAdd_grad/BiasAddGrad"
op: "BiasAddGrad"
input: "gradients/loss/Reshape_grad/Reshape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "gradients/dense_2/BiasAdd_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/loss/Reshape_grad/Reshape"
input: "^gradients/dense_2/BiasAdd_grad/BiasAddGrad"
}
node {
name: "gradients/dense_2/BiasAdd_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/loss/Reshape_grad/Reshape"
input: "^gradients/dense_2/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/loss/Reshape_grad/Reshape"
}
}
}
}
node {
name: "gradients/dense_2/BiasAdd_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dense_2/BiasAdd_grad/BiasAddGrad"
input: "^gradients/dense_2/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_2/BiasAdd_grad/BiasAddGrad"
}
}
}
}
node {
name: "gradients/dense_2/MatMul_grad/MatMul"
op: "MatMul"
input: "gradients/dense_2/BiasAdd_grad/tuple/control_dependency"
input: "dense_2/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "transpose_a"
value {
b: false
}
}
attr {
key: "transpose_b"
value {
b: true
}
}
}
node {
name: "gradients/dense_2/MatMul_grad/MatMul_1"
op: "MatMul"
input: "dropout_2/cond/Merge"
input: "gradients/dense_2/BiasAdd_grad/tuple/control_dependency"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "transpose_a"
value {
b: true
}
}
attr {
key: "transpose_b"
value {
b: false
}
}
}
node {
name: "gradients/dense_2/MatMul_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dense_2/MatMul_grad/MatMul"
input: "^gradients/dense_2/MatMul_grad/MatMul_1"
}
node {
name: "gradients/dense_2/MatMul_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dense_2/MatMul_grad/MatMul"
input: "^gradients/dense_2/MatMul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_2/MatMul_grad/MatMul"
}
}
}
}
node {
name: "gradients/dense_2/MatMul_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dense_2/MatMul_grad/MatMul_1"
input: "^gradients/dense_2/MatMul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_2/MatMul_grad/MatMul_1"
}
}
}
}
node {
name: "gradients/dropout_2/cond/Merge_grad/cond_grad"
op: "Switch"
input: "gradients/dense_2/MatMul_grad/tuple/control_dependency"
input: "dropout_2/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_2/MatMul_grad/MatMul"
}
}
}
}
node {
name: "gradients/dropout_2/cond/Merge_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dropout_2/cond/Merge_grad/cond_grad"
}
node {
name: "gradients/dropout_2/cond/Merge_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dropout_2/cond/Merge_grad/cond_grad"
input: "^gradients/dropout_2/cond/Merge_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_2/MatMul_grad/MatMul"
}
}
}
}
node {
name: "gradients/dropout_2/cond/Merge_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dropout_2/cond/Merge_grad/cond_grad:1"
input: "^gradients/dropout_2/cond/Merge_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_2/MatMul_grad/MatMul"
}
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/Shape"
op: "Shape"
input: "dropout_2/cond/dropout/div"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/Shape_1"
op: "Shape"
input: "dropout_2/cond/dropout/Floor"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/BroadcastGradientArgs"
op: "BroadcastGradientArgs"
input: "gradients/dropout_2/cond/dropout/mul_grad/Shape"
input: "gradients/dropout_2/cond/dropout/mul_grad/Shape_1"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/mul"
op: "Mul"
input: "gradients/dropout_2/cond/Merge_grad/tuple/control_dependency_1"
input: "dropout_2/cond/dropout/Floor"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/Sum"
op: "Sum"
input: "gradients/dropout_2/cond/dropout/mul_grad/mul"
input: "gradients/dropout_2/cond/dropout/mul_grad/BroadcastGradientArgs"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/Reshape"
op: "Reshape"
input: "gradients/dropout_2/cond/dropout/mul_grad/Sum"
input: "gradients/dropout_2/cond/dropout/mul_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/mul_1"
op: "Mul"
input: "dropout_2/cond/dropout/div"
input: "gradients/dropout_2/cond/Merge_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/Sum_1"
op: "Sum"
input: "gradients/dropout_2/cond/dropout/mul_grad/mul_1"
input: "gradients/dropout_2/cond/dropout/mul_grad/BroadcastGradientArgs:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/Reshape_1"
op: "Reshape"
input: "gradients/dropout_2/cond/dropout/mul_grad/Sum_1"
input: "gradients/dropout_2/cond/dropout/mul_grad/Shape_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dropout_2/cond/dropout/mul_grad/Reshape"
input: "^gradients/dropout_2/cond/dropout/mul_grad/Reshape_1"
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dropout_2/cond/dropout/mul_grad/Reshape"
input: "^gradients/dropout_2/cond/dropout/mul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_2/cond/dropout/mul_grad/Reshape"
}
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/mul_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dropout_2/cond/dropout/mul_grad/Reshape_1"
input: "^gradients/dropout_2/cond/dropout/mul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_2/cond/dropout/mul_grad/Reshape_1"
}
}
}
}
node {
name: "gradients/Switch"
op: "Switch"
input: "dense_1/Relu"
input: "dropout_2/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/Shape_1"
op: "Shape"
input: "gradients/Switch:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/zeros/Const"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "gradients/zeros"
op: "Fill"
input: "gradients/Shape_1"
input: "gradients/zeros/Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/Identity/Switch_grad/cond_grad"
op: "Merge"
input: "gradients/dropout_2/cond/Merge_grad/tuple/control_dependency"
input: "gradients/zeros"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/Shape"
op: "Shape"
input: "dropout_2/cond/dropout/Shape/Switch:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/Shape_1"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
}
}
}
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/BroadcastGradientArgs"
op: "BroadcastGradientArgs"
input: "gradients/dropout_2/cond/dropout/div_grad/Shape"
input: "gradients/dropout_2/cond/dropout/div_grad/Shape_1"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/RealDiv"
op: "RealDiv"
input: "gradients/dropout_2/cond/dropout/mul_grad/tuple/control_dependency"
input: "dropout_2/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/Sum"
op: "Sum"
input: "gradients/dropout_2/cond/dropout/div_grad/RealDiv"
input: "gradients/dropout_2/cond/dropout/div_grad/BroadcastGradientArgs"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/Reshape"
op: "Reshape"
input: "gradients/dropout_2/cond/dropout/div_grad/Sum"
input: "gradients/dropout_2/cond/dropout/div_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/Neg"
op: "Neg"
input: "dropout_2/cond/dropout/Shape/Switch:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/RealDiv_1"
op: "RealDiv"
input: "gradients/dropout_2/cond/dropout/div_grad/Neg"
input: "dropout_2/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/RealDiv_2"
op: "RealDiv"
input: "gradients/dropout_2/cond/dropout/div_grad/RealDiv_1"
input: "dropout_2/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/mul"
op: "Mul"
input: "gradients/dropout_2/cond/dropout/mul_grad/tuple/control_dependency"
input: "gradients/dropout_2/cond/dropout/div_grad/RealDiv_2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/Sum_1"
op: "Sum"
input: "gradients/dropout_2/cond/dropout/div_grad/mul"
input: "gradients/dropout_2/cond/dropout/div_grad/BroadcastGradientArgs:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/Reshape_1"
op: "Reshape"
input: "gradients/dropout_2/cond/dropout/div_grad/Sum_1"
input: "gradients/dropout_2/cond/dropout/div_grad/Shape_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dropout_2/cond/dropout/div_grad/Reshape"
input: "^gradients/dropout_2/cond/dropout/div_grad/Reshape_1"
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dropout_2/cond/dropout/div_grad/Reshape"
input: "^gradients/dropout_2/cond/dropout/div_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_2/cond/dropout/div_grad/Reshape"
}
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/div_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dropout_2/cond/dropout/div_grad/Reshape_1"
input: "^gradients/dropout_2/cond/dropout/div_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_2/cond/dropout/div_grad/Reshape_1"
}
}
}
}
node {
name: "gradients/Switch_1"
op: "Switch"
input: "dense_1/Relu"
input: "dropout_2/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/Shape_2"
op: "Shape"
input: "gradients/Switch_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/zeros_1/Const"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "gradients/zeros_1"
op: "Fill"
input: "gradients/Shape_2"
input: "gradients/zeros_1/Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_2/cond/dropout/Shape/Switch_grad/cond_grad"
op: "Merge"
input: "gradients/dropout_2/cond/dropout/div_grad/tuple/control_dependency"
input: "gradients/zeros_1"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/AddN"
op: "AddN"
input: "gradients/dropout_2/cond/Identity/Switch_grad/cond_grad"
input: "gradients/dropout_2/cond/dropout/Shape/Switch_grad/cond_grad"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_2/cond/Identity/Switch_grad/cond_grad"
}
}
}
}
node {
name: "gradients/dense_1/Relu_grad/ReluGrad"
op: "ReluGrad"
input: "gradients/AddN"
input: "dense_1/Relu"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dense_1/BiasAdd_grad/BiasAddGrad"
op: "BiasAddGrad"
input: "gradients/dense_1/Relu_grad/ReluGrad"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "gradients/dense_1/BiasAdd_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dense_1/Relu_grad/ReluGrad"
input: "^gradients/dense_1/BiasAdd_grad/BiasAddGrad"
}
node {
name: "gradients/dense_1/BiasAdd_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dense_1/Relu_grad/ReluGrad"
input: "^gradients/dense_1/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_1/Relu_grad/ReluGrad"
}
}
}
}
node {
name: "gradients/dense_1/BiasAdd_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dense_1/BiasAdd_grad/BiasAddGrad"
input: "^gradients/dense_1/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_1/BiasAdd_grad/BiasAddGrad"
}
}
}
}
node {
name: "gradients/dense_1/MatMul_grad/MatMul"
op: "MatMul"
input: "gradients/dense_1/BiasAdd_grad/tuple/control_dependency"
input: "dense_1/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "transpose_a"
value {
b: false
}
}
attr {
key: "transpose_b"
value {
b: true
}
}
}
node {
name: "gradients/dense_1/MatMul_grad/MatMul_1"
op: "MatMul"
input: "Flatten/Reshape"
input: "gradients/dense_1/BiasAdd_grad/tuple/control_dependency"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "transpose_a"
value {
b: true
}
}
attr {
key: "transpose_b"
value {
b: false
}
}
}
node {
name: "gradients/dense_1/MatMul_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dense_1/MatMul_grad/MatMul"
input: "^gradients/dense_1/MatMul_grad/MatMul_1"
}
node {
name: "gradients/dense_1/MatMul_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dense_1/MatMul_grad/MatMul"
input: "^gradients/dense_1/MatMul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_1/MatMul_grad/MatMul"
}
}
}
}
node {
name: "gradients/dense_1/MatMul_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dense_1/MatMul_grad/MatMul_1"
input: "^gradients/dense_1/MatMul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dense_1/MatMul_grad/MatMul_1"
}
}
}
}
node {
name: "gradients/Flatten/Reshape_grad/Shape"
op: "Shape"
input: "dropout_1/cond/Merge"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/Flatten/Reshape_grad/Reshape"
op: "Reshape"
input: "gradients/dense_1/MatMul_grad/tuple/control_dependency"
input: "gradients/Flatten/Reshape_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/Merge_grad/cond_grad"
op: "Switch"
input: "gradients/Flatten/Reshape_grad/Reshape"
input: "dropout_1/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/Flatten/Reshape_grad/Reshape"
}
}
}
}
node {
name: "gradients/dropout_1/cond/Merge_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dropout_1/cond/Merge_grad/cond_grad"
}
node {
name: "gradients/dropout_1/cond/Merge_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dropout_1/cond/Merge_grad/cond_grad"
input: "^gradients/dropout_1/cond/Merge_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/Flatten/Reshape_grad/Reshape"
}
}
}
}
node {
name: "gradients/dropout_1/cond/Merge_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dropout_1/cond/Merge_grad/cond_grad:1"
input: "^gradients/dropout_1/cond/Merge_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/Flatten/Reshape_grad/Reshape"
}
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/Shape"
op: "Shape"
input: "dropout_1/cond/dropout/div"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/Shape_1"
op: "Shape"
input: "dropout_1/cond/dropout/Floor"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/BroadcastGradientArgs"
op: "BroadcastGradientArgs"
input: "gradients/dropout_1/cond/dropout/mul_grad/Shape"
input: "gradients/dropout_1/cond/dropout/mul_grad/Shape_1"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/mul"
op: "Mul"
input: "gradients/dropout_1/cond/Merge_grad/tuple/control_dependency_1"
input: "dropout_1/cond/dropout/Floor"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/Sum"
op: "Sum"
input: "gradients/dropout_1/cond/dropout/mul_grad/mul"
input: "gradients/dropout_1/cond/dropout/mul_grad/BroadcastGradientArgs"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/Reshape"
op: "Reshape"
input: "gradients/dropout_1/cond/dropout/mul_grad/Sum"
input: "gradients/dropout_1/cond/dropout/mul_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/mul_1"
op: "Mul"
input: "dropout_1/cond/dropout/div"
input: "gradients/dropout_1/cond/Merge_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/Sum_1"
op: "Sum"
input: "gradients/dropout_1/cond/dropout/mul_grad/mul_1"
input: "gradients/dropout_1/cond/dropout/mul_grad/BroadcastGradientArgs:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/Reshape_1"
op: "Reshape"
input: "gradients/dropout_1/cond/dropout/mul_grad/Sum_1"
input: "gradients/dropout_1/cond/dropout/mul_grad/Shape_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dropout_1/cond/dropout/mul_grad/Reshape"
input: "^gradients/dropout_1/cond/dropout/mul_grad/Reshape_1"
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dropout_1/cond/dropout/mul_grad/Reshape"
input: "^gradients/dropout_1/cond/dropout/mul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_1/cond/dropout/mul_grad/Reshape"
}
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/mul_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dropout_1/cond/dropout/mul_grad/Reshape_1"
input: "^gradients/dropout_1/cond/dropout/mul_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_1/cond/dropout/mul_grad/Reshape_1"
}
}
}
}
node {
name: "gradients/Switch_2"
op: "Switch"
input: "conv2d_2/Relu"
input: "dropout_1/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/Shape_3"
op: "Shape"
input: "gradients/Switch_2:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/zeros_2/Const"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "gradients/zeros_2"
op: "Fill"
input: "gradients/Shape_3"
input: "gradients/zeros_2/Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/Identity/Switch_grad/cond_grad"
op: "Merge"
input: "gradients/dropout_1/cond/Merge_grad/tuple/control_dependency"
input: "gradients/zeros_2"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/Shape"
op: "Shape"
input: "dropout_1/cond/dropout/Shape/Switch:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/Shape_1"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
}
}
}
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/BroadcastGradientArgs"
op: "BroadcastGradientArgs"
input: "gradients/dropout_1/cond/dropout/div_grad/Shape"
input: "gradients/dropout_1/cond/dropout/div_grad/Shape_1"
attr {
key: "T"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/RealDiv"
op: "RealDiv"
input: "gradients/dropout_1/cond/dropout/mul_grad/tuple/control_dependency"
input: "dropout_1/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/Sum"
op: "Sum"
input: "gradients/dropout_1/cond/dropout/div_grad/RealDiv"
input: "gradients/dropout_1/cond/dropout/div_grad/BroadcastGradientArgs"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/Reshape"
op: "Reshape"
input: "gradients/dropout_1/cond/dropout/div_grad/Sum"
input: "gradients/dropout_1/cond/dropout/div_grad/Shape"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/Neg"
op: "Neg"
input: "dropout_1/cond/dropout/Shape/Switch:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/RealDiv_1"
op: "RealDiv"
input: "gradients/dropout_1/cond/dropout/div_grad/Neg"
input: "dropout_1/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/RealDiv_2"
op: "RealDiv"
input: "gradients/dropout_1/cond/dropout/div_grad/RealDiv_1"
input: "dropout_1/cond/dropout/keep_prob"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/mul"
op: "Mul"
input: "gradients/dropout_1/cond/dropout/mul_grad/tuple/control_dependency"
input: "gradients/dropout_1/cond/dropout/div_grad/RealDiv_2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/Sum_1"
op: "Sum"
input: "gradients/dropout_1/cond/dropout/div_grad/mul"
input: "gradients/dropout_1/cond/dropout/div_grad/BroadcastGradientArgs:1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/Reshape_1"
op: "Reshape"
input: "gradients/dropout_1/cond/dropout/div_grad/Sum_1"
input: "gradients/dropout_1/cond/dropout/div_grad/Shape_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tshape"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/dropout_1/cond/dropout/div_grad/Reshape"
input: "^gradients/dropout_1/cond/dropout/div_grad/Reshape_1"
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/dropout_1/cond/dropout/div_grad/Reshape"
input: "^gradients/dropout_1/cond/dropout/div_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_1/cond/dropout/div_grad/Reshape"
}
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/div_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/dropout_1/cond/dropout/div_grad/Reshape_1"
input: "^gradients/dropout_1/cond/dropout/div_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_1/cond/dropout/div_grad/Reshape_1"
}
}
}
}
node {
name: "gradients/Switch_3"
op: "Switch"
input: "conv2d_2/Relu"
input: "dropout_1/cond/pred_id"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/Shape_4"
op: "Shape"
input: "gradients/Switch_3"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/zeros_3/Const"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.0
}
}
}
}
node {
name: "gradients/zeros_3"
op: "Fill"
input: "gradients/Shape_4"
input: "gradients/zeros_3/Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/dropout_1/cond/dropout/Shape/Switch_grad/cond_grad"
op: "Merge"
input: "gradients/dropout_1/cond/dropout/div_grad/tuple/control_dependency"
input: "gradients/zeros_3"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/AddN_1"
op: "AddN"
input: "gradients/dropout_1/cond/Identity/Switch_grad/cond_grad"
input: "gradients/dropout_1/cond/dropout/Shape/Switch_grad/cond_grad"
attr {
key: "N"
value {
i: 2
}
}
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/dropout_1/cond/Identity/Switch_grad/cond_grad"
}
}
}
}
node {
name: "gradients/conv2d_2/Relu_grad/ReluGrad"
op: "ReluGrad"
input: "gradients/AddN_1"
input: "conv2d_2/Relu"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/conv2d_2/BiasAdd_grad/BiasAddGrad"
op: "BiasAddGrad"
input: "gradients/conv2d_2/Relu_grad/ReluGrad"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "gradients/conv2d_2/BiasAdd_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/conv2d_2/Relu_grad/ReluGrad"
input: "^gradients/conv2d_2/BiasAdd_grad/BiasAddGrad"
}
node {
name: "gradients/conv2d_2/BiasAdd_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/conv2d_2/Relu_grad/ReluGrad"
input: "^gradients/conv2d_2/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_2/Relu_grad/ReluGrad"
}
}
}
}
node {
name: "gradients/conv2d_2/BiasAdd_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/conv2d_2/BiasAdd_grad/BiasAddGrad"
input: "^gradients/conv2d_2/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_2/BiasAdd_grad/BiasAddGrad"
}
}
}
}
node {
name: "gradients/conv2d_2/convolution_grad/Shape"
op: "Shape"
input: "max_pooling2d_1/MaxPool"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/conv2d_2/convolution_grad/Conv2DBackpropInput"
op: "Conv2DBackpropInput"
input: "gradients/conv2d_2/convolution_grad/Shape"
input: "conv2d_2/kernel/read"
input: "gradients/conv2d_2/BiasAdd_grad/tuple/control_dependency"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
attr {
key: "strides"
value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
attr {
key: "use_cudnn_on_gpu"
value {
b: true
}
}
}
node {
name: "gradients/conv2d_2/convolution_grad/Shape_1"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "\003\000\000\000\003\000\000\000 \000\000\000 \000\000\000"
}
}
}
}
node {
name: "gradients/conv2d_2/convolution_grad/Conv2DBackpropFilter"
op: "Conv2DBackpropFilter"
input: "max_pooling2d_1/MaxPool"
input: "gradients/conv2d_2/convolution_grad/Shape_1"
input: "gradients/conv2d_2/BiasAdd_grad/tuple/control_dependency"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
attr {
key: "strides"
value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
attr {
key: "use_cudnn_on_gpu"
value {
b: true
}
}
}
node {
name: "gradients/conv2d_2/convolution_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/conv2d_2/convolution_grad/Conv2DBackpropInput"
input: "^gradients/conv2d_2/convolution_grad/Conv2DBackpropFilter"
}
node {
name: "gradients/conv2d_2/convolution_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/conv2d_2/convolution_grad/Conv2DBackpropInput"
input: "^gradients/conv2d_2/convolution_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_2/convolution_grad/Conv2DBackpropInput"
}
}
}
}
node {
name: "gradients/conv2d_2/convolution_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/conv2d_2/convolution_grad/Conv2DBackpropFilter"
input: "^gradients/conv2d_2/convolution_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_2/convolution_grad/Conv2DBackpropFilter"
}
}
}
}
node {
name: "gradients/max_pooling2d_1/MaxPool_grad/MaxPoolGrad"
op: "MaxPoolGrad"
input: "conv2d_1/Relu"
input: "max_pooling2d_1/MaxPool"
input: "gradients/conv2d_2/convolution_grad/tuple/control_dependency"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
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: "gradients/conv2d_1/Relu_grad/ReluGrad"
op: "ReluGrad"
input: "gradients/max_pooling2d_1/MaxPool_grad/MaxPoolGrad"
input: "conv2d_1/Relu"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
}
node {
name: "gradients/conv2d_1/BiasAdd_grad/BiasAddGrad"
op: "BiasAddGrad"
input: "gradients/conv2d_1/Relu_grad/ReluGrad"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
}
node {
name: "gradients/conv2d_1/BiasAdd_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/conv2d_1/Relu_grad/ReluGrad"
input: "^gradients/conv2d_1/BiasAdd_grad/BiasAddGrad"
}
node {
name: "gradients/conv2d_1/BiasAdd_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/conv2d_1/Relu_grad/ReluGrad"
input: "^gradients/conv2d_1/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_1/Relu_grad/ReluGrad"
}
}
}
}
node {
name: "gradients/conv2d_1/BiasAdd_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/conv2d_1/BiasAdd_grad/BiasAddGrad"
input: "^gradients/conv2d_1/BiasAdd_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_1/BiasAdd_grad/BiasAddGrad"
}
}
}
}
node {
name: "gradients/conv2d_1/convolution_grad/Shape"
op: "Shape"
input: "Placeholder"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "out_type"
value {
type: DT_INT32
}
}
}
node {
name: "gradients/conv2d_1/convolution_grad/Conv2DBackpropInput"
op: "Conv2DBackpropInput"
input: "gradients/conv2d_1/convolution_grad/Shape"
input: "conv2d_1/kernel/read"
input: "gradients/conv2d_1/BiasAdd_grad/tuple/control_dependency"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
attr {
key: "strides"
value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
attr {
key: "use_cudnn_on_gpu"
value {
b: true
}
}
}
node {
name: "gradients/conv2d_1/convolution_grad/Shape_1"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
dim {
size: 4
}
}
tensor_content: "\003\000\000\000\003\000\000\000\001\000\000\000 \000\000\000"
}
}
}
}
node {
name: "gradients/conv2d_1/convolution_grad/Conv2DBackpropFilter"
op: "Conv2DBackpropFilter"
input: "Placeholder"
input: "gradients/conv2d_1/convolution_grad/Shape_1"
input: "gradients/conv2d_1/BiasAdd_grad/tuple/control_dependency"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
attr {
key: "strides"
value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
attr {
key: "use_cudnn_on_gpu"
value {
b: true
}
}
}
node {
name: "gradients/conv2d_1/convolution_grad/tuple/group_deps"
op: "NoOp"
input: "^gradients/conv2d_1/convolution_grad/Conv2DBackpropInput"
input: "^gradients/conv2d_1/convolution_grad/Conv2DBackpropFilter"
}
node {
name: "gradients/conv2d_1/convolution_grad/tuple/control_dependency"
op: "Identity"
input: "gradients/conv2d_1/convolution_grad/Conv2DBackpropInput"
input: "^gradients/conv2d_1/convolution_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_1/convolution_grad/Conv2DBackpropInput"
}
}
}
}
node {
name: "gradients/conv2d_1/convolution_grad/tuple/control_dependency_1"
op: "Identity"
input: "gradients/conv2d_1/convolution_grad/Conv2DBackpropFilter"
input: "^gradients/conv2d_1/convolution_grad/tuple/group_deps"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@gradients/conv2d_1/convolution_grad/Conv2DBackpropFilter"
}
}
}
}
node {
name: "beta1_power/initial_value"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.8999999761581421
}
}
}
}
node {
name: "beta1_power"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "beta1_power/Assign"
op: "Assign"
input: "beta1_power"
input: "beta1_power/initial_value"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "beta1_power/read"
op: "Identity"
input: "beta1_power"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
}
node {
name: "beta2_power/initial_value"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.9990000128746033
}
}
}
}
node {
name: "beta2_power"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "beta2_power/Assign"
op: "Assign"
input: "beta2_power"
input: "beta2_power/initial_value"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "beta2_power/read"
op: "Identity"
input: "beta2_power"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
}
node {
name: "conv2d_1/kernel/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 1
}
dim {
size: 32
}
}
float_val: 0.0
}
}
}
}
node {
name: "conv2d_1/kernel/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d_1/kernel/Adam/Assign"
op: "Assign"
input: "conv2d_1/kernel/Adam"
input: "conv2d_1/kernel/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_1/kernel/Adam/read"
op: "Identity"
input: "conv2d_1/kernel/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
}
node {
name: "conv2d_1/kernel/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 1
}
dim {
size: 32
}
}
float_val: 0.0
}
}
}
}
node {
name: "conv2d_1/kernel/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 1
}
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d_1/kernel/Adam_1/Assign"
op: "Assign"
input: "conv2d_1/kernel/Adam_1"
input: "conv2d_1/kernel/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_1/kernel/Adam_1/read"
op: "Identity"
input: "conv2d_1/kernel/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
}
node {
name: "conv2d_1/bias/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
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_1/bias/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
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_1/bias/Adam/Assign"
op: "Assign"
input: "conv2d_1/bias/Adam"
input: "conv2d_1/bias/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_1/bias/Adam/read"
op: "Identity"
input: "conv2d_1/bias/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
}
node {
name: "conv2d_1/bias/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
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_1/bias/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
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_1/bias/Adam_1/Assign"
op: "Assign"
input: "conv2d_1/bias/Adam_1"
input: "conv2d_1/bias/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_1/bias/Adam_1/read"
op: "Identity"
input: "conv2d_1/bias/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
}
node {
name: "conv2d_2/kernel/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 32
}
dim {
size: 32
}
}
float_val: 0.0
}
}
}
}
node {
name: "conv2d_2/kernel/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 32
}
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d_2/kernel/Adam/Assign"
op: "Assign"
input: "conv2d_2/kernel/Adam"
input: "conv2d_2/kernel/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_2/kernel/Adam/read"
op: "Identity"
input: "conv2d_2/kernel/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
}
node {
name: "conv2d_2/kernel/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 32
}
dim {
size: 32
}
}
float_val: 0.0
}
}
}
}
node {
name: "conv2d_2/kernel/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3
}
dim {
size: 3
}
dim {
size: 32
}
dim {
size: 32
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "conv2d_2/kernel/Adam_1/Assign"
op: "Assign"
input: "conv2d_2/kernel/Adam_1"
input: "conv2d_2/kernel/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_2/kernel/Adam_1/read"
op: "Identity"
input: "conv2d_2/kernel/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
}
node {
name: "conv2d_2/bias/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
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_2/bias/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
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_2/bias/Adam/Assign"
op: "Assign"
input: "conv2d_2/bias/Adam"
input: "conv2d_2/bias/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_2/bias/Adam/read"
op: "Identity"
input: "conv2d_2/bias/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
}
node {
name: "conv2d_2/bias/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
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_2/bias/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
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_2/bias/Adam_1/Assign"
op: "Assign"
input: "conv2d_2/bias/Adam_1"
input: "conv2d_2/bias/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "conv2d_2/bias/Adam_1/read"
op: "Identity"
input: "conv2d_2/bias/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
}
node {
name: "dense_1/kernel/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 3872
}
dim {
size: 64
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_1/kernel/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3872
}
dim {
size: 64
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_1/kernel/Adam/Assign"
op: "Assign"
input: "dense_1/kernel/Adam"
input: "dense_1/kernel/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_1/kernel/Adam/read"
op: "Identity"
input: "dense_1/kernel/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
}
node {
name: "dense_1/kernel/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 3872
}
dim {
size: 64
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_1/kernel/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 3872
}
dim {
size: 64
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_1/kernel/Adam_1/Assign"
op: "Assign"
input: "dense_1/kernel/Adam_1"
input: "dense_1/kernel/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_1/kernel/Adam_1/read"
op: "Identity"
input: "dense_1/kernel/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
}
node {
name: "dense_1/bias/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 64
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_1/bias/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 64
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_1/bias/Adam/Assign"
op: "Assign"
input: "dense_1/bias/Adam"
input: "dense_1/bias/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_1/bias/Adam/read"
op: "Identity"
input: "dense_1/bias/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
}
node {
name: "dense_1/bias/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 64
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_1/bias/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 64
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_1/bias/Adam_1/Assign"
op: "Assign"
input: "dense_1/bias/Adam_1"
input: "dense_1/bias/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_1/bias/Adam_1/read"
op: "Identity"
input: "dense_1/bias/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
}
node {
name: "dense_2/kernel/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 64
}
dim {
size: 10
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_2/kernel/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 64
}
dim {
size: 10
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_2/kernel/Adam/Assign"
op: "Assign"
input: "dense_2/kernel/Adam"
input: "dense_2/kernel/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_2/kernel/Adam/read"
op: "Identity"
input: "dense_2/kernel/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
}
node {
name: "dense_2/kernel/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
dim {
size: 64
}
dim {
size: 10
}
}
float_val: 0.0
}
}
}
}
node {
name: "dense_2/kernel/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "container"
value {
s: ""
}
}
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 64
}
dim {
size: 10
}
}
}
}
attr {
key: "shared_name"
value {
s: ""
}
}
}
node {
name: "dense_2/kernel/Adam_1/Assign"
op: "Assign"
input: "dense_2/kernel/Adam_1"
input: "dense_2/kernel/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_2/kernel/Adam_1/read"
op: "Identity"
input: "dense_2/kernel/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
}
node {
name: "dense_2/bias/Adam/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
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_2/bias/Adam"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
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_2/bias/Adam/Assign"
op: "Assign"
input: "dense_2/bias/Adam"
input: "dense_2/bias/Adam/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_2/bias/Adam/read"
op: "Identity"
input: "dense_2/bias/Adam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
}
node {
name: "dense_2/bias/Adam_1/Initializer/zeros"
op: "Const"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
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_2/bias/Adam_1"
op: "VariableV2"
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
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_2/bias/Adam_1/Assign"
op: "Assign"
input: "dense_2/bias/Adam_1"
input: "dense_2/bias/Adam_1/Initializer/zeros"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "dense_2/bias/Adam_1/read"
op: "Identity"
input: "dense_2/bias/Adam_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
}
node {
name: "Adam/learning_rate"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 9.999999747378752e-05
}
}
}
}
node {
name: "Adam/beta1"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.8999999761581421
}
}
}
}
node {
name: "Adam/beta2"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 0.9990000128746033
}
}
}
}
node {
name: "Adam/epsilon"
op: "Const"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_FLOAT
tensor_shape {
}
float_val: 9.99999993922529e-09
}
}
}
}
node {
name: "Adam/update_conv2d_1/kernel/ApplyAdam"
op: "ApplyAdam"
input: "conv2d_1/kernel"
input: "conv2d_1/kernel/Adam"
input: "conv2d_1/kernel/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/conv2d_1/convolution_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/update_conv2d_1/bias/ApplyAdam"
op: "ApplyAdam"
input: "conv2d_1/bias"
input: "conv2d_1/bias/Adam"
input: "conv2d_1/bias/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/conv2d_1/BiasAdd_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/update_conv2d_2/kernel/ApplyAdam"
op: "ApplyAdam"
input: "conv2d_2/kernel"
input: "conv2d_2/kernel/Adam"
input: "conv2d_2/kernel/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/conv2d_2/convolution_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/update_conv2d_2/bias/ApplyAdam"
op: "ApplyAdam"
input: "conv2d_2/bias"
input: "conv2d_2/bias/Adam"
input: "conv2d_2/bias/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/conv2d_2/BiasAdd_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/update_dense_1/kernel/ApplyAdam"
op: "ApplyAdam"
input: "dense_1/kernel"
input: "dense_1/kernel/Adam"
input: "dense_1/kernel/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/dense_1/MatMul_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/update_dense_1/bias/ApplyAdam"
op: "ApplyAdam"
input: "dense_1/bias"
input: "dense_1/bias/Adam"
input: "dense_1/bias/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/dense_1/BiasAdd_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/update_dense_2/kernel/ApplyAdam"
op: "ApplyAdam"
input: "dense_2/kernel"
input: "dense_2/kernel/Adam"
input: "dense_2/kernel/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/dense_2/MatMul_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/update_dense_2/bias/ApplyAdam"
op: "ApplyAdam"
input: "dense_2/bias"
input: "dense_2/bias/Adam"
input: "dense_2/bias/Adam_1"
input: "beta1_power/read"
input: "beta2_power/read"
input: "Adam/learning_rate"
input: "Adam/beta1"
input: "Adam/beta2"
input: "Adam/epsilon"
input: "gradients/dense_2/BiasAdd_grad/tuple/control_dependency_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "use_nesterov"
value {
b: false
}
}
}
node {
name: "Adam/mul"
op: "Mul"
input: "beta1_power/read"
input: "Adam/beta1"
input: "^Adam/update_conv2d_1/kernel/ApplyAdam"
input: "^Adam/update_conv2d_1/bias/ApplyAdam"
input: "^Adam/update_conv2d_2/kernel/ApplyAdam"
input: "^Adam/update_conv2d_2/bias/ApplyAdam"
input: "^Adam/update_dense_1/kernel/ApplyAdam"
input: "^Adam/update_dense_1/bias/ApplyAdam"
input: "^Adam/update_dense_2/kernel/ApplyAdam"
input: "^Adam/update_dense_2/bias/ApplyAdam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
}
node {
name: "Adam/Assign"
op: "Assign"
input: "beta1_power"
input: "Adam/mul"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "Adam/mul_1"
op: "Mul"
input: "beta2_power/read"
input: "Adam/beta2"
input: "^Adam/update_conv2d_1/kernel/ApplyAdam"
input: "^Adam/update_conv2d_1/bias/ApplyAdam"
input: "^Adam/update_conv2d_2/kernel/ApplyAdam"
input: "^Adam/update_conv2d_2/bias/ApplyAdam"
input: "^Adam/update_dense_1/kernel/ApplyAdam"
input: "^Adam/update_dense_1/bias/ApplyAdam"
input: "^Adam/update_dense_2/kernel/ApplyAdam"
input: "^Adam/update_dense_2/bias/ApplyAdam"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
}
node {
name: "Adam/Assign_1"
op: "Assign"
input: "beta2_power"
input: "Adam/mul_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: false
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "Adam"
op: "NoOp"
input: "^Adam/update_conv2d_1/kernel/ApplyAdam"
input: "^Adam/update_conv2d_1/bias/ApplyAdam"
input: "^Adam/update_conv2d_2/kernel/ApplyAdam"
input: "^Adam/update_conv2d_2/bias/ApplyAdam"
input: "^Adam/update_dense_1/kernel/ApplyAdam"
input: "^Adam/update_dense_1/bias/ApplyAdam"
input: "^Adam/update_dense_2/kernel/ApplyAdam"
input: "^Adam/update_dense_2/bias/ApplyAdam"
input: "^Adam/Assign"
input: "^Adam/Assign_1"
}
node {
name: "ArgMax/dimension"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 1
}
}
}
}
node {
name: "ArgMax"
op: "ArgMax"
input: "dense_2/BiasAdd"
input: "ArgMax/dimension"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "output_type"
value {
type: DT_INT64
}
}
}
node {
name: "ArgMax_1/dimension"
op: "Const"
attr {
key: "dtype"
value {
type: DT_INT32
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_INT32
tensor_shape {
}
int_val: 1
}
}
}
}
node {
name: "ArgMax_1"
op: "ArgMax"
input: "Placeholder_1"
input: "ArgMax_1/dimension"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "output_type"
value {
type: DT_INT64
}
}
}
node {
name: "Equal"
op: "Equal"
input: "ArgMax"
input: "ArgMax_1"
attr {
key: "T"
value {
type: DT_INT64
}
}
}
node {
name: "Cast"
op: "Cast"
input: "Equal"
attr {
key: "DstT"
value {
type: DT_FLOAT
}
}
attr {
key: "SrcT"
value {
type: DT_BOOL
}
}
}
node {
name: "Const"
op: "Const"
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: "Mean"
op: "Mean"
input: "Cast"
input: "Const"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "Tidx"
value {
type: DT_INT32
}
}
attr {
key: "keep_dims"
value {
b: false
}
}
}
node {
name: "init"
op: "NoOp"
input: "^conv2d_1/kernel/Assign"
input: "^conv2d_1/bias/Assign"
input: "^conv2d_2/kernel/Assign"
input: "^conv2d_2/bias/Assign"
input: "^dense_1/kernel/Assign"
input: "^dense_1/bias/Assign"
input: "^dense_2/kernel/Assign"
input: "^dense_2/bias/Assign"
input: "^beta1_power/Assign"
input: "^beta2_power/Assign"
input: "^conv2d_1/kernel/Adam/Assign"
input: "^conv2d_1/kernel/Adam_1/Assign"
input: "^conv2d_1/bias/Adam/Assign"
input: "^conv2d_1/bias/Adam_1/Assign"
input: "^conv2d_2/kernel/Adam/Assign"
input: "^conv2d_2/kernel/Adam_1/Assign"
input: "^conv2d_2/bias/Adam/Assign"
input: "^conv2d_2/bias/Adam_1/Assign"
input: "^dense_1/kernel/Adam/Assign"
input: "^dense_1/kernel/Adam_1/Assign"
input: "^dense_1/bias/Adam/Assign"
input: "^dense_1/bias/Adam_1/Assign"
input: "^dense_2/kernel/Adam/Assign"
input: "^dense_2/kernel/Adam_1/Assign"
input: "^dense_2/bias/Adam/Assign"
input: "^dense_2/bias/Adam_1/Assign"
}
node {
name: "save/Const"
op: "Const"
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: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 26
}
}
string_val: "beta1_power"
string_val: "beta2_power"
string_val: "conv2d_1/bias"
string_val: "conv2d_1/bias/Adam"
string_val: "conv2d_1/bias/Adam_1"
string_val: "conv2d_1/kernel"
string_val: "conv2d_1/kernel/Adam"
string_val: "conv2d_1/kernel/Adam_1"
string_val: "conv2d_2/bias"
string_val: "conv2d_2/bias/Adam"
string_val: "conv2d_2/bias/Adam_1"
string_val: "conv2d_2/kernel"
string_val: "conv2d_2/kernel/Adam"
string_val: "conv2d_2/kernel/Adam_1"
string_val: "dense_1/bias"
string_val: "dense_1/bias/Adam"
string_val: "dense_1/bias/Adam_1"
string_val: "dense_1/kernel"
string_val: "dense_1/kernel/Adam"
string_val: "dense_1/kernel/Adam_1"
string_val: "dense_2/bias"
string_val: "dense_2/bias/Adam"
string_val: "dense_2/bias/Adam_1"
string_val: "dense_2/kernel"
string_val: "dense_2/kernel/Adam"
string_val: "dense_2/kernel/Adam_1"
}
}
}
}
node {
name: "save/SaveV2/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 26
}
}
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
string_val: ""
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: "beta1_power"
input: "beta2_power"
input: "conv2d_1/bias"
input: "conv2d_1/bias/Adam"
input: "conv2d_1/bias/Adam_1"
input: "conv2d_1/kernel"
input: "conv2d_1/kernel/Adam"
input: "conv2d_1/kernel/Adam_1"
input: "conv2d_2/bias"
input: "conv2d_2/bias/Adam"
input: "conv2d_2/bias/Adam_1"
input: "conv2d_2/kernel"
input: "conv2d_2/kernel/Adam"
input: "conv2d_2/kernel/Adam_1"
input: "dense_1/bias"
input: "dense_1/bias/Adam"
input: "dense_1/bias/Adam_1"
input: "dense_1/kernel"
input: "dense_1/kernel/Adam"
input: "dense_1/kernel/Adam_1"
input: "dense_2/bias"
input: "dense_2/bias/Adam"
input: "dense_2/bias/Adam_1"
input: "dense_2/kernel"
input: "dense_2/kernel/Adam"
input: "dense_2/kernel/Adam_1"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
type: DT_FLOAT
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"
}
}
}
}
node {
name: "save/RestoreV2/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "beta1_power"
}
}
}
}
node {
name: "save/RestoreV2/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2/tensor_names"
input: "save/RestoreV2/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign"
op: "Assign"
input: "beta1_power"
input: "save/RestoreV2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_1/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "beta2_power"
}
}
}
}
node {
name: "save/RestoreV2_1/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_1"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_1/tensor_names"
input: "save/RestoreV2_1/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_1"
op: "Assign"
input: "beta2_power"
input: "save/RestoreV2_1"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_2/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_1/bias"
}
}
}
}
node {
name: "save/RestoreV2_2/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_2"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_2/tensor_names"
input: "save/RestoreV2_2/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_2"
op: "Assign"
input: "conv2d_1/bias"
input: "save/RestoreV2_2"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_3/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_1/bias/Adam"
}
}
}
}
node {
name: "save/RestoreV2_3/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_3"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_3/tensor_names"
input: "save/RestoreV2_3/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_3"
op: "Assign"
input: "conv2d_1/bias/Adam"
input: "save/RestoreV2_3"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_4/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_1/bias/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_4/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_4"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_4/tensor_names"
input: "save/RestoreV2_4/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_4"
op: "Assign"
input: "conv2d_1/bias/Adam_1"
input: "save/RestoreV2_4"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_5/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_1/kernel"
}
}
}
}
node {
name: "save/RestoreV2_5/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_5"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_5/tensor_names"
input: "save/RestoreV2_5/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_5"
op: "Assign"
input: "conv2d_1/kernel"
input: "save/RestoreV2_5"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_6/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_1/kernel/Adam"
}
}
}
}
node {
name: "save/RestoreV2_6/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_6"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_6/tensor_names"
input: "save/RestoreV2_6/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_6"
op: "Assign"
input: "conv2d_1/kernel/Adam"
input: "save/RestoreV2_6"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_7/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_1/kernel/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_7/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_7"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_7/tensor_names"
input: "save/RestoreV2_7/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_7"
op: "Assign"
input: "conv2d_1/kernel/Adam_1"
input: "save/RestoreV2_7"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_8/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_2/bias"
}
}
}
}
node {
name: "save/RestoreV2_8/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_8"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_8/tensor_names"
input: "save/RestoreV2_8/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_8"
op: "Assign"
input: "conv2d_2/bias"
input: "save/RestoreV2_8"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_9/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_2/bias/Adam"
}
}
}
}
node {
name: "save/RestoreV2_9/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_9"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_9/tensor_names"
input: "save/RestoreV2_9/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_9"
op: "Assign"
input: "conv2d_2/bias/Adam"
input: "save/RestoreV2_9"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_10/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_2/bias/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_10/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_10"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_10/tensor_names"
input: "save/RestoreV2_10/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_10"
op: "Assign"
input: "conv2d_2/bias/Adam_1"
input: "save/RestoreV2_10"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_11/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_2/kernel"
}
}
}
}
node {
name: "save/RestoreV2_11/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_11"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_11/tensor_names"
input: "save/RestoreV2_11/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_11"
op: "Assign"
input: "conv2d_2/kernel"
input: "save/RestoreV2_11"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_12/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_2/kernel/Adam"
}
}
}
}
node {
name: "save/RestoreV2_12/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_12"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_12/tensor_names"
input: "save/RestoreV2_12/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_12"
op: "Assign"
input: "conv2d_2/kernel/Adam"
input: "save/RestoreV2_12"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_13/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "conv2d_2/kernel/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_13/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_13"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_13/tensor_names"
input: "save/RestoreV2_13/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_13"
op: "Assign"
input: "conv2d_2/kernel/Adam_1"
input: "save/RestoreV2_13"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@conv2d_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_14/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_1/bias"
}
}
}
}
node {
name: "save/RestoreV2_14/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_14"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_14/tensor_names"
input: "save/RestoreV2_14/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_14"
op: "Assign"
input: "dense_1/bias"
input: "save/RestoreV2_14"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_15/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_1/bias/Adam"
}
}
}
}
node {
name: "save/RestoreV2_15/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_15"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_15/tensor_names"
input: "save/RestoreV2_15/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_15"
op: "Assign"
input: "dense_1/bias/Adam"
input: "save/RestoreV2_15"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_16/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_1/bias/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_16/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_16"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_16/tensor_names"
input: "save/RestoreV2_16/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_16"
op: "Assign"
input: "dense_1/bias/Adam_1"
input: "save/RestoreV2_16"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_17/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_1/kernel"
}
}
}
}
node {
name: "save/RestoreV2_17/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_17"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_17/tensor_names"
input: "save/RestoreV2_17/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_17"
op: "Assign"
input: "dense_1/kernel"
input: "save/RestoreV2_17"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_18/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_1/kernel/Adam"
}
}
}
}
node {
name: "save/RestoreV2_18/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_18"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_18/tensor_names"
input: "save/RestoreV2_18/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_18"
op: "Assign"
input: "dense_1/kernel/Adam"
input: "save/RestoreV2_18"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_19/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_1/kernel/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_19/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_19"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_19/tensor_names"
input: "save/RestoreV2_19/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_19"
op: "Assign"
input: "dense_1/kernel/Adam_1"
input: "save/RestoreV2_19"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_1/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_20/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_2/bias"
}
}
}
}
node {
name: "save/RestoreV2_20/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_20"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_20/tensor_names"
input: "save/RestoreV2_20/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_20"
op: "Assign"
input: "dense_2/bias"
input: "save/RestoreV2_20"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_21/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_2/bias/Adam"
}
}
}
}
node {
name: "save/RestoreV2_21/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_21"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_21/tensor_names"
input: "save/RestoreV2_21/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_21"
op: "Assign"
input: "dense_2/bias/Adam"
input: "save/RestoreV2_21"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_22/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_2/bias/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_22/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_22"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_22/tensor_names"
input: "save/RestoreV2_22/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_22"
op: "Assign"
input: "dense_2/bias/Adam_1"
input: "save/RestoreV2_22"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/bias"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_23/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_2/kernel"
}
}
}
}
node {
name: "save/RestoreV2_23/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_23"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_23/tensor_names"
input: "save/RestoreV2_23/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_23"
op: "Assign"
input: "dense_2/kernel"
input: "save/RestoreV2_23"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_24/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_2/kernel/Adam"
}
}
}
}
node {
name: "save/RestoreV2_24/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_24"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_24/tensor_names"
input: "save/RestoreV2_24/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_24"
op: "Assign"
input: "dense_2/kernel/Adam"
input: "save/RestoreV2_24"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
attr {
key: "use_locking"
value {
b: true
}
}
attr {
key: "validate_shape"
value {
b: true
}
}
}
node {
name: "save/RestoreV2_25/tensor_names"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: "dense_2/kernel/Adam_1"
}
}
}
}
node {
name: "save/RestoreV2_25/shape_and_slices"
op: "Const"
attr {
key: "dtype"
value {
type: DT_STRING
}
}
attr {
key: "value"
value {
tensor {
dtype: DT_STRING
tensor_shape {
dim {
size: 1
}
}
string_val: ""
}
}
}
}
node {
name: "save/RestoreV2_25"
op: "RestoreV2"
input: "save/Const"
input: "save/RestoreV2_25/tensor_names"
input: "save/RestoreV2_25/shape_and_slices"
attr {
key: "dtypes"
value {
list {
type: DT_FLOAT
}
}
}
}
node {
name: "save/Assign_25"
op: "Assign"
input: "dense_2/kernel/Adam_1"
input: "save/RestoreV2_25"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "_class"
value {
list {
s: "loc:@dense_2/kernel"
}
}
}
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"
input: "^save/Assign_6"
input: "^save/Assign_7"
input: "^save/Assign_8"
input: "^save/Assign_9"
input: "^save/Assign_10"
input: "^save/Assign_11"
input: "^save/Assign_12"
input: "^save/Assign_13"
input: "^save/Assign_14"
input: "^save/Assign_15"
input: "^save/Assign_16"
input: "^save/Assign_17"
input: "^save/Assign_18"
input: "^save/Assign_19"
input: "^save/Assign_20"
input: "^save/Assign_21"
input: "^save/Assign_22"
input: "^save/Assign_23"
input: "^save/Assign_24"
input: "^save/Assign_25"
}
versions {
producer: 24
}
In [51]:
activation_op.node_def
Out[51]:
name: "conv2d_1/Relu"
op: "Relu"
input: "conv2d_1/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
In [53]:
read_op = sess.graph.get_operation_by_name('conv2d_2/kernel/read')
read_op.outputs[0].shape.as_list()[:2]
Out[53]:
[3, 3]
In [55]:
conv_op.node_def
Out[55]:
name: "conv2d_1/convolution"
op: "Conv2D"
input: "Placeholder"
input: "conv2d_1/kernel/read"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
attr {
key: "data_format"
value {
s: "NHWC"
}
}
attr {
key: "padding"
value {
s: "VALID"
}
}
attr {
key: "strides"
value {
list {
i: 1
i: 1
i: 1
i: 1
}
}
}
attr {
key: "use_cudnn_on_gpu"
value {
b: true
}
}
In [56]:
# The padding value has to be decoded from bytes into a string.
conv_op.node_def.attr['padding'].s.decode('utf8')
Out[56]:
'VALID'
In [57]:
strides = conv_op.node_def.attr['strides']
strides.list.i[1], strides.list.i[2]
Out[57]:
(1, 1)
In [58]:
max_pool_op = sess.graph.get_operation_by_name('max_pooling2d_1/MaxPool')
max_pool_op.node_def
Out[58]:
name: "max_pooling2d_1/MaxPool"
op: "MaxPool"
input: "conv2d_1/Relu"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
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
}
}
}
In [63]:
kernel = max_pool_op.node_def.attr['ksize']
kernel.list.i[1], kernel.list.i[2]
Out[63]:
(2, 2)
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
Content source: Petr-By/qtpyvis
Similar notebooks: