【问题标题】:used pretraing model in tensorflow .ckpt file在 tensorflow .ckpt 文件中使用了预训练模型
【发布时间】:2017-03-20 00:29:36
【问题描述】:

我有一个 ckpt 文件。我只想得到cnn的权重 我是从 ckpt 检查点文件中训练出来的。? inception_resnet_v2_2016_08_30

import tensorflow as tf
saver = tf.train.Saver()
sess = tf.Session()
saver.restore(sess, "inception_resnet_v2_2016_08_30.ckpt")

from tensorflow.core.framework import graph_pb2
from tensorflow.core.protobuf import saver_pb2
from tensorflow.python import pywrap_tensorflow
from tensorflow.python.client import session
from tensorflow.python.framework import graph_util
from tensorflow.python.framework import importer
from tensorflow.python.platform import app
from tensorflow.python.platform import gfile
from tensorflow.python.training import saver as saver_lib
with session.Session() as sess:
var_list = {}
reader =pywrap_tensorflow.NewCheckpointReader("./inception_resnet_v2_2016_08_30.ckpt")
var_to_shape_map = reader.get_variable_to_shape_map()
for key in var_to_shape_map:
    try:
       tensor = sess.graph.get_tensor_by_name(key + ":0")
    except KeyError:
            continue
    var_list[key] = tensor
    saver = saver_lib.Saver(var_list=var_list)
    saver.restore(sess, input_checkpoint)
    if initializer_nodes:
       sess.run(initializer_nodes)

【问题讨论】:

  • 您问题中的代码无法正常工作,原因与saver.restore() 不起作用的原因相同:没有可将张量恢复到其中的图形。加载检查点值后,您想对其执行什么操作?您可以调用reader.get_tensor(key) 以将检查点值作为 NumPy 数组获取。您可能应该更改 for 循环的主体来执行此操作。

标签: python-3.x tensorflow deep-learning


【解决方案1】:

tf.train.Saver.restore() 方法仅在您已经构建了要恢复检查点的图形结构(包括一组 tf.Variable 对象)时才有效。你有(至少)两个选项来解决这个问题:

  1. 使用tf.train.NewCheckpointReader("inception_resnet_v2_2016_08_30.ckpt") 打开检查点文件。您可以在返回的对象上调用get_tensor() 方法以按名称查找已保存的变量,或调用get_variable_to_shape_map() 方法以获取可用变量的列表。

  2. 如果你有一个,load a MetaGraph 用于检查点模式,其中包括图形结构以及从该图形结构到检查点中变量的映射。

【讨论】:

  • This code in freeze_graph.py 使用它的方式与您想要使用它的方式相似。
  • 张量 = sess.graph.get_tensor_by_name(key + ":0") 不起作用
  • 我希望这不起作用,因为您的图表中没有张量。您也不应该需要会话来使用tf.train.NewCheckpointReader。如果您仍然遇到问题,请将您尝试运行的代码添加到您的问题中。
  • 如何将NumPy数组放入模型tensorflow中
猜你喜欢
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 2019-01-29
  • 2017-08-19
  • 1970-01-01
相关资源
最近更新 更多