- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在生成一个 keras 模型并将其保存到 .h5 文件,然后尝试将其转换为 .pb 文件以便稍后在 unity 中使用。
我已按照此处的一些说明进行操作 convert tensorflow model to pb tensorflow以及其他一些建议,这些建议似乎可以追溯到tensorflow 1.0是最新版本时,但它们给出了类似的问题。
下面的代码中出现的错误是当我尝试将变量转换为常量时:它提示我的变量不在 session 定义的图中。 (我是 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 的 tutorial on saving and loading models 。您可以使用 model.save("path")
,如果不包含扩展名,模型将以 SavedModel
格式保存。
import tensorflow as tf
pre_model = tf.keras.models.load_model("final_model.h5")
pre_model.save("saved_model")
关于python - Tensorflow 2.0 将keras模型转换为.pb文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60005661/
我有一个经过训练的模型 (Faster R-CNN),我使用 export_inference_graph.py 将其导出以用于推理。我试图了解创建的 frozen_inference_graph.p
我正在开发一个使用Google Protocol Buffer (protobuf)和CMake的库。该项目具有以下目录树。 MyProject/ MyProject/include/myprojec
我有一个旧的训练有素的 tf1.x 模型(让它成为 Model1 ),用占位符、tf.contrib 等构建。我可以通过从 tf.Session(在 tf1.x 中)中的 .ckpt 检查点恢复图形来
我想预先执行查询并将结果存储在@query中: BEGIN DECLARE @query VARCHAR(50); SET @table = 'top20-img-link'; SET @query
有了这个玩具数据:: df = pd.DataFrame(pd.np.random.randint(2, 9, size=(8, 3))) df.index = pd.date_range(start
我使用的是 Twisted 16.1.1 和 python 3.4。在 twisted 的 16.1.1 版文档中,there is a tutorial上面写着“from twisted.sprea
最近尝试将模型(tf1.x)转换为saved_model,关注官方migrate document .但是在我的用例中,我手中的大部分模型或 tensorflow 模型动物园通常是 pb 文件,根据
有谁知道tensorflow_inception_graph.pb的原始源代码。 真不想知道示例项目中的操作 tensorflow/example/android - 读我。 Tensorflow A
完整的错误说: cv2.error:OpenCV(4.1.0)C:\ projects \ opencv-python \ opencv \ modules \ dnn \ src \ caffe \
我已将模型保存在图表(.pb 文件)中。但现在这个模型不准确,我想开发它。我有其他数据的图片需要学习,但我不知道是否可能或如何做到这一点?结果必须是新数据pb图的修改。 最佳答案 这是个好问题。实际上
假设我有模型(tf.keras.Model): class ContextExtractor(tf.keras.Model): def __init__(self): supe
我正在尝试加载取自 https://github.com/tensorflow/models/tree/master/official/resnet 的已训练模型,但是当我尝试加载 .pb 时,我在
我计划将 .aab 上传到 Play 商店进行发布,在发布之前,我正在尝试反编译以查看在逆向工程过程中哪些数据可能会暴露给用户。 在 .aab_FILES/base/中,我看到了 assets.pb
libphonenumber 中没有phonenumber.pb.h 和phonemetadata.pb.h (CPP) 库 那么有什么办法可以找出来吗? 谢谢! 最佳答案 这些是由 Google p
我需要在 CSV 甲酸盐文件中搜索超过 PB 的数据。使用 LUCENE 建立索引后,索引文件的大小是原始文件的两倍。是否可以减少索引文件的大小??? HADOOP中如何分发LUCENE索引文
我公司的产品每年将在我们的客户站点产生数 PB 的数据。我想填满一个多 PB 的 NAS 来模拟一个已经运行了很长时间(3 个月、6 个月、一年等)的系统。我们希望在我们的软件在负载下的存储系统上运行
我在 Windows 10 机器上创建了一个 tensorflow 模型并使用以下方法保存它: model.save('myfolder') 文件夹内myfolder我得到: - saved_mode
我使用 Pytorch 创建了一个对象检测模型然后从 .pth 转换而来至 .onnx然后 .pb , 但现在我需要将其转换为 .tflite对于安卓应用程序!怎么做?这是我的第一次。 input_a
在这种情况下,大文件会发生什么? 1)Spark从NameNode获取数据位置。 Spark是否会在同一时间停止,因为根据NameNode的信息,数据大小太长? 2)Spark根据数据节点块大小对数据
我在对象检测 API 中使用 ssd_mobilenets 来训练我自己的模型,并获取 .ckpt 文件。它在我的电脑上运行良好,但现在我想在我的手机上使用该模型。所以,我需要将它转换为 .pb 文件
我是一名优秀的程序员,十分优秀!