Tensorflow 2.0将keras模型转换为.pb文件

GlipR

我正在生成一个keras模型并将其保存到.h5文件,然后尝试将其转换为.pb文件以供以后统一使用。

我已经按照这里的一些说明将tensorflow模型转换为pb tensorflow以及其他一些建议,这些建议似乎可以追溯到tensorflow 1.0是最新版本时,但是它们也存在类似的问题。

我在下面的代码中遇到的错误是当我尝试将变量转换为常量时:它抱怨我的变量不在会话定义的图中。(我对tensorflow不熟悉,所以我并不完全知道这意味着什么,但是我认为这与我的模型无关)。

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
from keras import backend as K

tf.keras.backend.set_learning_phase(0)

pre_model = tf.keras.models.load_model("final_model.h5")

print(pre_model.inputs)
print(pre_model.outputs)

def freeze_session(session, keep_var_names=None, output_names=None, clear_devices=True):
    """
    Freezes the state of a session into a pruned computation graph.

    Creates a new computation graph where variable nodes are replaced by
    constants taking their current value in the session. The new graph will be
    pruned so subgraphs that are not necessary to compute the requested
    outputs are removed.
    @param session The TensorFlow session to be frozen.
    @param keep_var_names A list of variable names that should not be frozen,
                          or None to freeze all the variables in the graph.
    @param output_names Names of the relevant graph outputs.
    @param clear_devices Remove the device directives from the graph for better portability.
    @return The frozen graph definition.
    """
    from tensorflow.compat.v1.graph_util import convert_variables_to_constants
    graph = session.graph
    with graph.as_default():
        freeze_var_names = list(set(v.op.name for v in tf.compat.v1.global_variables()).difference(keep_var_names or []))
        output_names = output_names or []
        output_names += [v.op.name for v in tf.compat.v1.global_variables()]
        # Graph -> GraphDef ProtoBuf
        input_graph_def = graph.as_graph_def()
        if clear_devices:
            for node in input_graph_def.node:
                node.device = ""
        frozen_graph = convert_variables_to_constants(session, input_graph_def,
                                                      output_names, freeze_var_names)
        return frozen_graph


frozen_graph = freeze_session(tf.compat.v1.keras.backend.get_session(), output_names=[out.op.name for out in pre_model.outputs])

有输出+错误:

[<tf.Tensor 'conv2d_1_input:0' shape=(None, 28, 28, 1) dtype=float32>]
[<tf.Tensor 'dense_2/Identity:0' shape=(None, 10) dtype=float32>]
File "saveGraph.py", line 40, in freeze_session
    output_names, freeze_var_names)
  File "C:\Users\jgoer\AppData\Roaming\Python\Python37\site-packages\tensorflow_core\python\util\deprecation.py", line 324, in new_func
    return func(*args, **kwargs)
  File "C:\Users\jgoer\AppData\Roaming\Python\Python37\site-packages\tensorflow_core\python\framework\graph_util_impl.py", line 277, in convert_variables_to_constants
    inference_graph = extract_sub_graph(input_graph_def, output_node_names)
  File "C:\Users\jgoer\AppData\Roaming\Python\Python37\site-packages\tensorflow_core\python\util\deprecation.py", line 324, in new_func
    return func(*args, **kwargs)
  File "C:\Users\jgoer\AppData\Roaming\Python\Python37\site-packages\tensorflow_core\python\framework\graph_util_impl.py", line 197, in extract_sub_graph    
    _assert_nodes_are_present(name_to_node, dest_nodes)
File "C:\Users\jgoer\AppData\Roaming\Python\Python37\site-packages\tensorflow_core\python\framework\graph_util_impl.py", line 152, in _assert_nodes_are_present
    assert d in name_to_node, "%s is not in graph" % d
AssertionError: dense_2/Identity is not in graph
雅各布

查看TensorFlow的有关保存和加载模型教程您可以使用model.save("path"),如果不包括扩展名,则模型将以SavedModel格式保存

import tensorflow as tf

pre_model = tf.keras.models.load_model("final_model.h5")
pre_model.save("saved_model")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将 pipeline_pb2.TrainEvalPipelineConfig 转换为 JSON 或 YAML 文件以用于 tensorflow 对象检测 API

来自分类Dev

在tensorflow 2中将keras功能模型转换为keras类

来自分类Dev

将 class = tensorflow_serving.apis.classification_pb2.ClassificationResponse 转换为 json

来自分类Dev

将keras / tensorflow h5 / json转换为Tensorflow PB时遇到问题

来自分类Dev

如何将Onnx模型(.onnx)转换为Tensorflow(.pb)模型

来自分类Dev

将 keras h5 转换为 tensorflow pb 以进行批量推理

来自分类Dev

如何将使用Keras模型训练的Tensorflow 2. *转换为.onnx格式?

