繁体   English   中英

如何使用saved_model API定期保存张量流模型?

[英]How to periodically save tensorflow model using saved_model API?

因此出于各种原因(例如其语言独立性),我想使用tensorflow的saved_model API来保存/加载模型。 在培训结束时,可以通过调用builder.add_meta_graph_and_variables()来保存所有内容(并成功还原),但是我看不到任何定期保存的方法。 Tensorflow上的文档非常稀疏,它们提供的模板代码( 在此处 )对我没有帮助:

...
builder = tf.saved_model.builder.SavedModelBuilder(export_dir)

with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph_and_variables(sess,
                                  ["foo-tag"],
                                  signature_def_map=foo_signatures,
                                  assets_collection=foo_assets)
...

with tf.Session(graph=tf.Graph()) as sess:
  ...
  builder.add_meta_graph(["bar-tag", "baz-tag"])
...

builder.save()

调用builder.save()不会将新变量保存到模型中。 它只是更新了模型protobuf。

我想念什么? 在第n个纪元后,如何使用saved_model

好吧,在这里和其他地方浏览过tensorflow代码后,答案似乎是“您不能”。 SavedModelBuilder实际上仅是为训练阶段之外的模型设计的,它使您可以添加元图并选择要加载/保存的变量集(即TRAINING vs. SERVING),仅此而已。 例如, SavedModelBuilder.add_meta_graph_and_variables只能被调用一次,并且没有SavedModelBuilder.update_variables或类似的东西。 另一方面,在训练时,您需要使用Saver类并保存检查点和那些关联的文件。 为什么没有一个统一的系统,我不知道,但是显然就是这样。

调用builder.add_meta_graph_and_variables()时将保存变量,因为在其中调用了saver.save() 看这里

解:

只需在builder.save()之前调用saver.save(sess, export_dir+'/variables/variables', write_meta_graph=False, write_state=False) builder.save()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM