Python 从Keras保存初始化的tensorflow图
我试图在KLAS中创建一个TysFooRoad模型,初始化它,然后保存它,以便以后在C++中使用它。我不想用Keras来训练它,因为我有一个C++训练的自定义方法,我想使用。 我试图通过以下方式实现这一点:Python 从Keras保存初始化的tensorflow图,python,c++,tensorflow,keras,Python,C++,Tensorflow,Keras,我试图在KLAS中创建一个TysFooRoad模型,初始化它,然后保存它,以便以后在C++中使用它。我不想用Keras来训练它,因为我有一个C++训练的自定义方法,我想使用。 我试图通过以下方式实现这一点: def reset_weights(model): session = K.get_session() for layer in model.layers: if hasattr(layer, 'kernel_initializer'):
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\u def\u for_reference.pb.ascii
文件似乎仍然包含一组初始化节点,而不仅仅是图形结构
如何运行初始化并保存图和初始化的权重,以便我可以在TysFoeSoC+C++中使用/< P> > P> TF图包含在SSENSC.Run.Runn调用中从未执行过的所有节点。初始化节点将始终存在,但您不必运行它们
不过,为了实现您的目的,我建议您查看tf savedmodel库,它允许您保存图形、一些变量,一组签名,这样C++代码就可以知道传递给SESSION的值。运行以获得训练。如果你<代码>模型。用虚构的数据预测,应该运行包括初始化在内的整个图。然后您可以提取并保存权重,我知道您可以
model.save
,但不确定是否可以将其加载到TensorFlow中。不幸的是,即使在运行model.predict之后,tf.train.write\u graph仍会保存包含所有初始化节点的图