2016-04-04 32 views
15

Şu anda güzel bir arayüze sahip ve kullanımı nispeten kolay olduğu için ideal olan Keras'ı kullanarak çeşitli sinir ağlarını eğitiyoruz, ancak bunları üretimimizde uygulamak istiyoruz. ortamı.Keras modelini TensorFlow protobuf'a dönüştürün

  • Kullanım TensorFlow arka uç bir Protobuf
  • Bağlantı TensorFlow için üretim kodu modeli kaydedin ve sonra Protobuf yüklemek için:

    Maalesef üretim ortamıdır C++, yani bizim planı etmektir

Maalesef, normalde HDF5 ve JSON'a kaydedilen Keras'tan TensorFlow kaydetme yardımcı programlarına nasıl erişeceğimi bilmiyorum. Protobuf'a nasıl kaydederim? Eğer gibi herhangi TensorFlow yarar veya işlevi çağırabilir Sonra

import keras.backend.tensorflow_backend as K 

:

+1

Keras'ı aşina değil, ancak varsayılan grafiği kullanıyorsa, protobuf'u "tf.get_default_graph(). As_graph_def()" –

cevap

3

Sen tarafından TensorFlow arka uç erişebilirsiniz

K.tf.ConfigProto 
2

: Burada

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')) 

çoklu giriş ve çoklu çıkış davalarına bakan benim örnek kod edilir:

Daha sonra aşağıdaki kodla dönüştürme yapabilirsiniz dağıttığınız ortamda bir GPU kullanın, aynı zamanda frugally-deep denilen kütüphanemi de kullanabilirsiniz. GitHub'da mevcuttur ve MIT Lisansı: https://github.com/Dobiasd/frugally-deep

altında yayınlanmıştır. Bu sayede TensorFlow veya başka bir arka uç ile bağlantı kurmaya gerek kalmadan C++ 'da zaten eğitimli Keras modellerinde ileriye doğru geçişler sağlar.

+0

olarak alabilirsiniz. RNN'leri destekleyecek herhangi bir plan var mı? RNN'leri (ama kıvrımları değil) idare eden [lwtnn] (https://github.com/lwtnn/lwtnn) ile ilginç çakışmalar. – Shep

+0

@Shep Gelecekte bunları desteklemek istiyorum, ancak bunun için planlanmış bir planım yok. –