39 KiB
39 KiB
In [1]:
## USE for Multi GPU Systems #import os #os.environ["CUDA_VISIBLE_DEVICES"]="0" import numpy as np import matplotlib.pyplot as plt import pandas as pd import math import tensorflow as tf %matplotlib inline # Importing SK-learn to calculate precision and recall import sklearn from sklearn import metrics # Used for graph export from tensorflow.python.framework import graph_util from tensorflow.python.framework import graph_io from keras import backend as K target_names = ["tap", "twotap", "swipeleft", "swiperight", "swipeup", "swipedown", "twoswipeup", "twoswipedown", "circle", "arrowheadleft", "arrowheadright", "checkmark", "flashlight", "l", "lmirrored", "screenshot", "rotate"]
Using TensorFlow backend.
In [2]:
df = pd.read_pickle("DataStudyCollection/df_lstm_norm50.pkl") lst = df.userID.unique() np.random.seed(42) np.random.shuffle(lst) test_ids = lst[-5:] train_ids = lst[:-5] print(train_ids, test_ids) df.TaskID = df.TaskID % 17 x = np.concatenate(df.Blobs.values).reshape(-1,50,27,15,1) x = x / 255.0 # convert class vectors to binary class matrices (one-hot notation) num_classes = len(df.TaskID.unique()) y = utils.to_categorical(df.TaskID, num_classes) labels = sorted(df.TaskID.unique())
[ 1 2 9 6 4 14 17 16 12 3 10 18 5] [13 8 11 15 7]
In [3]:
# If GPU is not available: # GPU_USE = '/cpu:0' #config = tf.ConfigProto(device_count = {"GPU": 1}) # If GPU is available: config = tf.ConfigProto() config.log_device_placement = True config.allow_soft_placement = True config.gpu_options.allow_growth=True config.gpu_options.allocator_type = 'BFC' # Limit the maximum memory used config.gpu_options.per_process_gpu_memory_fraction = 0.3 # set session config sess = tf.Session(config=config) tf.keras.backend.set_session(sess)
In [4]:
model = tf.keras.models.load_model('./ModelSnapshots/LSTM-v2-00398.h5')
In [5]:
%%time lst = [] batch = 100 for i in range(0, len(x), batch): _x = x[i : i+batch] lst.extend(model.predict(_x))
CPU times: user 47.2 s, sys: 6.47 s, total: 53.6 s Wall time: 30.9 s
In [6]:
len(df)
Out[6]:
9193
In [7]:
df["TaskIDPred"] = lst df.TaskIDPred = df.TaskIDPred.apply(lambda x: np.argmax(x))
In [8]:
df_train = df[df.userID.isin(train_ids)] df_test = df[df.userID.isin(test_ids)]
In [9]:
print(sklearn.metrics.confusion_matrix(df_train.TaskID.values, df_train.TaskIDPred.values, labels=labels)) cm = sklearn.metrics.confusion_matrix(df_train.TaskID.values, df_train.TaskIDPred.values, labels=labels) cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] print(np.round(cm,1)) print("Accuray: %.3f" % sklearn.metrics.accuracy_score(df_train.TaskID.values, df_train.TaskIDPred.values)) print("Recall: %.3f" % metrics.recall_score(df_train.TaskID.values, df_train.TaskIDPred.values, average='macro')) #print("Precision: %.2f" % metrics.average_precision_score(df_train.TaskID.values, df_train.TaskIDPred.values)) print("F1-Score: %.3f" % metrics.f1_score(df_train.TaskID.values, df_train.TaskIDPred.values, average='macro')) print(sklearn.metrics.classification_report(df_train.TaskID.values, df_train.TaskIDPred.values, target_names=target_names))
[[323 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 11] [ 1 443 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0] [ 1 0 333 1 0 0 0 0 0 0 0 0 0 0 2 0 0] [ 3 0 0 317 0 0 0 0 0 0 0 0 0 1 0 0 0] [ 1 0 0 0 321 1 0 1 0 0 0 0 1 0 0 0 0] [ 1 0 0 0 0 327 0 0 0 0 0 0 1 1 0 1 3] [ 0 0 0 0 0 0 431 2 0 0 0 0 0 0 1 0 0] [ 0 0 0 0 0 1 1 436 0 0 0 0 0 0 0 0 0] [ 0 0 0 1 0 0 0 0 396 1 0 3 0 1 2 0 0] [ 1 1 6 1 0 0 0 0 0 374 0 3 0 2 0 0 0] [ 0 0 0 4 0 1 0 0 0 0 380 0 0 0 1 2 0] [ 0 0 0 0 0 0 0 0 0 0 0 364 0 0 0 0 0] [ 0 0 0 2 4 2 0 0 0 0 0 0 394 0 0 0 1] [ 0 0 0 6 0 3 0 0 1 3 0 4 1 383 0 0 0] [ 0 0 2 0 0 2 0 0 0 0 1 0 2 0 407 0 0] [ 0 0 0 0 0 0 0 0 1 0 5 0 0 0 20 376 0] [ 12 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 477]] [[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. ]] Accuray: 0.979 Recall: 0.979 F1-Score: 0.978 precision recall f1-score support tap 0.94 0.96 0.95 336 twotap 1.00 1.00 1.00 445 swipeleft 0.98 0.99 0.98 337 swiperight 0.95 0.99 0.97 321 swipeup 0.99 0.99 0.99 325 swipedown 0.97 0.98 0.97 334 twoswipeup 1.00 0.99 0.99 434 twoswipedown 0.99 1.00 0.99 438 circle 0.99 0.98 0.99 404 arrowheadleft 0.99 0.96 0.98 388 arrowheadright 0.98 0.98 0.98 388 checkmark 0.97 1.00 0.99 364 flashlight 0.98 0.98 0.98 403 l 0.99 0.96 0.97 401 lmirrored 0.94 0.98 0.96 414 screenshot 0.99 0.94 0.96 402 rotate 0.97 0.97 0.97 490 micro avg 0.98 0.98 0.98 6624 macro avg 0.98 0.98 0.98 6624 weighted avg 0.98 0.98 0.98 6624
In [10]:
print(sklearn.metrics.confusion_matrix(df_test.TaskID.values, df_test.TaskIDPred.values, labels=labels)) cm = sklearn.metrics.confusion_matrix(df_test.TaskID.values, df_test.TaskIDPred.values, labels=labels) cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] print(np.round(cm,1)) print("Accuray: %.3f" % sklearn.metrics.accuracy_score(df_test.TaskID.values, df_test.TaskIDPred.values)) print("Recall: %.3f" % metrics.recall_score(df_test.TaskID.values, df_test.TaskIDPred.values, average='macro')) #print("Precision: %.2f" % metrics.average_precision_score(df_test.TaskID.values, df_test.TaskIDPred.values)) print("F1-Score: %.3f" % metrics.f1_score(df_test.TaskID.values, df_test.TaskIDPred.values, average='macro')) print(sklearn.metrics.classification_report(df_test.TaskID.values, df_test.TaskIDPred.values, target_names=target_names))
[[ 98 5 1 1 0 7 0 5 0 0 0 0 5 0 0 0 4] [ 2 130 0 0 4 0 6 1 0 0 0 0 4 0 0 0 1] [ 0 0 103 0 0 0 0 0 0 0 0 0 0 0 27 0 0] [ 0 0 0 106 0 0 0 0 0 2 0 1 1 17 0 0 0] [ 0 0 0 0 116 0 0 0 2 0 0 0 10 0 0 0 0] [ 0 0 0 0 1 124 0 0 0 0 0 1 2 0 6 0 1] [ 0 0 0 0 17 0 144 0 0 0 0 0 3 0 0 0 0] [ 0 0 0 0 0 18 0 151 0 0 0 0 0 0 0 0 0] [ 0 3 1 0 0 0 1 0 130 8 0 4 0 4 14 1 0] [ 0 0 1 0 0 0 0 0 0 136 0 3 1 11 0 2 0] [ 0 0 0 0 0 1 0 0 0 1 124 0 0 0 4 22 0] [ 0 0 0 2 1 0 0 0 2 1 0 140 1 0 0 0 0] [ 0 0 1 0 6 15 0 0 1 0 0 0 139 2 0 0 0] [ 0 0 0 0 0 3 0 0 0 2 0 2 2 149 1 0 0] [ 1 0 0 0 0 2 0 0 0 0 7 0 1 1 151 0 0] [ 0 0 0 1 0 0 0 0 2 3 2 0 0 0 6 146 0] [ 31 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 142]] [[0.8 0. 0. 0. 0. 0.1 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0.9 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0.8 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0. 0. ] [0. 0. 0. 0.8 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.1 0. 0. 0. ] [0. 0. 0. 0. 0.9 0. 0. 0. 0. 0. 0. 0. 0.1 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0.9 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0.1 0. 0.9 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0.1 0. 0.9 0. 0. 0. 0. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0.8 0. 0. 0. 0. 0. 0.1 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 0. 0. 0. 0.1 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.8 0. 0. 0. 0. 0.1 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0.1 0. 0. 0. 0. 0. 0. 0.8 0. 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 0. 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 0. 0. ] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 0. ] [0.2 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.8]] Accuray: 0.868 Recall: 0.867 F1-Score: 0.868 precision recall f1-score support tap 0.74 0.78 0.76 126 twotap 0.94 0.88 0.91 148 swipeleft 0.96 0.79 0.87 130 swiperight 0.96 0.83 0.89 127 swipeup 0.80 0.91 0.85 128 swipedown 0.73 0.92 0.81 135 twoswipeup 0.95 0.88 0.91 164 twoswipedown 0.96 0.89 0.93 169 circle 0.95 0.78 0.86 166 arrowheadleft 0.89 0.88 0.89 154 arrowheadright 0.93 0.82 0.87 152 checkmark 0.92 0.95 0.93 147 flashlight 0.82 0.85 0.83 164 l 0.81 0.94 0.87 159 lmirrored 0.72 0.93 0.81 163 screenshot 0.85 0.91 0.88 160 rotate 0.96 0.80 0.87 177 micro avg 0.87 0.87 0.87 2569 macro avg 0.88 0.87 0.87 2569 weighted avg 0.88 0.87 0.87 2569
In [ ]:
Export¶
In [11]:
output_node_prefix = "output_node" num_output = 1 pred = [None]*num_output pred_node_names = [None]*num_output for i in range(num_output): pred_node_names[i] = output_node_prefix+str(i) pred[i] = tf.identity(model.outputs[i], name=pred_node_names[i]) print('output nodes names are: ', pred_node_names) output_node_prefix = pred_node_names[0]
output nodes names are: ['output_node0']
In [12]:
model.inputs[0]
Out[12]:
<tf.Tensor 'time_distributed_10_input:0' shape=(?, 50, 27, 15, 1) dtype=float32>
In [13]:
#sess = K.get_session()
In [14]:
output_path = "./Models/" output_file = "LSTM.pb"
In [15]:
g = tf.GraphDef() g.ParseFromString(open(output_path + output_file, "rb").read()) s = "" for n in g.node: s =s + str(n.name) + "\n" print(s)
time_distributed_10_input time_distributed_10/kernel time_distributed_10/kernel/read time_distributed_10/bias time_distributed_10/bias/read time_distributed_10/Reshape/shape time_distributed_10/Reshape time_distributed_10/convolution time_distributed_10/BiasAdd time_distributed_10/Relu time_distributed_10/Reshape_1/shape time_distributed_10/Reshape_1 time_distributed_11/kernel time_distributed_11/kernel/read time_distributed_11/bias time_distributed_11/bias/read time_distributed_11/Reshape/shape time_distributed_11/Reshape time_distributed_11/convolution time_distributed_11/BiasAdd time_distributed_11/Relu time_distributed_11/Reshape_1/shape time_distributed_11/Reshape_1 time_distributed_12/Reshape/shape time_distributed_12/Reshape time_distributed_12/MaxPool time_distributed_12/Reshape_1/shape time_distributed_12/Reshape_1 time_distributed_13/Reshape/shape time_distributed_13/Reshape time_distributed_13/keras_learning_phase/input time_distributed_13/keras_learning_phase time_distributed_13/cond/Switch time_distributed_13/cond/switch_t time_distributed_13/cond/pred_id time_distributed_13/cond/mul/y time_distributed_13/cond/mul time_distributed_13/cond/mul/Switch time_distributed_13/cond/dropout/keep_prob time_distributed_13/cond/dropout/Shape time_distributed_13/cond/dropout/random_uniform/min time_distributed_13/cond/dropout/random_uniform/max time_distributed_13/cond/dropout/random_uniform/RandomUniform time_distributed_13/cond/dropout/random_uniform/sub time_distributed_13/cond/dropout/random_uniform/mul time_distributed_13/cond/dropout/random_uniform time_distributed_13/cond/dropout/add time_distributed_13/cond/dropout/Floor time_distributed_13/cond/dropout/div time_distributed_13/cond/dropout/mul time_distributed_13/cond/Switch_1 time_distributed_13/cond/Merge time_distributed_13/Reshape_1/shape time_distributed_13/Reshape_1 time_distributed_14/kernel time_distributed_14/kernel/read time_distributed_14/bias time_distributed_14/bias/read time_distributed_14/Reshape/shape time_distributed_14/Reshape time_distributed_14/convolution time_distributed_14/BiasAdd time_distributed_14/Relu time_distributed_14/Reshape_1/shape time_distributed_14/Reshape_1 time_distributed_15/kernel time_distributed_15/kernel/read time_distributed_15/bias time_distributed_15/bias/read time_distributed_15/Reshape/shape time_distributed_15/Reshape time_distributed_15/convolution time_distributed_15/BiasAdd time_distributed_15/Relu time_distributed_15/Reshape_1/shape time_distributed_15/Reshape_1 time_distributed_16/Reshape/shape time_distributed_16/Reshape time_distributed_16/MaxPool time_distributed_16/Reshape_1/shape time_distributed_16/Reshape_1 time_distributed_17/Reshape/shape time_distributed_17/Reshape time_distributed_17/cond/Switch time_distributed_17/cond/switch_t time_distributed_17/cond/pred_id time_distributed_17/cond/mul/y time_distributed_17/cond/mul time_distributed_17/cond/mul/Switch time_distributed_17/cond/dropout/keep_prob time_distributed_17/cond/dropout/Shape time_distributed_17/cond/dropout/random_uniform/min time_distributed_17/cond/dropout/random_uniform/max time_distributed_17/cond/dropout/random_uniform/RandomUniform time_distributed_17/cond/dropout/random_uniform/sub time_distributed_17/cond/dropout/random_uniform/mul time_distributed_17/cond/dropout/random_uniform time_distributed_17/cond/dropout/add time_distributed_17/cond/dropout/Floor time_distributed_17/cond/dropout/div time_distributed_17/cond/dropout/mul time_distributed_17/cond/Switch_1 time_distributed_17/cond/Merge time_distributed_17/Reshape_1/shape time_distributed_17/Reshape_1 time_distributed_18/Reshape/shape time_distributed_18/Reshape time_distributed_18/Shape time_distributed_18/strided_slice/stack time_distributed_18/strided_slice/stack_1 time_distributed_18/strided_slice/stack_2 time_distributed_18/strided_slice time_distributed_18/Const time_distributed_18/Prod time_distributed_18/stack/0 time_distributed_18/stack time_distributed_18/Reshape_1 time_distributed_18/Reshape_2/shape time_distributed_18/Reshape_2 lstm_3/kernel lstm_3/kernel/read lstm_3/recurrent_kernel lstm_3/recurrent_kernel/read lstm_3/bias lstm_3/bias/read lstm_3/strided_slice/stack lstm_3/strided_slice/stack_1 lstm_3/strided_slice/stack_2 lstm_3/strided_slice lstm_3/strided_slice_1/stack lstm_3/strided_slice_1/stack_1 lstm_3/strided_slice_1/stack_2 lstm_3/strided_slice_1 lstm_3/strided_slice_2/stack lstm_3/strided_slice_2/stack_1 lstm_3/strided_slice_2/stack_2 lstm_3/strided_slice_2 lstm_3/strided_slice_3/stack lstm_3/strided_slice_3/stack_1 lstm_3/strided_slice_3/stack_2 lstm_3/strided_slice_3 lstm_3/strided_slice_4/stack lstm_3/strided_slice_4/stack_1 lstm_3/strided_slice_4/stack_2 lstm_3/strided_slice_4 lstm_3/strided_slice_5/stack lstm_3/strided_slice_5/stack_1 lstm_3/strided_slice_5/stack_2 lstm_3/strided_slice_5 lstm_3/strided_slice_6/stack lstm_3/strided_slice_6/stack_1 lstm_3/strided_slice_6/stack_2 lstm_3/strided_slice_6 lstm_3/strided_slice_7/stack lstm_3/strided_slice_7/stack_1 lstm_3/strided_slice_7/stack_2 lstm_3/strided_slice_7 lstm_3/strided_slice_8/stack lstm_3/strided_slice_8/stack_1 lstm_3/strided_slice_8/stack_2 lstm_3/strided_slice_8 lstm_3/strided_slice_9/stack lstm_3/strided_slice_9/stack_1 lstm_3/strided_slice_9/stack_2 lstm_3/strided_slice_9 lstm_3/strided_slice_10/stack lstm_3/strided_slice_10/stack_1 lstm_3/strided_slice_10/stack_2 lstm_3/strided_slice_10 lstm_3/strided_slice_11/stack lstm_3/strided_slice_11/stack_1 lstm_3/strided_slice_11/stack_2 lstm_3/strided_slice_11 lstm_3/zeros_like lstm_3/Sum/reduction_indices lstm_3/Sum lstm_3/ExpandDims/dim lstm_3/ExpandDims lstm_3/Tile/multiples lstm_3/Tile lstm_3/Tile_1/multiples lstm_3/Tile_1 lstm_3/transpose/perm lstm_3/transpose lstm_3/Shape lstm_3/strided_slice_12/stack lstm_3/strided_slice_12/stack_1 lstm_3/strided_slice_12/stack_2 lstm_3/strided_slice_12 lstm_3/TensorArray lstm_3/TensorArray_1 lstm_3/TensorArrayUnstack/Shape lstm_3/TensorArrayUnstack/strided_slice/stack lstm_3/TensorArrayUnstack/strided_slice/stack_1 lstm_3/TensorArrayUnstack/strided_slice/stack_2 lstm_3/TensorArrayUnstack/strided_slice lstm_3/TensorArrayUnstack/range/start lstm_3/TensorArrayUnstack/range/delta lstm_3/TensorArrayUnstack/range lstm_3/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3 lstm_3/time lstm_3/while/maximum_iterations lstm_3/while/iteration_counter lstm_3/while/Enter lstm_3/while/Enter_1 lstm_3/while/Enter_2 lstm_3/while/Enter_3 lstm_3/while/Enter_4 lstm_3/while/Merge lstm_3/while/Merge_1 lstm_3/while/Merge_2 lstm_3/while/Merge_3 lstm_3/while/Merge_4 lstm_3/while/Less lstm_3/while/Less/Enter lstm_3/while/Less_1 lstm_3/while/Less_1/Enter lstm_3/while/LogicalAnd lstm_3/while/LoopCond lstm_3/while/Switch lstm_3/while/Switch_1 lstm_3/while/Switch_2 lstm_3/while/Switch_3 lstm_3/while/Switch_4 lstm_3/while/Identity lstm_3/while/Identity_1 lstm_3/while/Identity_2 lstm_3/while/Identity_3 lstm_3/while/Identity_4 lstm_3/while/add/y lstm_3/while/add lstm_3/while/TensorArrayReadV3 lstm_3/while/TensorArrayReadV3/Enter lstm_3/while/TensorArrayReadV3/Enter_1 lstm_3/while/MatMul lstm_3/while/MatMul/Enter lstm_3/while/MatMul_1 lstm_3/while/MatMul_1/Enter lstm_3/while/MatMul_2 lstm_3/while/MatMul_2/Enter lstm_3/while/MatMul_3 lstm_3/while/MatMul_3/Enter lstm_3/while/BiasAdd lstm_3/while/BiasAdd/Enter lstm_3/while/BiasAdd_1 lstm_3/while/BiasAdd_1/Enter lstm_3/while/BiasAdd_2 lstm_3/while/BiasAdd_2/Enter lstm_3/while/BiasAdd_3 lstm_3/while/BiasAdd_3/Enter lstm_3/while/MatMul_4 lstm_3/while/MatMul_4/Enter lstm_3/while/add_1 lstm_3/while/mul/x lstm_3/while/mul lstm_3/while/add_2/y lstm_3/while/add_2 lstm_3/while/Const lstm_3/while/Const_1 lstm_3/while/clip_by_value/Minimum lstm_3/while/clip_by_value lstm_3/while/MatMul_5 lstm_3/while/MatMul_5/Enter lstm_3/while/add_3 lstm_3/while/mul_1/x lstm_3/while/mul_1 lstm_3/while/add_4/y lstm_3/while/add_4 lstm_3/while/Const_2 lstm_3/while/Const_3 lstm_3/while/clip_by_value_1/Minimum lstm_3/while/clip_by_value_1 lstm_3/while/mul_2 lstm_3/while/MatMul_6 lstm_3/while/MatMul_6/Enter lstm_3/while/add_5 lstm_3/while/Tanh lstm_3/while/mul_3 lstm_3/while/add_6 lstm_3/while/MatMul_7 lstm_3/while/MatMul_7/Enter lstm_3/while/add_7 lstm_3/while/mul_4/x lstm_3/while/mul_4 lstm_3/while/add_8/y lstm_3/while/add_8 lstm_3/while/Const_4 lstm_3/while/Const_5 lstm_3/while/clip_by_value_2/Minimum lstm_3/while/clip_by_value_2 lstm_3/while/Tanh_1 lstm_3/while/mul_5 lstm_3/while/TensorArrayWrite/TensorArrayWriteV3 lstm_3/while/TensorArrayWrite/TensorArrayWriteV3/Enter lstm_3/while/add_9/y lstm_3/while/add_9 lstm_3/while/NextIteration lstm_3/while/NextIteration_1 lstm_3/while/NextIteration_2 lstm_3/while/NextIteration_3 lstm_3/while/NextIteration_4 lstm_3/while/Exit_2 lstm_3/TensorArrayStack/TensorArraySizeV3 lstm_3/TensorArrayStack/range/start lstm_3/TensorArrayStack/range/delta lstm_3/TensorArrayStack/range lstm_3/TensorArrayStack/TensorArrayGatherV3 lstm_3/transpose_1/perm lstm_3/transpose_1 dropout_7/cond/Switch dropout_7/cond/switch_t dropout_7/cond/pred_id dropout_7/cond/mul/y dropout_7/cond/mul dropout_7/cond/mul/Switch dropout_7/cond/dropout/keep_prob dropout_7/cond/dropout/Shape dropout_7/cond/dropout/random_uniform/min dropout_7/cond/dropout/random_uniform/max dropout_7/cond/dropout/random_uniform/RandomUniform dropout_7/cond/dropout/random_uniform/sub dropout_7/cond/dropout/random_uniform/mul dropout_7/cond/dropout/random_uniform dropout_7/cond/dropout/add dropout_7/cond/dropout/Floor dropout_7/cond/dropout/div dropout_7/cond/dropout/mul dropout_7/cond/Switch_1 dropout_7/cond/Merge lstm_4/kernel lstm_4/kernel/read lstm_4/recurrent_kernel lstm_4/recurrent_kernel/read lstm_4/bias lstm_4/bias/read lstm_4/strided_slice/stack lstm_4/strided_slice/stack_1 lstm_4/strided_slice/stack_2 lstm_4/strided_slice lstm_4/strided_slice_1/stack lstm_4/strided_slice_1/stack_1 lstm_4/strided_slice_1/stack_2 lstm_4/strided_slice_1 lstm_4/strided_slice_2/stack lstm_4/strided_slice_2/stack_1 lstm_4/strided_slice_2/stack_2 lstm_4/strided_slice_2 lstm_4/strided_slice_3/stack lstm_4/strided_slice_3/stack_1 lstm_4/strided_slice_3/stack_2 lstm_4/strided_slice_3 lstm_4/strided_slice_4/stack lstm_4/strided_slice_4/stack_1 lstm_4/strided_slice_4/stack_2 lstm_4/strided_slice_4 lstm_4/strided_slice_5/stack lstm_4/strided_slice_5/stack_1 lstm_4/strided_slice_5/stack_2 lstm_4/strided_slice_5 lstm_4/strided_slice_6/stack lstm_4/strided_slice_6/stack_1 lstm_4/strided_slice_6/stack_2 lstm_4/strided_slice_6 lstm_4/strided_slice_7/stack lstm_4/strided_slice_7/stack_1 lstm_4/strided_slice_7/stack_2 lstm_4/strided_slice_7 lstm_4/strided_slice_8/stack lstm_4/strided_slice_8/stack_1 lstm_4/strided_slice_8/stack_2 lstm_4/strided_slice_8 lstm_4/strided_slice_9/stack lstm_4/strided_slice_9/stack_1 lstm_4/strided_slice_9/stack_2 lstm_4/strided_slice_9 lstm_4/strided_slice_10/stack lstm_4/strided_slice_10/stack_1 lstm_4/strided_slice_10/stack_2 lstm_4/strided_slice_10 lstm_4/strided_slice_11/stack lstm_4/strided_slice_11/stack_1 lstm_4/strided_slice_11/stack_2 lstm_4/strided_slice_11 lstm_4/zeros_like lstm_4/Sum/reduction_indices lstm_4/Sum lstm_4/ExpandDims/dim lstm_4/ExpandDims lstm_4/Tile/multiples lstm_4/Tile lstm_4/Tile_1/multiples lstm_4/Tile_1 lstm_4/transpose/perm lstm_4/transpose lstm_4/Shape lstm_4/strided_slice_12/stack lstm_4/strided_slice_12/stack_1 lstm_4/strided_slice_12/stack_2 lstm_4/strided_slice_12 lstm_4/TensorArray lstm_4/TensorArray_1 lstm_4/TensorArrayUnstack/Shape lstm_4/TensorArrayUnstack/strided_slice/stack lstm_4/TensorArrayUnstack/strided_slice/stack_1 lstm_4/TensorArrayUnstack/strided_slice/stack_2 lstm_4/TensorArrayUnstack/strided_slice lstm_4/TensorArrayUnstack/range/start lstm_4/TensorArrayUnstack/range/delta lstm_4/TensorArrayUnstack/range lstm_4/TensorArrayUnstack/TensorArrayScatter/TensorArrayScatterV3 lstm_4/time lstm_4/while/maximum_iterations lstm_4/while/iteration_counter lstm_4/while/Enter lstm_4/while/Enter_1 lstm_4/while/Enter_2 lstm_4/while/Enter_3 lstm_4/while/Enter_4 lstm_4/while/Merge lstm_4/while/Merge_1 lstm_4/while/Merge_2 lstm_4/while/Merge_3 lstm_4/while/Merge_4 lstm_4/while/Less lstm_4/while/Less/Enter lstm_4/while/Less_1 lstm_4/while/Less_1/Enter lstm_4/while/LogicalAnd lstm_4/while/LoopCond lstm_4/while/Switch lstm_4/while/Switch_1 lstm_4/while/Switch_2 lstm_4/while/Switch_3 lstm_4/while/Switch_4 lstm_4/while/Identity lstm_4/while/Identity_1 lstm_4/while/Identity_2 lstm_4/while/Identity_3 lstm_4/while/Identity_4 lstm_4/while/add/y lstm_4/while/add lstm_4/while/TensorArrayReadV3 lstm_4/while/TensorArrayReadV3/Enter lstm_4/while/TensorArrayReadV3/Enter_1 lstm_4/while/MatMul lstm_4/while/MatMul/Enter lstm_4/while/MatMul_1 lstm_4/while/MatMul_1/Enter lstm_4/while/MatMul_2 lstm_4/while/MatMul_2/Enter lstm_4/while/MatMul_3 lstm_4/while/MatMul_3/Enter lstm_4/while/BiasAdd lstm_4/while/BiasAdd/Enter lstm_4/while/BiasAdd_1 lstm_4/while/BiasAdd_1/Enter lstm_4/while/BiasAdd_2 lstm_4/while/BiasAdd_2/Enter lstm_4/while/BiasAdd_3 lstm_4/while/BiasAdd_3/Enter lstm_4/while/MatMul_4 lstm_4/while/MatMul_4/Enter lstm_4/while/add_1 lstm_4/while/mul/x lstm_4/while/mul lstm_4/while/add_2/y lstm_4/while/add_2 lstm_4/while/Const lstm_4/while/Const_1 lstm_4/while/clip_by_value/Minimum lstm_4/while/clip_by_value lstm_4/while/MatMul_5 lstm_4/while/MatMul_5/Enter lstm_4/while/add_3 lstm_4/while/mul_1/x lstm_4/while/mul_1 lstm_4/while/add_4/y lstm_4/while/add_4 lstm_4/while/Const_2 lstm_4/while/Const_3 lstm_4/while/clip_by_value_1/Minimum lstm_4/while/clip_by_value_1 lstm_4/while/mul_2 lstm_4/while/MatMul_6 lstm_4/while/MatMul_6/Enter lstm_4/while/add_5 lstm_4/while/Tanh lstm_4/while/mul_3 lstm_4/while/add_6 lstm_4/while/MatMul_7 lstm_4/while/MatMul_7/Enter lstm_4/while/add_7 lstm_4/while/mul_4/x lstm_4/while/mul_4 lstm_4/while/add_8/y lstm_4/while/add_8 lstm_4/while/Const_4 lstm_4/while/Const_5 lstm_4/while/clip_by_value_2/Minimum lstm_4/while/clip_by_value_2 lstm_4/while/Tanh_1 lstm_4/while/mul_5 lstm_4/while/TensorArrayWrite/TensorArrayWriteV3 lstm_4/while/TensorArrayWrite/TensorArrayWriteV3/Enter lstm_4/while/add_9/y lstm_4/while/add_9 lstm_4/while/NextIteration lstm_4/while/NextIteration_1 lstm_4/while/NextIteration_2 lstm_4/while/NextIteration_3 lstm_4/while/NextIteration_4 lstm_4/while/Exit_1 lstm_4/while/Exit_2 lstm_4/sub/y lstm_4/sub lstm_4/TensorArrayReadV3 dropout_8/cond/Switch dropout_8/cond/switch_t dropout_8/cond/pred_id dropout_8/cond/mul/y dropout_8/cond/mul dropout_8/cond/mul/Switch dropout_8/cond/dropout/keep_prob dropout_8/cond/dropout/Shape dropout_8/cond/dropout/random_uniform/min dropout_8/cond/dropout/random_uniform/max dropout_8/cond/dropout/random_uniform/RandomUniform dropout_8/cond/dropout/random_uniform/sub dropout_8/cond/dropout/random_uniform/mul dropout_8/cond/dropout/random_uniform dropout_8/cond/dropout/add dropout_8/cond/dropout/Floor dropout_8/cond/dropout/div dropout_8/cond/dropout/mul dropout_8/cond/Switch_1 dropout_8/cond/Merge dense_2/kernel dense_2/kernel/read dense_2/bias dense_2/bias/read dense_2/MatMul dense_2/BiasAdd dense_2/Softmax output_node0
In [16]:
from tensorflow.python.framework import graph_util from tensorflow.python.framework import graph_io constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), pred_node_names) graph_io.write_graph(constant_graph, output_path, output_file, as_text=False) print('Saved the freezed graph at: ', (output_path + output_file))
INFO:tensorflow:Froze 16 variables. INFO:tensorflow:Converted 16 variables to const ops. Saved the freezed graph at: ./Models/LSTM.pb
In [ ]:
In [ ]: