TensorFlow saver指定變量的存取
今天和大家分享一下用TensorFlow的saver存取訓(xùn)練好的模型那點(diǎn)事。
1. 用saver存取變量;
2. 用saver存取指定變量。
用saver存取變量。
話不多說(shuō),先上代碼
# coding=utf-8
import os
import tensorflow as tf
import numpy
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #有些指令集沒有裝,加這個(gè)不顯示那些警告
w = tf.Variable([[1,2,3],[2,3,4],[6,7,8]],dtype=tf.float32)
b = tf.Variable([[4,5,6]],dtype=tf.float32,)
s = tf.Variable([[2, 5],[5, 6]], dtype=tf.float32)
init = tf.global_variables_initializer()
saver =tf.train.Saver()
with tf.Session() as sess:
sess.run(init)
save_path = saver.save(sess, "save_net.ckpt")#路徑可以自己定
print("save to path:",save_path)
這里我隨便定義了幾個(gè)變量然后進(jìn)行存操作,運(yùn)行后,變量w,b,s會(huì)被保存下來(lái)。保存會(huì)生成如下幾個(gè)文件:
- cheakpoint
- save_net.ckpt.data-*
- save_net.ckpt.index
- save_net.ckpt.meta
接下來(lái)是讀取的代碼
import tensorflow as tf
import os
import numpy as np
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
w = tf.Variable(np.arange(9).reshape((3,3)),dtype=tf.float32)
b = tf.Variable(np.arange(3).reshape((1,3)),dtype=tf.float32)
a = tf.Variable(np.arange(4).reshape((2,2)),dtype=tf.float32)
saver =tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess,'save_net.ckpt')
print ("weights",sess.run(w))
print ("b",sess.run(b))
print ("s",sess.run(a))
在寫讀取代碼時(shí)要注意變量定義的類型、大小和變量的數(shù)量以及順序等要與存的時(shí)候一致,不然會(huì)報(bào)錯(cuò)。你存的時(shí)候順序是w,b,s,取的時(shí)候同樣這個(gè)順序。存的時(shí)候w定義了dtype沒有 定義name,取的時(shí)候同樣要這樣,因?yàn)門ensorFlow存取是按照鍵值對(duì)來(lái)存取的,所以必須一致。這里變量名,也就是w,s之類可以不同。
如下是我成功讀取的效果

用saver存取指定變量。
在我們做訓(xùn)練時(shí)候,有些變量是沒有必要保存的,但是如果直接用tf.train.Saver()。程序會(huì)將所有的變量保存下來(lái),這時(shí)候我們可以指定保存,只保存我們需要的變量,其他的統(tǒng)統(tǒng)丟掉。
其實(shí)很簡(jiǎn)單,只需要在上面代碼基礎(chǔ)上稍加修改,只需把tf.train.Saver()替換成如下代碼
program = [] program += [w,b] tf.train.Saver(program)
這樣,程序就只會(huì)存w和b了。同樣,讀取程序里面的tf.train.Saver()也要做如上修改。dtype,name之類依舊必須一致。
最后附上最終代碼:
# coding=utf-8
# saver保存變量測(cè)試
import os
import tensorflow as tf
import numpy
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #有些指令集沒有裝,加這個(gè)不顯示那些警告
w = tf.Variable([[1,2,3],[2,3,4],[6,7,8]],dtype=tf.float32)
b = tf.Variable([[4,5,6]],dtype=tf.float32,)
s = tf.Variable([[2, 5],[5, 6]], dtype=tf.float32)
init = tf.global_variables_initializer()
program = []
program += [w, b]
saver =tf.train.Saver(program)
with tf.Session() as sess:
sess.run(init)
save_path = saver.save(sess, "save_net.ckpt")#路徑可以自己定
print("save to path:",save_path)
#saver提取變量測(cè)試
import tensorflow as tf
import os
import numpy as np
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
w = tf.Variable(np.arange(9).reshape((3,3)),dtype=tf.float32)
b = tf.Variable(np.arange(3).reshape((1,3)),dtype=tf.float32)
a = tf.Variable(np.arange(4).reshape((2,2)),dtype=tf.float32)
program = []
program +=[w,b]
saver =tf.train.Saver(program)
with tf.Session() as sess:
saver.restore(sess,'save_net.ckpt')
print ("weights",sess.run(w))
print ("b",sess.run(b))
#print ("s",sess.run(a))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于django 數(shù)據(jù)庫(kù)遷移(migrate)應(yīng)該知道的一些事
今天小編就為大家分享一篇關(guān)于django 數(shù)據(jù)庫(kù)遷移(migrate)應(yīng)該知道的一些事,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python3操作Excel文件(讀寫)的簡(jiǎn)單實(shí)例
這篇文章主要給大家介紹了關(guān)于Python3操作Excel文件(讀寫)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Python中DataFrame與內(nèi)置數(shù)據(jù)結(jié)構(gòu)相互轉(zhuǎn)換的實(shí)現(xiàn)
pandas?支持我們從?Excel、CSV、數(shù)據(jù)庫(kù)等不同數(shù)據(jù)源當(dāng)中讀取數(shù)據(jù),來(lái)構(gòu)建?DataFrame。但有時(shí)數(shù)據(jù)并不來(lái)自這些外部數(shù)據(jù)源,這就涉及到了?DataFrame?和?Python?內(nèi)置數(shù)據(jù)結(jié)構(gòu)之間的相互轉(zhuǎn)換,本文就來(lái)和大家詳細(xì)聊聊2023-02-02
bluepy 一款python封裝的BLE利器簡(jiǎn)單介紹
這篇文章主要介紹了bluepy 一款python封裝的BLE利器簡(jiǎn)單介紹,bluepy 是github上一個(gè)很好的藍(lán)牙開源項(xiàng)目, 其主要功能是用python實(shí)現(xiàn)linux上BLE的接口。,需要的朋友可以參考下2019-06-06
Python根據(jù)字符串調(diào)用函數(shù)過(guò)程解析
這篇文章主要介紹了Python根據(jù)字符串調(diào)用函數(shù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Python編寫運(yùn)維進(jìn)程文件目錄操作實(shí)用腳本示例
這篇文章主要為大家介紹了Python編寫實(shí)用運(yùn)維進(jìn)程文件目錄的操作腳本示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
python3 webp轉(zhuǎn)gif格式的實(shí)現(xiàn)示例
這篇文章主要介紹了python3 webp轉(zhuǎn)gif格式的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python?Prometheus接口揭秘?cái)?shù)據(jù)科學(xué)新技巧
本篇文章將分享Prometheus?API的基本概念到PromQL查詢語(yǔ)言的應(yīng)用,再到如何通過(guò)Python與Prometheus?API進(jìn)行無(wú)縫交互,通過(guò)豐富的示例代碼和詳細(xì)的講解,將解鎖使用Python進(jìn)行實(shí)時(shí)監(jiān)控的奇妙世界,為讀者打開更廣闊的數(shù)據(jù)分析視野2024-01-01

