python - 从 Keras 保存初始化的 tensorflow 图

标签 python c++ tensorflow keras

我正在尝试在 Keras 中创建一个 Tensorflow 模型,对其进行初始化,然后保存它以便稍后在 C++ 中使用它。我不想用 Keras 训练它,因为我有一个自定义的 C++ 训练方法我想使用。

我试着这样做:

def reset_weights(model):
    session = K.get_session()
    for layer in model.layers:
        if hasattr(layer, 'kernel_initializer'):
            layer.kernel.initializer.run(session=session)


inputs = Input(shape=(2,), name="inputs")
hidden_l = Dense(5, activation='relu', name="hidden_1", kernel_initializer="glorot_normal")(inputs)
hidden_l = LeakyReLU(alpha=0.3, name="hidden_leakyrelu_1")(hidden_l)
outputs = Dense(2, activation='softmax', name="outputs", kernel_initializer="glorot_normal")(hidden_l)
model = Model(inputs=inputs, outputs=outputs)

reset_weights(model)
K.set_learning_phase(0)
sess = K.get_session()
f = "graph_def_for_reference.pb.ascii"
tf.train.write_graph(sess.graph.as_graph_def(), "./", f, as_text=True)

但是 graph_def_for_reference.pb.ascii 文件似乎仍然包含一堆初始化节点,而不仅仅是图结构。

我如何运行初始化并保存图表和初始化的权重,以便我可以将它们加载到 TensorFlow C++ 中?

最佳答案

TF 图包含各种节点,这些节点永远不会在对 session.run 的单次调用中执行。初始化节点将始终存在,但您不必运行它们。

不过,要执行您想要的操作,我建议您查看 tf savedmodel 库,它可以让您保存图形、一些变量和一组签名,以便您的 C++ 代码可以知道要传递给 session.run 的值获得工作培训。

关于python - 从 Keras 保存初始化的 tensorflow 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50362045/

相关文章:

python - 如何在 blender-2.68 中加载 .ply 文件并通过命令行/脚本对其应用修改器?

python - 如何验证 pydantic 中的复杂列表类型?

C++ regex_replace 清除连接的十进制数

c++ - 当我有多态性指针时使用 "rule of zero"

python - 在 tensorflow 中,沿 0 轴从张量中随机(子)采样 k 个条目

python - 有人可以解释一下这段代码的第二个版本是如何工作的吗?

Sage Math 9.0 (Jupyter) 中的 Python Pandas - Windows

c++ - 如何知道ID2D1Brush是哪种画笔?

tensorflow - 我可以将辅助输入传递给 Apache Beam PTransforms 吗?

python-3.x - 在 tensorflow 中通过同一前馈网络传递多个值