如何在C++中保存和恢复TensorFlow图及其状态?

Ant*_*nko 4 c++ tensorflow

我正在使用C++中的TensorFlow训练我的模型.Python仅用于构造图形.那么有没有一种方法可以纯粹用C++保存和恢复图形及其状态?我知道Python类,tf.train.Saver但据我所知,它在C++中不存在.

mrr*_*rry 9

tf.train.Saver班目前只存在于Python中,(我)从TensorFlow OPS内置,您可以从C++运行,及(ii)其公开Saver.as_saver_def(),可以让你得到一个方法SaverDef的协议缓存与您必须运行到OPS的名字保存或恢复模型.

在Python中,您可以获取保存和恢复操作的名称,如下所示:

saver = tf.train.Saver(...)
saver_def = saver.as_saver_def()

# The name of the tensor you must feed with a filename when saving/restoring.
print saver_def.filename_tensor_name

# The name of the target operation you must run when restoring.
print saver_def.restore_op_name

# The name of the target operation you must run when saving.
print saver_def.save_tensor_name
Run Code Online (Sandbox Code Playgroud)

在要从检查点恢复的C++中,您调用Session::Run(),以检查点文件的名称提供saver_def.filename_tensor_name,目标操作为saver_def.restore_op_name.要保存另一个检查点,请调用Session::Run(),再次输入检查点文件的名称saver_def.filename_tensor_name,并获取值saver_def.save_tensor_name.

  • 很棒的建议!我不得不从一个字符串的末尾删除一个":0".此外,在恢复模型期间,相对路径不起作用.Tensorcreation:`tf :: Tensor string(tf :: DT_STRING,tf :: TensorShape({1,1}));`Feeding string:`string.matrix <std :: string>()(0,0)= file_path_ + filename;`Execution:`TF_CHECK_OK(session _-> Run({{"save/Const:0",string}},{},{"save/control_dependency"},nullptr));` (2认同)