0

tflearn.DNNクラスを使用して作成したモデルをGoogle Cloud ML Engineに配備するには良い方法はありますか? SavedModelは予測シグネチャの定義で入力と出力のテンソルを定義する必要がありますが、tflearn.DNNからそのテンソルを取得する方法は不明です。Google Cloudのml-engineでtflearn.DNNを使用

答えて

0

私はこれを、少なくとも私の特定のケースでは後で考え出しました。このスニペットでは、DNNをSavedModelとしてエクスポートして、Google Cloud ML Engineにデプロイすることができます。

スニペットが

  • ファイル名が
  • input_tensorが
  • output_tensorがtflearn.DNN
  • に渡されたネットワーク全体でtflearn.DNNに与えられたINPUT_DATA層でエクスポートディレクトリで次の引数を以下の通りです
  • セッションは、tflearn.DNNによって返されたオブジェクトの属性です。

    builder = tf.saved_model.builder.SavedModelBuilder(filename) 
    
    signature = tf.saved_model.signature_def_utils.predict_signature_def(
        inputs={'in':input_tensor}, outputs={'out':output_tensor}) 
    builder.add_meta_graph_and_variables(session, 
                [tf.saved_model.tag_constants.SERVING], 
                signature_def_map={'serving_default':signature}) 
    
    builder.save() 
    
    serving_vars = { 
        'name':self.name 
    } 
    
    assets = filename + '/assets.extra' 
    os.makedirs(assets) 
    
    with open(assets + '/serve.pkl', 'wb') as f: 
        pickle.dump(serving_vars, f, pickle.HIGHEST_PROTOCOL) 
    
+0

あなたはserving_varsをどのように使用しているのか説明できますか? – rhaertel80

+0

私が答える前に、私はTensorFlowの使用についてかなり新しいことを知っています:)この特定のケースでは、serving_varsは重大ではない可能性があります。しかし、私はそれに埋め込まれたword2vecモデルを持っている別のモデルを持っています。そのためには、embeddingsディクショナリがレイヤーの1つで使用されているので、それを提供するvarとして埋め込み辞書を持っています。 –

+0

私はあなたがエクスポートするものを使用できることを確認したいだけです。 assets.extraの内容は自動的には使用されません。埋め込みについては、TensorFlowチェックポイント/変数として格納されると仮定します。それは事実ですか? – rhaertel80

関連する問題