日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

tensorflow 1.x Saver(保存与加载模型) 预测

發布時間:2023/11/28 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tensorflow 1.x Saver(保存与加载模型) 预测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

20201231
tensorflow 1.X 模型保存

https://blog.csdn.net/qq_35290785/article/details/89646248

保存模型
saver=tf.train.Saver()

save_path=saver.save(sess,path+’\model\’+str(model_name)+‘model.ckpt’)
print(‘model save in file : {}’.format(save_path))

加載模型

with tf.Session() as sess:
new_saver = tf.train.import_meta_graph(path+’\model\’+str(model_name)+‘model.ckpt.meta’) #注意這里的后面有個meta后綴
new_saver.restore(sess, tf.train.latest_checkpoint(path+’\model\’))

加載預測

https://blog.csdn.net/luoyexuge/article/details/78209670
import tensorflow as tf
with tf.Session() as sess:new_saver=tf.train.import_meta_graph('/Users/shuubiasahi/Desktop/tensorflow/modelsave/model.ckpt-100.meta')new_saver.restore(sess,"/Users/shuubiasahi/Desktop/tensorflow/modelsave/model.ckpt-100")graph = tf.get_default_graph()x=graph.get_operation_by_name('x').outputs[0]y=tf.get_collection("pred_network")[0]print("109的預測值是:",sess.run(y, feed_dict={x: [[109]]}))

keras API 保存與加載
保存 Sequential 模型和 Functional 模型
建立用于實驗的模型

Sequential 模型和 Functional 模型保存方法相同,用Functional 模型演示

from tensorflow import keras
from tensorflow.keras import layers

#定義模型
inputs = keras.Input(shape=(784,), name=‘digits’)
x = layers.Dense(64, activation=‘relu’, name=‘dense_1’)(inputs)
x = layers.Dense(64, activation=‘relu’, name=‘dense_2’)(x)
outputs = layers.Dense(10, name=‘predictions’)(x)

model = keras.Model(inputs=inputs, outputs=outputs, name=‘3_layer_mlp’)
model.summary()

#訓練模型
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train = x_train.reshape(60000, 784).astype(‘float32’) / 255
x_test = x_test.reshape(10000, 784).astype(‘float32’) / 255

model.compile(loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
optimizer=keras.optimizers.RMSprop())
history = model.fit(x_train, y_train,
batch_size=64,
epochs=1)

Model: “3_layer_mlp”


Layer (type) Output Shape Param #

digits (InputLayer) [(None, 784)] 0


dense_1 (Dense) (None, 64) 50240


dense_2 (Dense) (None, 64) 4160


predictions (Dense) (None, 10) 650

Total params: 55,050
Trainable params: 55,050
Non-trainable params: 0


Train on 60000 samples
60000/60000 [==============================] - 3s 42us/sample - loss: 0.3146
整個模型的保存與恢復
#保存模型
model.save(‘path_to_my_model.h5’)
#恢復模型
new_model = keras.models.load_model(‘path_to_my_model.h5’)

new_model.summary()
Model: “3_layer_mlp”


Layer (type) Output Shape Param #

digits (InputLayer) [(None, 784)] 0


dense_1 (Dense) (None, 64) 50240


dense_2 (Dense) (None, 64) 4160


predictions (Dense) (None, 10) 650

Total params: 55,050
Trainable params: 55,050
Non-trainable params: 0


當調用model.save方法時:

模型的結構
模型的參數
模型的配置(compile里那些)
模型優化器的相關參數
默認情況下都會被保存,save方法定義如下

save(
filepath, overwrite=True, include_optimizer=True, save_format=None,
signatures=None, options=None
)

filepath:字符串類型,保存路徑
overwrite: 是靜默覆蓋目標位置的任何現有文件,還是向用戶提供手動提示。
include_optimizer: 是否把優化器內參數也一并保存
save_format: 選填’tf’ 和’h5’其中一個, Tensorflow SavedModel 和 HDF5兩種類型. 默認是TF
signatures: 使用SavedModel保存的簽名。只適用于“tf”格式,詳情查看 tf.saved_model.save
options:可選參數, tf.saved_model.SaveOptions 對象,該對象指定保存到SavedModel的選項。
tf.keras.models.load_model()方法:

