gpt4 book ai didi

Tensorflow SavedModel 文件大小随着每次保存而增加

转载 作者:行者123 更新时间:2023-12-05 06:26:55 25 4
gpt4 key购买 nike

我有一个 Tensorflow R1.13 训练代码,它在长时间的训练运行期间定期保存一个 SavedModel(我正在关注关于该主题的优秀 article)。我注意到每次保存模型时,尺寸都会增加。事实上,它似乎每次都精确地线性增加,并且似乎是初始文件大小的倍数。我想知道 TF 是否保留对所有以前保存的文件的引用并为以后的每次保存累积它们。以下是随着训练的进行,随时间顺序写入的几个 SavedModel 文件的文件大小。

-rw-rw-r-- 1 ubuntu ubuntu  576962 Apr 15 23:56 ./model_accuracy_0.361/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 1116716 Apr 15 23:58 ./model_accuracy_0.539/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 1656470 Apr 16 00:11 ./model_accuracy_0.811/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 2196440 Apr 16 00:15 ./model_accuracy_0.819/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 2736794 Apr 16 00:17 ./model_accuracy_0.886/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 3277150 Apr 16 00:19 ./model_accuracy_0.908/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 3817530 Apr 16 00:21 ./model_accuracy_0.919/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 4357950 Apr 16 00:25 ./model_accuracy_0.930/saved_model.pb
-rw-rw-r-- 1 ubuntu ubuntu 4898492 Apr 16 00:27 ./model_accuracy_0.937/saved_model.pb

有没有办法剔除以前保存的版本?或者至少从一开始就防止它们被积累?我当然只会保留最后一个文件,但它似乎比应该的大 10 倍。

下面是我的代码(主要是从 Silva 复制的):

        # Creates the TensorInfo protobuf objects that encapsulates the input/output tensors
tensor_info_input_data_1 = tf.saved_model.utils.build_tensor_info(gd.data_1)
tensor_info_input_data_2 = tf.saved_model.utils.build_tensor_info(gd.data_2)
tensor_info_input_keep = tf.saved_model.utils.build_tensor_info(gd.keep )

# output tensor info
tensor_info_output_pred = tf.saved_model.utils.build_tensor_info(gd.targ_pred_oneh)
tensor_info_output_soft = tf.saved_model.utils.build_tensor_info(gd.targ_pred_soft)

# Define the SignatureDef for this export
prediction_signature = \
tf.saved_model.signature_def_utils.build_signature_def(
inputs={
'data_1': tensor_info_input_data_1,
'data_2': tensor_info_input_data_2,
'keep' : tensor_info_input_keep
},
outputs={
'pred_orig': tensor_info_output_pred,
'pred_soft': tensor_info_output_soft
},
method_name=tf.saved_model.signature_constants.CLASSIFY_METHOD_NAME)

graph_entry_point_name = "my_model" # The logical name for the model in TF Serving

try:
builder = tf.saved_model.builder.SavedModelBuilder(saved_model_path)
builder.add_meta_graph_and_variables(
sess= sess,
tags=[tf.saved_model.tag_constants.SERVING],
signature_def_map = {graph_entry_point_name:prediction_signature}
)
builder.save(as_text=False)
if verbose:
print(" SavedModel graph written successfully. " )
success = True
except Exception as e:
print(" WARNING::SavedModel write FAILED. " )
traceback.print_tb(e.__traceback__)
success = False
return success

最佳答案

@赫菲斯托斯,

如果您每次都构建一个SavedModelBuilder,那么它会在您每次保存 时向图表添加新的保存操作。

相反,您可以只构造一次SavedModelBuilder,然后重复调用builder.save。这不会在每次 save 调用时向图表添加新操作。

或者,我认为您可以创建自己的 tf.train.Saver 并将其传递给 add_meta_graph_and_variables。那么它不应该创建任何新的操作。

一个很好的调试辅助工具是 tf.get_default_graph().finalize(),一旦您完成图形构建,它将抛出异常而不是像这样扩展图形。

希望这对您有所帮助。

关于Tensorflow SavedModel 文件大小随着每次保存而增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55700083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com