opは、シリアル化されたプロトコルバッファメッセージからテンソルにフィールドを抽出します。
`decode_proto` opは、シリアル化されたプロトコルバッファメッセージからテンソルにフィールドを抽出します。 `field_names`のフィールドはデコードされ、可能であれば対応する` output_types`に変換されます。
フィールド名のコンテキストを与えるために、 `message_type`名を指定する必要があります。実際のメッセージ記述子は、リンクされた記述子プール、または `descriptor_source`属性を使用して呼び出し元から提供されたファイル名のいずれかで検索できます。
各出力テンソルは密なテンソルです。これは、入力ミニバッチで見られる最大数の繰り返し要素を保持するためにパディングされることを意味します。 (サイズがゼロになるのを防ぐために、形状も1つ埋め込まれています)。ミニバッチの各例の実際の繰り返し回数は、 `sizes`出力で確認できます。多くの場合、欠落している値が問題にならない場合、 `decode_proto`の出力はすぐにtf.squeezeに送られます。 tf.squeezeを使用するときは、予期しない事態を避けるために、常にsqueezeディメンションを明示的に渡してください。
ほとんどの場合、ProtoフィールドタイプとTensorFlowdtypeの間のマッピングは簡単です。ただし、いくつかの特殊なケースがあります。
-サブメッセージまたはグループを含むプロトフィールドは、 `DT_STRING`(シリアル化されたサブメッセージ)にのみ変換できます。これは、APIの複雑さを軽減するためです。結果の文字列は、decode_protoopの別のインスタンスへの入力として使用できます。
-TensorFlowは符号なし整数のサポートを欠いています。 opsは、uint64タイプを同じ2の補数ビットパターンを持つ `DT_INT64`として表します(明白な方法)。符号なしint32値は、タイプ `DT_INT64`を指定するか、呼び出し元が` output_types`属性で `DT_INT32`を指定する場合は、2の補数を使用して正確に表すことができます。
バイナリとテキストの両方のプロトシリアル化がサポートされており、 `format`属性を使用して選択できます。
`descriptor_source`属性は、` message_type`を検索するときに参照するプロトコル記述子のソースを選択します。これは次のようになります。
-空の文字列または「local://」。この場合、プロトコル記述子は、バイナリにリンクされたC ++(Pythonではない)プロト定義用に作成されます。
-ファイル。この場合、プロトコル記述子はファイルから作成されます。このファイルには、文字列としてシリアル化された `FileDescriptorSet`が含まれている必要があります。注:プロトコルコンパイラ `protoc`の` --descriptor_set_out`および `--include_imports`オプションを使用して、` descriptor_source`ファイルを作成できます。
-「バイト://
ネストされたクラス
クラス | DecodeProto.Options | DecodeProto オプションの属性 |
パブリックメソッド
静的DecodeProto | create (スコープスコープ、オペランド<String>バイト、String messageType、List <String> fieldNames、List <Class <?>> outputTypes、 Options ... options) 新しいDecodeProto操作をラップするクラスを作成するファクトリメソッド。 |
静的DecodeProto.Options | 記述子ソース(文字列descriptorSource) |
静的DecodeProto.Options | messageFormat (String messageFormat) |
静的DecodeProto.Options | サニタイズ(ブールサニタイズ) |
出力<整数> | サイズ() 形状が `[batch_shape、len(field_names)]`のint32のテンソル。 |
リスト<出力<?>> | 値() 対応するフィールドの値を含むテンソルのリスト。 |
継承されたメソッド
パブリックメソッド
public static DecodeProto create (スコープスコープ、オペランド<文字列>バイト、文字列メッセージタイプ、リスト<文字列>フィールド名、リスト<クラス<?>>出力タイプ、オプション...オプション)
新しいDecodeProto操作をラップするクラスを作成するファクトリメソッド。
パラメーター
範囲 | 現在のスコープ |
---|---|
バイト | 形状が `batch_shape`のシリアル化されたプロトのテンソル。 |
messageType | デコードするプロトメッセージタイプの名前。 |
fieldNames | プロトフィールド名を含む文字列のリスト。拡張フィールドは、そのフルネーム(例:EXT_PACKAGE.EXT_FIELD_NAME)を使用してデコードできます。 |
outputTypes | field_namesのそれぞれのフィールドに使用するTFタイプのリスト。 |
オプション | オプションの属性値を運ぶ |
戻り値
- DecodeProtoの新しいインスタンス
public static DecodeProto.Options記述子ソース(文字列descriptorSource)
パラメーター
記述子ソース | 特別な値 `local://`またはシリアル化された `FileDescriptorSet`を含むファイルへのパス。 |
---|
public static DecodeProto.Options messageFormat (String messageFormat)
パラメーター
messageFormat | `binary`または` text`のいずれか。 |
---|
public Output <Integer>サイズ()
形状が `[batch_shape、len(field_names)]`のint32のテンソル。各エントリは、対応するフィールドで見つかった値の数です。オプションのフィールドには、0または1の値を指定できます。
public List <出力<?>>値()
対応するフィールドの値を含むテンソルのリスト。 `values [i]`のデータ型は `output_types [i]`、形状は `[batch_shape、max(sizes [...、i])]`です。