来自分类Dev

我正在尝试将 .pb 文件转换为 .mlmodel 文件。我收到错误“Tensorflow 图不包含具有此名称的张量”

来自分类Dev

将基于Theano的Keras模型定义转换为TensorFlow

来自分类Dev

为什么tf2无法将tf_function模型另存为.pb文件?

来自分类Dev

将Tensorflow 1.5转换为Tensorflow 2

来自分类Dev

如何将急切执行的模型转换为静态图并保存为.pb文件?

来自分类Dev

将 InceptionV3 pb 文件转换为 tflite

来自分类Dev

Tensorflow a2.0.0:将CSV转换为tfrecord,创建一个Keras模型,该模型使用来自大型来源的管道数据并将权重存储到CSV文件?

来自分类Dev

如何使用Tensorflow的协议缓冲区编译器从.proto文件正确地重新生成python .pb2.py文件?

来自分类Dev

从.pb文件还原图形def时的Tensorflow错误

来自分类Dev

tensorflow pb 文件推理需要超过 3 秒的图像

来自分类Dev

将Tensorflow.js转换为Tensorflow keras

来自分类Dev

无法将 tensorflow 冻结图转换为 pbtxt 文件

来自分类Dev

Keras 权重文件加载异常:将 2 层加载到具有 0 层的模型中

来自分类Dev

TensorFlow:将GRUCell权重从compat.v1转换为tensorflow 2

来自分类Dev

将tensorflow模型保存到文件

来自分类Dev

将tensorflow模型保存到文件

来自分类Dev

将tensorflow模型保存到文件

来自分类Dev

将训练好的Tensorflow模型转换为protobuf

来自分类Dev

如何将 Tensorflow 模型转换为 .mlmodel?

来自分类Dev

我可以将在 Google Colab 的 Tensorflow 上创建的“.py”或“.ipynb”模型/文件转换为 coreML 模型/文件吗?

来自分类Dev

将Tensorflow转换为Tensorflow-lite

来自分类Dev

将Tensorflow转换为Tensorflow-lite

Related 相关文章

  1. 1

    将 pipeline_pb2.TrainEvalPipelineConfig 转换为 JSON 或 YAML 文件以用于 tensorflow 对象检测 API

  2. 2

    在tensorflow 2中将keras功能模型转换为keras类

  3. 3

    将 class = tensorflow_serving.apis.classification_pb2.ClassificationResponse 转换为 json

  4. 4

    将keras / tensorflow h5 / json转换为Tensorflow PB时遇到问题

  5. 5

    如何将Onnx模型(.onnx)转换为Tensorflow(.pb)模型

  6. 6

    将 keras h5 转换为 tensorflow pb 以进行批量推理

  7. 7

    如何将使用Keras模型训练的Tensorflow 2. *转换为.onnx格式?

  8. 8

    我正在尝试将 .pb 文件转换为 .mlmodel 文件。我收到错误“Tensorflow 图不包含具有此名称的张量”

  9. 9

    将基于Theano的Keras模型定义转换为TensorFlow

  10. 10

    为什么tf2无法将tf_function模型另存为.pb文件?

  11. 11

    将Tensorflow 1.5转换为Tensorflow 2

  12. 12

    如何将急切执行的模型转换为静态图并保存为.pb文件?

  13. 13

    将 InceptionV3 pb 文件转换为 tflite

  14. 14

    Tensorflow a2.0.0:将CSV转换为tfrecord,创建一个Keras模型,该模型使用来自大型来源的管道数据并将权重存储到CSV文件?

  15. 15

    如何使用Tensorflow的协议缓冲区编译器从.proto文件正确地重新生成python .pb2.py文件?

  16. 16

    从.pb文件还原图形def时的Tensorflow错误

  17. 17

    tensorflow pb 文件推理需要超过 3 秒的图像

  18. 18

    将Tensorflow.js转换为Tensorflow keras

  19. 19

    无法将 tensorflow 冻结图转换为 pbtxt 文件

  20. 20

    Keras 权重文件加载异常:将 2 层加载到具有 0 层的模型中

  21. 21

    TensorFlow:将GRUCell权重从compat.v1转换为tensorflow 2

  22. 22

    将tensorflow模型保存到文件

  23. 23

    将tensorflow模型保存到文件

  24. 24

    将tensorflow模型保存到文件

  25. 25

    将训练好的Tensorflow模型转换为protobuf

  26. 26

    如何将 Tensorflow 模型转换为 .mlmodel?

  27. 27

    我可以将在 Google Colab 的 Tensorflow 上创建的“.py”或“.ipynb”模型/文件转换为 coreML 模型/文件吗?

  28. 28

    将Tensorflow转换为Tensorflow-lite

  29. 29

    将Tensorflow转换为Tensorflow-lite

热门标签

归档