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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化

發布時間:2024/7/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. Checkpoint 保存變量
    • 2. TensorBoard 訓練過程可視化

學習于:簡單粗暴 TensorFlow 2

1. Checkpoint 保存變量

  • tf.train.Checkpoint 可以保存 tf.keras.optimizer 、 tf.Variable 、 tf.keras.Layer 、 tf.keras.Model
path = "./checkp.ckpt" # 建立一個 checkpoint mycheckpoint = tf.train.Checkpoint(mybestmodel=mymodel) # 接受 **kwargs 鍵值對 mycheckpoint.save(path)

  • 恢復指定模型變量
# 待恢復參數的模型 restored_model = LinearModel() # mybestmodel 名字任意寫,跟下面恢復時保持一致 mycheckpoint = tf.train.Checkpoint(mybestmodel=restored_model) # 恢復指定的變量 path = "./checkp.ckpt-1" mycheckpoint.restore(path)X_test = tf.constant([[5.1], [6.1]]) res = restored_model.predict(X_test) print(res) # [[10.182168] 前一節的線性回歸模型 # [12.176777]]
  • 恢復最近的模型,自動選定目錄下最新的存檔(后綴數字最大的)
mycheckpoint.restore(tf.train.latest_checkpoint("./"))
  • 管理保存的參數,有時不需要保存太多,占空間
mycheckpoint = tf.train.Checkpoint(mybestmodel=mymodel) # 接受 **kwargs 鍵值對 manager = tf.train.CheckpointManager(mycheckpoint, directory="./",checkpoint_name='checkp.ckpt',max_to_keep=2) # 最多保存k個最新的for loop:manager.save() # 自動遞增編號manager.save(checkpoint_number=idx) # 指定編號

2. TensorBoard 訓練過程可視化

  • summary_writer = tf.summary.create_file_writer(logdir=log_dir)
  • tf.summary.scalar(name='loss', data=loss, step=idx)
  • tf.summary.trace_on(profiler=True)
for loop:with summary_writer.as_default():tf.summary.scalar(name='loss', data=loss, step=idx) with summary_writer.as_default():tf.summary.trace_export(name='model_trace', step=0,profiler_outdir=log_dir)
  • 示例
import tensorflow as tf import numpy as npclass MNistLoader():def __init__(self):data = tf.keras.datasets.mnist# 加載數據(self.train_data, self.train_label), (self.test_data, self.test_label) = data.load_data()# 擴展維度,灰度圖1通道 [batch_size, 28, 28, chanels=1]self.train_data = np.expand_dims(self.train_data.astype(np.float32) / 255.0, axis=-1)self.test_data = np.expand_dims(self.test_data.astype(np.float32) / 255.0, axis=-1)self.train_label = self.train_label.astype(np.int32)self.test_label = self.test_label.astype(np.int32)# 樣本個數self.num_train_data, self.num_test_data = self.train_data.shape[0], self.test_data.shape[0]def get_batch(self, batch_size):# 從訓練集里隨機取出 batch_size 個樣本idx = np.random.randint(0, self.num_train_data, batch_size)return self.train_data[idx, :], self.train_label[idx]# 自定義多層感知機模型 class MLPmodel(tf.keras.Model):def __init__(self):super().__init__()# 除第一維以外的維度展平self.flatten = tf.keras.layers.Flatten()self.dense1 = tf.keras.layers.Dense(units=100, activation='relu')self.dense2 = tf.keras.layers.Dense(units=10)def call(self, input):x = self.flatten(input)x = self.dense1(x)x = self.dense2(x)output = tf.nn.softmax(x)return output# %%num_epochs = 5 batch_size = 50 learning_rate = 1e-4 log_dir = './log' # 日志目錄 mymodel = MLPmodel()# %% data_loader = MNistLoader() optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate) num_batches = int(data_loader.num_train_data // batch_size * num_epochs)# 實例化記錄器 summary_writer = tf.summary.create_file_writer(logdir=log_dir) # 開啟 trace,(可選),記錄訓練時的大量信息(圖的結構,耗時等) tf.summary.trace_on(profiler=True)for idx in range(num_batches):X, y = data_loader.get_batch(batch_size)with tf.GradientTape() as tape:y_pred = mymodel(X)loss = tf.keras.losses.sparse_categorical_crossentropy(y_true=y, y_pred=y_pred)loss = tf.reduce_mean(loss)print("batch {}, loss {}".format(idx, loss.numpy()))# 記錄器記錄losswith summary_writer.as_default():tf.summary.scalar(name='loss', data=loss, step=idx)grads = tape.gradient(loss, mymodel.variables)optimizer.apply_gradients(grads_and_vars=zip(grads, mymodel.variables))with summary_writer.as_default():tf.summary.trace_export(name='model_trace', step=0,profiler_outdir=log_dir)
  • 開始訓練,命令行進入 可視化界面 tensorboard --logdir=./log
  • 點擊命令行中的鏈接,打開瀏覽器,查看訓練曲線
  • 若重新訓練,請刪除 log 文件,或設置別的 log 路徑,重新 cmd 開啟 瀏覽器

總結

以上是生活随笔為你收集整理的TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

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