gpt4 book ai didi

tensorflow - 保存 Tensorflow 图和变量,同时排除 Adam 优化器变量

转载 作者:行者123 更新时间:2023-12-04 16:08:21 24 4
gpt4 key购买 nike

我正在使用以下方式保存 tensorflow 图和变量:

 builder = tf.saved_model.builder.SavedModelBuilder(export_dir)
builder.add_meta_graph_and_variables(sess, ["nn"])
builder.save(as_text=False)

我想要可以运行分类的最小保存文件。具体来说,我希望从保存文件中排除训练期间创建的 Adam 变量。

当我在保存之前迭代 tf.all_variables() 返回的值时,我得到了我期望的变量:

tf.Variable 'mymodel/fully_connected/weights:0' shape=(128, 100) dtype=float32_ref

还有两个相同的 Adam 副本:

tf.Variable 'mymodel/train/mymodel/fully_connected/weights/Adam:0' shape=(128, 100) dtype=float32_ref

tf.Variable 'mymodel/train/mymodel/fully_connected/weights/Adam_1:0' shape=(128, 100) dtype=float32_ref

这使我的检查点文件的大小增加了三倍,而且我受到目标系统的限制。保存文件将仅用于分类,不用于训练,所以我不需要 Adam 优化器变量。

关于如何最轻松地不将这些写入保存文件有什么建议吗?

对于减小保存文件大小同时仍然能够运行分类的任何其他建议,我们表示赞赏。

最佳答案

我最终使用以下代码让一切正常运行。

我像这样保存了图表、权重、偏差等:

  with tf.Session(graph=tf.Graph()) as sess:
// Checkpoint of trained model that has Adam optimizer variables
tf.saved_model.loader.load(sess, ["audio_nn"], FLAGS.checkpoint_dir)

# Dump out checkpoint without Adam optimizer variables
saver = tf.train.Saver(tf.model_variables())
saver.save(sess, 'my-model')

幸运的是,tf.model_variables() 仅返回模型所需的变量,而不是 Adam 优化器变量。

然后像这样恢复分类:

 with tf.Session(graph=tf.Graph()) as sess:
imported_meta = tf.train.import_meta_graph("my-model.meta")
imported_meta.restore(sess, "my-model")

features_tensor = sess.graph.get_tensor_by_name( params.INPUT_TENSOR_NAME)
prediction_tensor = sess.graph.get_tensor_by_name( 'mymodel/prediction:0')

... prediction code ...

检查点文件现在大约是以前大小的三分之一。

关于tensorflow - 保存 Tensorflow 图和变量,同时排除 Adam 优化器变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602792/

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