Converter modelo Keras para TensorFlow protobuf

votos
16

No momento, estamos treinando várias redes neurais usando Keras, que é ideal porque tem uma interface agradável e é relativamente fácil de usar, mas nós gostaríamos de ser capaz de aplicá-los em nosso ambiente de produção.

Infelizmente, o ambiente de produção é C ++, então nosso plano é:

  • Use o backend TensorFlow para salvar o modelo para um protobuf
  • Vincular nosso código de produção para TensorFlow, e depois carregar no protobuf

Infelizmente eu não sei como acessar os utilitários de poupança TensorFlow de Keras, que normalmente salva a HDF5 e JSON. Como faço para salvar a Protobuf?

Publicado 04/04/2016 em 19:16
fonte usuário
Em outras línguas...                            


6 respostas

votos
3

Você pode acessar TensorFlow backend por:

import keras.backend.tensorflow_backend as K

Então você pode chamar qualquer utilidade TensorFlow ou função como:

K.tf.ConfigProto
Respondeu 22/04/2016 em 04:26
fonte usuário

votos
4

Este parece ser respondida "Keras como uma interface simplificada para TensorFlow: tutorial" , publicado em O Keras Blog por François Chollet.

Em particular, seção II, "Usando modelos Keras com TensorFlow" .

Respondeu 10/05/2016 em 12:52
fonte usuário

votos
1

Salve seu modelo keras como um arquivo HDF5.

Você pode então fazer a conversão com o seguinte código:

from keras import backend as K
from tensorflow.python.framework import graph_util
from tensorflow.python.framework import graph_io

weight_file_path = 'path to your keras model'
net_model = load_model(weight_file_path)
sess = K.get_session()

constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), 'name of the output tensor')
graph_io.write_graph(constant_graph, 'output_folder_path', 'output.pb', as_text=False)
print('saved the constant graph (ready for inference) at: ', osp.join('output_folder_path', 'output.pb'))

Aqui está o meu código de exemplo que lida com múltiplas entradas e múltiplas casos de saída: https://github.com/amir-abdi/keras_to_tensorflow

Respondeu 10/05/2017 em 04:33
fonte usuário

votos
2

No caso de você não precisa utilizar uma GPU no ambiente que você está implantando, você também pode usar a minha biblioteca, chamada frugalmente de profundidade. Ele está disponível no GitHub e publicado sob a licença MIT: https://github.com/Dobiasd/frugally-deep

frugalmente de profundidade permite a execução para a frente passa nos modelos Keras já treinados diretamente em C ++ sem a necessidade de ligar contra TensorFlow ou qualquer outro backend.

Respondeu 03/01/2018 em 15:50
fonte usuário

votos
0

Convertendo modelo Keras (.h5) para Tensorflow (.pb) modelo é feito com este pouco de código.

Respondeu 23/03/2018 em 04:04
fonte usuário

votos
0

Certifique-se de mudar a fase de aprendizagem de backend keras para armazenar valores adequados das camadas (como abandono ou normalização lote). Aqui é uma discussão sobre isso.

Respondeu 01/04/2019 em 09:32
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more