gpt4 book ai didi

python - 如何将 Keras 模型保存为卡住图?

转载 作者:行者123 更新时间:2023-12-03 14:07:40 24 4
gpt4 key购买 nike

我正在使用 Tensorflow 2.0 并希望将以下 Keras 模型存储为卡住图。

import tensorflow as tf
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(64, input_shape=[100]))
model.add(tf.keras.layers.Dense(32, activation='relu'))
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dense(2, activation='softmax'))
model.summary()
model.save('./models/')

我在 Tensorflow 2.0 中找不到任何好的例子来做到这一点。我找到了 freeze_graph.py文件在 Tensorflow Github 存储库中,但发现我很难理解它。

我使用以下方法加载上述文件:
from tensorflow.python.tools.freeze_graph import freeze_graph

但是我到底需要向 freeze_graph 提供什么?功能本身?在这里,我用问号标记了我不确定的论点。
freeze_graph(input_graph=?,
input_saver='',
input_binary=False,
input_checkpoint=?,
output_node_names=?,
restore_op_name='',
filename_tensor_name='',
output_graph='./frozen_graph.pb',
clear_devices=True,
initializer_nodes='')

有人可以提供一个简单的例子来说明我如何使用 freeeze_graph 将上面的模型存储为卡住图吗?功能?

最佳答案

Freeze_Graph 现在在 Tensorflow 2.0 中消失了。您可以在这里查看 Tensorflow 2.0 : frozen graph support .

除了 .save 您在代码中拥有的方法。
.save 方法已经保存了一个准备推理的 .pb。
作为替代方案,您也可以使用以下代码。

您也可以使用 convert_variables_to_constants_v2

下面是示例代码。


import tensorflow as tf
import os
from tensorflow.python.tools import freeze_graph
from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(64, input_shape=(1,)))
model.add(tf.keras.layers.Dense(32, activation='relu'))
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='softmax'))
model.compile(optimizer='adam', loss='mse')
model.summary()

# Convert Keras model to ConcreteFunction
full_model = tf.function(lambda x: model(x))
full_model = full_model.get_concrete_function(
tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype, name="yourInputName"))
# Get frozen ConcreteFunction
frozen_func = convert_variables_to_constants_v2(full_model)
frozen_func.graph.as_graph_def()
layers = [op.name for op in frozen_func.graph.get_operations()]
print("-" * 50)
print("Frozen model layers: ")
for layer in layers:
print(layer)
print("-" * 50)
print("Frozen model inputs: ")
print(frozen_func.inputs)
print("Frozen model outputs: ")
print(frozen_func.outputs)
# Save frozen graph from frozen ConcreteFunction to hard drive
tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
logdir="./frozen_models",
name="frozen_graph.pb",
as_text=False)

### USAGE ##
def wrap_frozen_graph(graph_def, inputs, outputs, print_graph=False):
def _imports_graph_def():
tf.compat.v1.import_graph_def(graph_def, name="")

wrapped_import = tf.compat.v1.wrap_function(_imports_graph_def, [])
import_graph = wrapped_import.graph

print("-" * 50)
print("Frozen model layers: ")
layers = [op.name for op in import_graph.get_operations()]
if print_graph == True:
for layer in layers:
print(layer)
print("-" * 50)

return wrapped_import.prune(
tf.nest.map_structure(import_graph.as_graph_element, inputs),
tf.nest.map_structure(import_graph.as_graph_element, outputs))

## Example Usage ###
# Load frozen graph using TensorFlow 1.x functions
with tf.io.gfile.GFile("./frozen_models/frozen_graph.pb", "rb") as f:
graph_def = tf.compat.v1.GraphDef()
loaded = graph_def.ParseFromString(f.read())

# Wrap frozen graph to ConcreteFunctions
frozen_func = wrap_frozen_graph(graph_def=graph_def,
inputs=["yourInputName:0"],
outputs=["Identity:0"],
print_graph=True)
print("-" * 50)
print("Frozen model inputs: ")
print(frozen_func.inputs)
print("Frozen model outputs: ")
print(frozen_func.outputs)
# Get predictions for test images
predictions = frozen_func(yourInputName=tf.constant([[3.]]))
# Print the prediction for the first image
print("-" * 50)
print("Example prediction reference:")
print(predictions[0].numpy())

关于python - 如何将 Keras 模型保存为卡住图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60974077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com