1. 程式人生 > >TensorFlow 存儲與讀取

TensorFlow 存儲與讀取

.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 存儲與讀取