TensorFlow 存儲與讀取
阿新 • • 發佈:2017-12-12
.get 最佳實踐 variable .py 通過 nod spa clas utf
之前通過CNN進行的MNIST訓練識別成功率已經很高了,不過每次運行都需要消耗很多的時間。在實際使用的時候,每次都要選經過訓練後在進行識別那就太不方便了。
所以我們學習一下如何將訓練習得的參數保存起來,然後在需要用的時候直接使用這些參數進行快速的識別。
本章節代碼來自《Tensorflow 實戰Google深度學習框架》5.5 TensorFlow 最佳實踐樣例程序 針對書中的代碼做了一點點的調整。
mnist_inference.py:
#coding=utf-8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE= 784 OUTPUT_NODE = 10 LAYER1_NODE = 500 def get_weight_variable(shape, regularizer): weights = tf.get_variable("weights", shape, initializer = tf.truncated_normal_initializer(stddev=0.1)) if regularizer != None: tf.add_to_collection(‘losses‘, regularizer(weights)) return weights def inference(input_tensor, regularizer): with tf.variable_scope(‘layer1‘): weights = get_weight_variable([INPUT_NODE, LAYER1_NODE], regularizer) biases = tf.get_variable("biases", [LAYER1_NODE], initializer=tf.constant_initializer(0.0)) layer1 = tf.nn.relu(tf.matmul(input_tensor, weights) + biases) with tf.variable_scope(‘layer2‘): weights= get_weight_variable([LAYER1_NODE, OUTPUT_NODE], regularizer) biases = tf.get_variable("biases", [OUTPUT_NODE], initializer=tf.constant_initializer(0.0)) layer2 = tf.matmul(layer1, weights) + biases return layer2
這裏是向前傳播的方法文件。這個方法在訓練和測試的過程都需要用到,將它抽離出來既能使用起來更加方便,也能保證訓練和測試時使用的方法保持一致。
get_variable
weights = tf.get_variable("weights", shape, initializer = tf.truncated_normal_initializer(stddev=0.1))
源代碼第十行使用get_variable函數獲取變量。
在訓練網絡是會創建這些變量;
在測試時會通過訓練時保存的模型加載這些變量的值。
(未完待續。。。。)
TensorFlow 存儲與讀取