python — сохраняет инициализированный тензорный граф из Keras

Я пытаюсь создать модель Tensorflow в Keras, инициализировать ее, а затем сохранить, чтобы потом использовать в 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 ++?

3

Решение

Графики TF содержат все виды узлов, которые никогда не выполняются за один вызов session.run. Узлы инициализации всегда будут там, но вам не нужно их запускать.

Однако, чтобы делать то, что вы хотите, я рекомендую вам взглянуть на библиотеки сохраненных моделей tf, которые позволяют сохранять график, некоторые переменные и набор сигнатур, чтобы ваш код C ++ мог знать, какие значения передать в session.run для прохождения обучения. работать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]