tf.keras.models.load_model(
filepath, custom_objects=None, compile=True
)

filepath:加載路徑
custom_objects: 可選的字典將名稱(字符串)映射到在反序列化期間要考慮的自定義類或函數。
compile: 是否在加載模型后編譯模型
model.save()與new_model = keras.models.load_model()同樣可將模型導出為SavedModel格式

Export the model to a SavedModel

model.save(‘path_to_saved_model’, save_format=‘tf’)

Recreate the exact same model

new_model = keras.models.load_model(‘path_to_saved_model’)

SavedModel是TensorFlow對象的獨立序列化格式,由TensorFlow支持和實現。

只保存模型或只保存結構
如果只想保存模型結構,而不想保存模型參數,可以通過model.get_config()方法獲取模型的配置信息 , 模型的配置信息是Python dict類型 , 對于模型的恢復可以使用keras.Model.from_config(config)

config = model.get_config()
reinitialized_model = keras.Model.from_config(config)

模型的config信息也可以被保存為json字符串 , 此時應該使用model.to_json()與keras.models.model_from_json() , 對模型進行提取和恢復

json_config = model.to_json()
reinitialized_model = keras.models.model_from_json(json_config)
將模型的結構(配置信息)取到內存以后 , 可以通過python方法將模型保存到硬盤:

json_config = model.to_json()
with open(‘model_config.json’, ‘w’) as json_file:
json_file.write(json_config)
如果只想保存權重信息可以使用get_weights()/set_weights()方法 , 對模型的權重進行提取和恢復

weights = model.get_weights()
model.set_weights(weights)

如果想將其保存在硬盤上,應該用save_weights(fpath) 和 load_weights(fpath),代替 get_weights() 和 set_weights(weights)

model.save_weights方法 :

如果想將其保存在硬盤上,應該用save_weights(fpath) 和 load_weights(fpath),代替 get_weights() 和 set_weights(weights)

model.save_weights方法 :
filepath: 字符串,文件路徑, .h5后綴將會使文件保存為HDF5格式
overwrite: 是靜默覆蓋目標位置的任何現有文件,還是向用戶提供手動提示。
save_format: 可選 tf 或者 h5 默認不填的話 , 根據文件路徑后綴判斷 , 否則默認 tf
無論是單獨保存參數還是單獨保存模型,無論哪種方式,都不會保存訓練數據和優化器參數,所以新模型需要重新編譯。

子類模型的保存
子類模型的保存和上述類似但是要注意

從未使用過的模型無法被保存
如果使用model.save_weights保存參數,恢復時,需要保證用子類創建一個相同類型的模型,并編譯(compile)相同的配置,且在 load_weights之前一定要先訓練一些數據(為了自動創建層的大小與類型等操作)
在訓練期間保存模型
可以使用訓練好的模型而無需從頭開始重新訓練,或在您打斷的地方開始訓練,以防止訓練過程沒有保存。 tf.keras.callbacks.ModelCheckpoint 允許在訓練的過程中和結束時回調保存的模型。

tf.keras.callbacks.ModelCheckpoint對象是回調對象,該回調對象可以在每一個周期保存模型

實例化方法:

tf.keras.callbacks.ModelCheckpoint(
filepath, monitor=‘val_loss’, verbose=0, save_best_only=False,
save_weights_only=False, mode=‘auto’, save_freq=‘epoch’, **kwargs
)
Arguments:

