TensorFlow:如何将经过训练的模型参数保存到可以导入其他框架的文件中?

TensorFlow:如何将经过训练的模型参数保存到可以导入其他框架的文件中?,tensorflow,protocol-buffers,Tensorflow,Protocol Buffers,我希望通过解析保存的文件,将经过训练的模型的参数(卷积和完全连接层的权重和偏差)传递给其他框架或语言,包括iOS和Torch 我尝试了tf.train.write_graph(session.graph\u def,,'graph.pb'),但它似乎只包括没有权重和偏差的图形体系结构。如果是这样,创建检查点文件(saver.save(session,“model.ckpt”)是最好的方法吗?用Swift或其他语言解析ckpt文件类型容易吗 如果您有任何建议,请告诉我。您不需要解析.ckpt文件,

我希望通过解析保存的文件,将经过训练的模型的参数(卷积和完全连接层的权重和偏差)传递给其他框架或语言,包括iOS和Torch

我尝试了
tf.train.write_graph(session.graph\u def,,'graph.pb')
,但它似乎只包括没有权重和偏差的图形体系结构。如果是这样,创建检查点文件(
saver.save(session,“model.ckpt”)
是最好的方法吗?用Swift或其他语言解析ckpt文件类型容易吗


如果您有任何建议,请告诉我。

您不需要解析
.ckpt
文件,只需尝试计算张量(在您的例子中是卷积层的权重)并以numpy数组的形式获取值即可。下面是一个快速玩具示例(在r0.10上测试-在较新版本中可能会有一些小的API更改):

输出:

[[-0.02913031  0.13549708]
 [ 0.13807134  0.03763327]]
[[ 1.13549709]
 [ 1.0376333 ]]
如果您在获取对张量的引用时遇到困难(假设它嵌套在更高级别的“层”操作中),请尝试按名称查找。更多信息请点击此处:


如果您想了解训练期间权重的变化情况,还可以尝试将所有感兴趣的值保存到
tf.Summary
对象中,并在以后解析它们:

谢谢,请让我澄清。在获得上述输出后,TensorFlow用户通常如何使用一些文件(我猜是.dat或.pb)存储这些值以通过其他平台?如果您的其他平台是基于Python的,最快的方法是创建pickle文件(或numpy数组)文件。如果您想要更跨平台的东西,也许像HDF5这样的二进制格式更合适(我个人使用HDF5来分发一些数据集)
[[-0.02913031  0.13549708]
 [ 0.13807134  0.03763327]]
[[ 1.13549709]
 [ 1.0376333 ]]