iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
DevOps

30 Days of MLOps系列 第 15

tf.saved_model 命名空間下的類別

  • 分享至 

  • xImage
  •  

文章範例是使用 Tensorflow 2.3 version

實在忍不住小小抱怨一下 Tensorflow 的文件實在太糟了,連官方 Repo 裡的範例都過時, TF v1 跟 TF v2 的資訊,也都混合再一起,有種霧裏看花的感覺。

在 tf.saved_model 命名空間下,主要有三個類別 (Asset, LoadOptions, SaveOptions) 和三個函式 (contains_saved_model, load, save) 所組成。

Asset 類別

用來將資產 (asset) 封裝到 SavedModel 中。

資產 (asset) 可以代表是文字檔、圖片或任何檔案,當建立 SavedModel 物件時,會一並把這裡設定的資產一併包進 SavedModel 中,這樣之後資產才有辦法可以正確被讀取。

語法

tf.saved_model.Asset(
    path
)

範例

filename = tf.saved_model.Asset("file.txt")

@tf.function(input_signature=[])
def func():
  return tf.io.read_file(filename)

trackable_obj = tf.train.Checkpoint()
trackable_obj.func = func
trackable_obj.filename = filename
tf.saved_model.save(trackable_obj, "/tmp/saved_model")

# 建立和封裝 SavedModel 物件,它不一定要跟著原始的檔案路徑,也可以指定其他路徑。
tf.io.gfile.remove("file.txt")
tf.io.gfile.rename("/tmp/saved_model", "/tmp/new_location")

reloaded_obj = tf.saved_model.load("/tmp/new_location")
print(reloaded_obj.func())

LoadOptions 類別

用來設定載入 SavedModel 的時候,SavedModel 要帶的參數 (options)。

  • tf.saved_model.load
  • tf.keras.models.load_model

語法

tf.saved_model.LoadOptions(
    experimental_io_device=None
)

參數

  • experimental_io_device 預設是 None

SaveOptions 類別

用來設定匯出 SavedModel 的時候,SavedModel 要帶的參數 (options)。

語法

tf.saved_model.SaveOptions(
    namespace_whitelist=None, save_debug_info=False, function_aliases=None,
    experimental_io_device=None
)

範例

class MyModel:
@tf.function
def func():
  ...

@tf.function
def serve():
  ...
  func()

model = MyModel()
signatures = {
    'serving_default': model.serve.get_concrete_function(),
}
options = tf.saved_model.SaveOptions(function_aliases={
    'my_func': func,
})
tf.saved_model.save(model, export_dir, signatures, options)
  • 可以指定 my_func 為 func 函式的別名。

參數

  • namespace_whitelist
  • save_debug_info
  • function_aliases:設定函式別名
  • experimental_io_device

資料來源


上一篇
SignatureDefs
下一篇
tf.saved_model 命名空間下的函式
系列文
30 Days of MLOps23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言