导出和加载模型

2024-06-06 14:48:04 发布

您现在位置:Python中文网/ 问答频道 /正文

系统信息 操作系统平台和发行版(例如,Linux Ubuntu 16.04):

Mac os Sierra(10.12.5)

TensorFlow安装位置:

使用pip

TensorFlow版本(使用下面的命令): 1.2.1条

问题是:

我试图保存并恢复从Python到Python的模型。 我将模型保存在三个.chkpt文件(meta、index和data-000000-of-00001)中,并尝试将其读入会话,使用add_meta_graph_和_变量保存模型,然后使用加载程序:loader.load(session,[tf.saved_model.tag_constants.TRAINING], pathToSaveModel)再次读取它。

这是我的代码:

首先,我使用saver restore将包含“data”、“index”和“meta”(元图和权重)的三个文件中的权重恢复到会话中:

with tf.Session(graph=tf.Graph()) as session:
    ##HERE IS THE CODE OF MY NETWORK (Very long)

    session.run(tf.global_variables_initializer())
    #Load
    saver = tf.train.Saver()
    saver.restore(session, "newModel.chkpt")

    features = loadFeatures(["cat2.jpg"])
    res = predictions.eval(
            feed_dict={
                x: features,
                keep_prob: 1.0, })
    print('Image {} has a prob {} '.format(image, res))

    b = saved_model_builder.SavedModelBuilder(pathToSaveModel)
    b.add_meta_graph_and_variables(session, [tf.saved_model.tag_constants.TRAINING])
    b.save()

有了这段代码,我有了一个很好的分类,最后有了一个新文件夹,其中包含用add_meta_graph_和_变量保存的模型: Folder with the model saved with

现在,我想使用保存的模型对同一图像进行分类。这次我使用了加载程序而不是恢复:

^{pr2}$

问题来了:

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value b_fcO
     [[Node: b_fcO/read = Identity[T=DT_FLOAT, _class=["loc:@b_fcO"], _device="/job:localhost/replica:0/task:0/cpu:0"](b_fcO)]]

如果我试图使用:会话.运行(tf.global_variables_初始值设定项())那么它是有效的,但是分类是无效的,我认为重量从一开始就没有被输出/输入,经过测试很多东西我都被困在这里了。

有什么关于我做错什么的线索吗?。

提前谢谢。

更新: 模型在开始时是如何在三个文件中显示的: ckpt files


Tags: 文件模型addmodelsessiontftensorflow分类
1条回答
网友
1楼 · 发布于 2024-06-06 14:48:04

您应该检查以下几点:

  • 什么是pathToSaveModel?在
  • 检查点文件在哪里?在
  • 用文本编辑器打开检查点文件:它指向哪个文件夹?在
  • 权重的路径正确吗?在

通过仔细检查这些问题,我总能找到我犯的错误。希望有帮助!在

相关问题 更多 >