TensorFlowの日本語まとめ

TensorFlowの公式サイトに書かれている英文を英語ど素人が翻訳(日本語訳/和訳)します。 間違いがありましたら、優しく教えていただけますと幸いです。 内容を理解したら、使ってみたい。

10.OP登録 Backwards compatibility

Backwards compatibility

 一般的には、仕様への変更は下位互換性がなければなりません。:OP仕様を変更すると、古い仕様から構築前にシリアライズされたGraphDefプロトコルバッファを破壊してはなりませんGraphDefの互換性の詳細については、ここで説明 されています。

 

f:id:TensorFlow:20151228083344j:plain

スポンサーリンク

 

 後方互換性を維持するには、いくつかの方法があります。

  1.  操作に追加された新しいattrsにデフォルト値が定義されている必要がありそのデフォルト値OPは、元の動作を持っている必要があります。多型( polymorphic)にはない多型からの操作を変更するには、デフォルトでは、元の署名を維持するために、新しいタイプのattrにデフォルト値を与える必要があります。たとえば、あなたの操作

     REGISTER_OP("MyGeneralUnaryOp")

        .Input("in: float")
        .Output("out: float");

    あなたが使用して下位互換性の方法でそれが多型にすることができます。

    REGISTER_OP("MyGeneralUnaryOp")
        .Input("in: T")
        .Output("out: T")
        .Attr("T: numerictype = DT_FLOAT");

     

  2. あなたは安全のattr上の制約がより制限することができます。たとえば、{int32, int64}から{int32, int64, float}またはtypeに変更することができます。それとも、{"apple", "banana", "orange"}またはstring{"apple", "orange"}から変更されることがあります。
  3. あなたがいる限り、リスト型のデフォルトが古い署名と一致するようにリスト入力/出力に単一の入力/出力を変更することができます
  4. デフォルトを空にした場合は新しいリストの入力/出力を追加することができます
  5. あなたのプロジェクトに固有のものでOPの名前を付けることによって、あなたが新しいアプリの名前空間を作成します。これはあなたのOP Tensorflowの将来のバージョンに含まれている場合がある任意のOPSとの衝突を回避しました。
  6. 将来の計画を立てます!OPの将来の使用を予測してみてください。いくつかの署名の変更が(様々な種類リストに同じタイプのリストを作るなど)互換性のある方法で行うことはできません

安全危険な変更点の完全なリストはtensorflow/core/framework/op_compatibility_test.ccで見つけることができます。あなたがオペレーションするあなたの変更は後方互換性を持たせることができない場合は、新たなセマンティクスを持つ新しい名前で新しい操作を作成します

 

また、これらの変更はGraphDefの互換性を維持することができますが生成されたPythonコードが古い発信者と互換性のない方法で変更される可能性があることに注意してください。PythonのAPIは、おそらく最後に新しいオプションの引数を追加することを除いて、古い署名を保持することにより、手書きのPythonラッパーで慎重な変化によって互換性が維持されます。TensorFlowがメジャーバージョンを変更し、GraphDef version semanticsに準拠しなければならないとき、一般的に互換性のない変更のみを行うことができます。

 

(原文)

Adding a New Op