2016-04-06 3 views
2

私はTensorflow + Pythonを使用しています。TensorFlow:ソースコードなしでモデルをリリースするにはどうすればよいですか?

詳細なソースコードなしで保存されたTensorflowモデル(アーキテクチャ+訓練された変数)をリリースできるかどうか不思議です。私はtf.train.Saver()を認識していますが、変数だけを保存するように見えます。復元するためには、同じアーキテクチャを「定義」する必要があります。

テスト/実行のみの目的で、保存された{アーキテクチャ+訓練された変数}をソースコードなしでリリースする方法があるため、ユーザーはクエリをキャストして結果を得ることができますか?

答えて

1

TensorFlow Servingプロジェクトは、このユースケースを直接的にすることを目的としています(エンドユーザーはトレーニングではなく推論のためにモデルを使用していることを前提としています)。 TensorFlow Servingには、tf.train.Savertf.GraphDef、モデル全体を定義するExporterクラス、モデルの入出力を記述する「シグネチャ」クラスが含まれます。

basics tutorialには、モデルをエクスポートするための入門があります。

1

Saverは、MetaGraphDef(デフォルトでチェックポイントが保存されている:.metaファイル)から構築できます。そのSaverを使用してモデルを復元します。したがって、ユーザーはコード内でグラフを再定義する必要はありません。しかし、彼らはまだモデル署名(入力変数、出力変数)を把握する必要があります。私はtf.Collectionを使用してこれを解決します(しかし私はそれをやるための良い方法を見つけることに興味があります)。 https://github.com/falcondai/cifar10/blob/master/eval.py#L18

  • 、コレクションhttps://github.com/falcondai/cifar10/blob/master/eval.py#L58
  • からの入力変数を取得するメタグラフから

    +0

    あなたの実装では、正しい重みfr訓練されたモデルは何ですか?私はあなたが入力と出力のレイヤーを取得することがわかります(https://github.com/falcondai/cifar10/blob/master/eval.py#L43 + https://github.com/falcondai/cifar10/blob/master /eval.py#L45) –

    +0

    @NicolaiAntonLynnerupはい、セーバーは各変数のチェックポイントファイルからバイナリをロードします。あなたが参照する行は、レイヤーではなく必要な入力変数と出力変数を取得するので、グラフを評価で実行することができます。関数のシグネチャと考えると、ビジュアルな分類子はイメージ - >クラスのロジットをマップします。別の言い方をすると、これらの変数(プレースホルダーも変数です)がなくても、この呼び出しを作成することはできません:https://github.com/falcondai/cifar10/blob/master/eval.py#L67 – Falcon

    +0

    それは完全に動作します: )ありがとう! –

    関連する問題