filepath:字符串類型,儲存模型的路徑
monitor: 監視指標val_acc或者val_loss
verbose: 日志模型, 0 或者 1.
save_best_only: 布爾型,如果為true,根據監視指標,最后一個最好的模型將不會被覆蓋,如果filepath 沒有包含格式化選項{epoch} ,保存的模型文件將會被新周期里更好的模型覆蓋。
mode: 可選填{‘auto’, ‘min’, ‘max’}中的一個,如果save_best_only被設置為true,那么覆蓋操作的執行,將根據監視指標和這個參數來決定,比如max val_acc 和min val_loss ,如果被天填auto則會跟俊監視指標指定選擇max 還是min
save_weights_only: 如果參數為真,則只保存模型的權值,而非整個模型,這個參數只要影響該回調對象是調用(model.save_weights(filepath)方法還是調用model.save(filepath).
save_freq: 填寫epoch或者一個數字,如果是epoch時,回調會在每個epoch之后保存模型。當使用integer時,回調將在處理n個樣本后保存模型,默認是’epoch’
例如:

checkpoint_path = “training_1/cp.ckpt”
checkpoint_dir = os.path.dirname(checkpoint_path)

cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
save_weights_only=True,
verbose=1)
history = model.fit(x_train, y_train,
batch_size=64,
epochs=10, callbacks=[cp_callback])
Train on 60000 samples
Epoch 1/10
58304/60000 [>.] - ETA: 0s - loss: 0.3180
Epoch 00001: saving model to training_1/cp.ckpt
60000/60000 [
] - 9s 150us/sample - loss: 0.3145
Epoch 2/10
58432/60000 [
>.] - ETA: 0s - loss: 0.1484
Epoch 00002: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 32us/sample - loss: 0.1476
Epoch 3/10
58624/60000 [
>.] - ETA: 0s - loss: 0.1077
Epoch 00003: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 31us/sample - loss: 0.1077
Epoch 4/10
58688/60000 [
>.] - ETA: 0s - loss: 0.0861
Epoch 00004: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 32us/sample - loss: 0.0860
Epoch 5/10
58624/60000 [
>.] - ETA: 0s - loss: 0.0745
Epoch 00005: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 31us/sample - loss: 0.0742
Epoch 6/10
58624/60000 [
>.] - ETA: 0s - loss: 0.0630
Epoch 00006: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 31us/sample - loss: 0.0627
Epoch 7/10
58944/60000 [
>.] - ETA: 0s - loss: 0.0559
Epoch 00007: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 33us/sample - loss: 0.0563
Epoch 8/10
59648/60000 [
>.] - ETA: 0s - loss: 0.0493
Epoch 00008: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 34us/sample - loss: 0.0493
Epoch 9/10
58816/60000 [
>.] - ETA: 0s - loss: 0.0431
Epoch 00009: saving model to training_1/cp.ckpt
60000/60000 [
] - 2s 34us/sample - loss: 0.0429
Epoch 10/10
58688/60000 [
>.] - ETA: 0s - loss: 0.0398
Epoch 00010: saving model to training_1/cp.ckpt
60000/60000 [
====================] - 2s 34us/sample - loss: 0.0397
tf.train.Checkpoint 保存與加載
使用tf.train.Checkpoint , 需要首先聲明一個 Checkpoint對象:

checkpoint = tf.train.Checkpoint(model=model)

這里 tf.train.Checkpoint() 接受的初始化參數比較特殊,是一個 **kwargs 。具體而言,是一系列的鍵值對,鍵名可以隨意取,值為需要保存的對象。例如,如果我們希望保存一個繼承 tf.keras.Model 的模型實例 model 和一個繼承 tf.train.Optimizer 的優化器 optimizer ,我們可以這樣寫:

checkpoint = tf.train.Checkpoint(myAwesomeModel=model, myAwesomeOptimizer=optimizer)
接下來,當模型訓練完成需要保存的時候,使用:

checkpoint.save(save_path_with_prefix)
就可以。 save_path_with_prefix 是保存文件的目錄 + 前綴。

當在其他地方需要為模型重新載入之前保存的參數時,需要再次實例化一個 checkpoint,同時保持鍵名的一致。再調用 checkpoint 的 restore 方法。就像下面這樣:

model = MyModel() # 待恢復參數的同一模型
checkpoint = tf.train.Checkpoint(myAwesomeModel=model) # 鍵名保持為“myAwesomeModel”
checkpoint.restore(save_path_with_prefix_and_index)
即可恢復模型變量。 save_path_with_prefix_and_index 是之前保存的文件的目錄 + 前綴 + 編號。例如,調用 checkpoint.restore(’./save/model.ckpt-1’) 就可以載入前綴為 model.ckpt ,序號為 1 的文件來恢復模型。

當保存了多個文件時,我們往往想載入最近的一個。可以使用 tf.train.latest_checkpoint(save_path) 這個輔助函數返回目錄下最近一次 checkpoint 的文件名。例如如果 save 目錄下有 model.ckpt-1.index 到 model.ckpt-10.index 的 10 個保存文件, tf.train.latest_checkpoint(’./save’) 即返回 ./save/model.ckpt-10 。

