Tensorflow實現(xiàn)在訓練好的模型上進行測試
Tensorflow可以使用訓練好的模型對新的數(shù)據(jù)進行測試,有兩種方法:第一種方法是調(diào)用模型和訓練在同一個py文件中,中情況比較簡單;第二種是訓練過程和調(diào)用模型過程分別在兩個py文件中。本文將講解第二種方法。
模型的保存
tensorflow提供可保存訓練模型的接口,使用起來也不是很難,直接上代碼講解:
#網(wǎng)絡結構 w1 = tf.Variable(tf.truncated_normal([in_units, h1_units], stddev=0.1)) b1 = tf.Variable(tf.zeros([h1_units])) y = tf.nn.softmax(tf.matmul(w1, x) + b1) tf.add_to_collection('network-output', y) x = tf.placeholder(tf.float32, [None, in_units], name='x') y_ = tf.placeholder(tf.float32, [None, 10], name='y_') #損失函數(shù)與優(yōu)化函數(shù) cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) train_step = tf.train.AdamOptimizer(rate).minimize(cross_entropy) saver = tf.train.Saver() with tf.Session() as sess: sess.run(init) saver.save(sess,"save/model.ckpt") train_step.run({x: train_x, y_: train_y})
以上代碼就完成了模型的保存,值得注意的是下面這行代碼
tf.add_to_collection('network-output', y)
這行代碼保存了神經(jīng)網(wǎng)絡的輸出,這個在后面使用導入模型過程中起到關鍵作用。
模型的導入
模型訓練并保存后就可以導入來評估模型在測試集上的表現(xiàn),網(wǎng)上很多文章只用簡單的四則運算來做例子,讓人看的頭大。還是先上代碼:
with tf.Session() as sess: saver = tf.train.import_meta_graph('./model.ckpt.meta') saver.restore(sess, './model.ckpt')# .data文件 pred = tf.get_collection('network-output')[0] graph = tf.get_default_graph() x = graph.get_operation_by_name('x').outputs[0] y_ = graph.get_operation_by_name('y_').outputs[0] y = sess.run(pred, feed_dict={x: test_x, y_: test_y})
講解一下關鍵的代碼,首先是pred = tf.get_collection('pred_network')[0],這行代碼獲得訓練過程中網(wǎng)絡輸出的“接口”,簡單理解就是,通過tf.get_collection() 這個方法獲取了整個網(wǎng)絡結構。獲得網(wǎng)絡結構后我們就需要喂它對應的數(shù)據(jù)y = sess.run(pred, feed_dict={x: test_x, y_: test_y}) 在訓練過程中我們的輸入是
x = tf.placeholder(tf.float32, [None, in_units], name='x') y_ = tf.placeholder(tf.float32, [None, 10], name='y_')
因此導入模型后所需的輸入也要與之對應可使用以下代碼獲得:
x = graph.get_operation_by_name('x').outputs[0] y_ = graph.get_operation_by_name('y_').outputs[0]
使用模型的最后一步就是輸入測試集,然后按照訓練好的網(wǎng)絡進行評估
sess.run(pred, feed_dict={x: test_x, y_: test_y})
理解下這行代碼,sess.run() 的函數(shù)原型為
run(fetches, feed_dict=None, options=None, run_metadata=None)
Tensorflow對 feed_dict 執(zhí)行fetches操作,因此在導入模型后的運算就是,按照訓練的網(wǎng)絡計算測試輸入的數(shù)據(jù)。
以上這篇Tensorflow實現(xiàn)在訓練好的模型上進行測試就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python日志打印里logging.getLogger源碼分析詳解
在本篇文章里小編給大家整理的是一篇關于Python logging.getLogger源碼分析的相關內(nèi)容,有興趣的朋友們可以學習參考下。2021-01-01Python分析特征數(shù)據(jù)類別與預處理方法速學
這篇文章主要為大家介紹了Python分析特征數(shù)據(jù)類別與預處理方法速學,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02python模塊與C和C++動態(tài)庫相互調(diào)用實現(xiàn)過程示例
這篇文章主要為大家介紹了python模塊與C和C++動態(tài)庫之間相互調(diào)用的實現(xiàn)過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11PyTorch實現(xiàn)更新部分網(wǎng)絡,其他不更新
今天小編就為大家分享一篇PyTorch實現(xiàn)更新部分網(wǎng)絡,其他不更新,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12