tf.train.CheckpointManager 管理檢查點

在定義 Checkpoint 后接著定義一個 CheckpointManager:

checkpoint = tf.train.Checkpoint(model=model)
manager = tf.train.CheckpointManager(checkpoint, directory=’./save’, checkpoint_name=‘model.ckpt’, max_to_keep=k)
此處, directory 參數為文件保存的路徑, checkpoint_name 為文件名前綴(不提供則默認為 ckpt ), max_to_keep 為保留的 Checkpoint 數目。

在需要保存模型的時候,我們直接使用 manager.save() 即可。如果我們希望自行指定保存的 Checkpoint 的編號,則可以在保存時加入 checkpoint_number 參數。例如 manager.save(checkpoint_number=100) 。

本文摘錄、翻譯自
Keras中文文檔
https://keras.io/zh/

TensorFlow官方
https://tensorflow.google.cn/

最全Tensorflow2.0 入門教程持續更新
https://zhuanlan.zhihu.com/p/59507137

簡單粗暴TensorFlow2
https://tf.wiki/zh/preface.html

總結

以上是生活随笔為你收集整理的tensorflow 1.x Saver(保存与加载模型) 预测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久操久 | 欧美图片一区二区 | 免费看美女被靠到爽的视频 | 五月天婷婷激情网 | 精品少妇人妻av一区二区三区 | 日本一区免费电影 | 亚洲精品一区中文字幕乱码 | 口舌奴vk | 美女黄视频在线观看 | 天天干妹子 | 国产传媒在线观看 | 韩国三级免费 | 成人天堂 | 五月婷婷综合久久 | 国产视频日韩 | 91美女视频 | 银杏av | 久久久九九 | 99精品在线视频观看 | 日韩一级网站 | 黄页网站免费观看 | 日本女人hd | 色二区| 日韩av成人在线观看 | 色婷婷精品久久二区二区密 | 国产av 一区二区三区 | 欧美一区二区三区婷婷 | 久久精品国产一区二区三区 | 狠狠综合 | 国产精品一区免费 | 免费在线观看av网址 | 97视频在线看| 草莓视频一区二区三区 | 午夜福利电影一区 | 在线免费观看污 | 超碰97观看 | 成人一区二区视频 | 无码国产精品高潮久久99 | 97操碰| 国产伦人伦偷精品视频 | 动漫大乳美女 | 一区二区视频在线看 | 欧美日本高清视频 | 亚洲精品伊人 | 丰满熟女人妻一区二区三 | 毛片免 | 免费av入口 | 噼里啪啦国语高清 | 亚洲欧美精品suv | 久久综合网址 | 九七在线视频 | 欧美精品亚洲精品日韩精品 | 欧美另类在线播放 | 男插女视频在线观看 | 欧美一级黄色大片 | 午夜电影福利网 | 老色驴综合网 | 日韩不卡在线视频 | 99蜜桃臀久久久欧美精品网站 | 亚洲二级片 | 极品久久久久久 | 裸体男女树林做爰 | 久久精品欧美 | 四虎影视库 | 黄色大片毛片 | 四季av国产一区二区三区 | 91久久久精品 | 182在线视频 | 沟厕沟厕近拍高清视频 | 亚洲精品1区2区3区 国产丝袜网站 | 伊人伊人鲁 | 天天综合网国产 | 日本在线天堂 | 欧美性俱乐部 | 亚洲无吗一区二区三区 | 男女激情网址 | 亚洲丁香花色 | 夜夜操综合 | 日韩欧美中出 | 四虎影视www在线播放 | a天堂中文| 色爽av | 欧美小视频在线观看 | 免费黄色av片| 久久久久99精品国产片 | 高清无码一区二区在线观看吞精 | 怡红院男人天堂 | 日韩在线你懂的 | 日本理论片 | av不卡在线免费观看 | 欧美亚洲视频 | 97精品久久人人爽人人爽 | 99久久人妻无码中文字幕系列 | 国语精品 | 99热激情| 日本少妇喂奶 | 东京久久久 | 日韩av一级 | 日韩欧美91 |