DecodeProto

publiczna klasa końcowa DecodeProto

Operacja wyodrębnia pola z serializowanego protokołu buforującego wiadomość do tensorów.

Uwaga: ten interfejs API został zaprojektowany z myślą o ortogonalności, a nie o przyjazności dla człowieka. Można go używać do ręcznego analizowania wejściowych protosów, ale jest on przeznaczony do użycia w wygenerowanym kodzie.

Operacja `decode_proto` wyodrębnia pola z serializowanego protokołu buforującego wiadomość do tensorów. Pola w `nazwa_pola` są dekodowane i konwertowane na odpowiednie `typy_wyjściowe`, jeśli to możliwe.

Aby zapewnić kontekst nazw pól, należy podać nazwę „typ_wiadomości”. Rzeczywisty deskryptor komunikatu można sprawdzić w puli połączonych deskryptorów lub w nazwie pliku dostarczonej przez osobę wywołującą przy użyciu atrybutu `źródło_deskryptu`.

Każdy tensor wyjściowy jest tensorem gęstym. Oznacza to, że jest dopełniony tak, aby pomieścić największą liczbę powtarzających się elementów widzianych w minipartii wejściowej. (Kształt jest również dopełniany o jeden, aby zapobiec wymiarom zerowym). Rzeczywistą liczbę powtórzeń dla każdego przykładu w minipartii można znaleźć w wynikach `sizes`. W wielu przypadkach wynik `decode_proto` jest natychmiast wprowadzany do tf.squeeze, jeśli brakujące wartości nie stanowią problemu. Używając tf.squeeze, zawsze jawnie podawaj wymiar ściśnięcia, aby uniknąć niespodzianek.

W większości przypadków mapowanie między typami pól Proto i typami TensorFlow jest proste. Istnieje jednak kilka szczególnych przypadków:

- Pole proto zawierające podkomunikat lub grupę można przekonwertować jedynie na `DT_STRING` (serializowany podkomunikat). Ma to na celu zmniejszenie złożoności interfejsu API. Wynikowy ciąg znaków może zostać użyty jako dane wejściowe innej instancji operacji decode_proto.

- TensorFlow nie obsługuje liczb całkowitych bez znaku. Operacje reprezentują typy uint64 jako `DT_INT64` z tym samym wzorcem bitowym z uzupełnieniem do dwóch (w oczywisty sposób). Wartości int32 bez znaku można dokładnie przedstawić, określając typ `DT_INT64` lub używając uzupełnienia dwójkowego, jeśli wywołujący określi `DT_INT32` w atrybucie `output_types`.

- Pola `mapy` nie są bezpośrednio dekodowane. Traktowane są jako pola „powtarzane” odpowiedniego typu wpisu. Protokompilator definiuje typy wpisów dla każdego pola mapy. Nazwa typu to nazwa pola przekonwertowana na „CamelCase” z dołączonym „Entry”. Komunikat tf.train.Features.FeatureEntry jest przykładem jednego z tych ukrytych typów „Entry”.

- Pola `enum` należy czytać jako int32.

Obsługiwane są zarówno serializacje binarne, jak i tekstowe, które można wybrać za pomocą atrybutu „format”.

Atrybut `descriptor_source` wybiera źródło deskryptorów protokołu, z których należy korzystać podczas wyszukiwania `message_type`. To może być:

- Pusty ciąg znaków lub „local://”, w którym to przypadku tworzone są deskryptory protokołu dla definicji proto C++ (nie Pythona) połączonych z plikiem binarnym.

- Plik, w którym to przypadku tworzone są deskryptory protokołu z pliku, który powinien zawierać `FileDescriptorSet` serializowany jako ciąg znaków. UWAGA: Możesz zbudować plik `źródło_deskryptu`, używając opcji `--descriptor_set_out` i `--include_imports` do kompilatora protokołu `protoc`.

- A „bajty:// ", w którym tworzone są deskryptory protokołów z ` `, który powinien być `FileDescriptorSet` serializowanym jako ciąg znaków.

Klasy zagnieżdżone

klasa Opcje dekodowania proto Opcjonalne atrybuty dla DecodeProto

Metody publiczne

statyczny DecodeProto
utwórz ( Zakres zakresu, Operand <String> bajty, String MessageType, Lista<String> nazwy pól, Lista<Klasa<?>> typy wyjściowe, Opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację DecodeProto.
statyczne DecodeProto.Options
deskryptorSource (deskryptor ciągu znaków)
statyczne DecodeProto.Options
MessageFormat (Ciąg MessageFormat)
statyczne DecodeProto.Options
sanitize (Boolean sanitize)
Wyjście <liczba całkowita>
rozmiary ()
Tensor int32 o kształcie `[batch_shape, len(field_names)]`.
Lista< Wyjście <?>>
wartości ()
Lista tensorów zawierających wartości dla odpowiedniego pola.

Metody dziedziczone

Metody publiczne

public static DecodeProto create ( Zakres zakresu, Operand <String> bajtów, String MessageType, Lista<String> nazwy pól, Lista<Klasa<?>> typy wyjściowe, Opcje... opcje)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację DecodeProto.

Parametry
zakres aktualny zakres
bajty Tensor serializowanych protosów o kształcie „batch_shape”.
typ wiadomości Nazwa typu wiadomości proto do zdekodowania.
Nazwy pól Lista ciągów zawierających nazwy pól proto. Pole rozszerzenia można zdekodować wykorzystując jego pełną nazwę, np. EXT_PACKAGE.EXT_FIELD_NAME.
Typy wyjściowe Lista typów TF do użycia dla odpowiedniego pola w nazwach pól.
opcje przenosi opcjonalne wartości atrybutów
Zwroty
  • nowa instancja DecodeProto

public static DecodeProto.Options deskryptorSource (String deskryptorSource)

Parametry
deskryptorŹródło Albo specjalna wartość „local://”, albo ścieżka do pliku zawierającego serializowany zestaw „FileDescriptorSet”.

public static DecodeProto.Options MessageFormat (String MessageFormat)

Parametry
Format wiadomości Albo „binarny”, albo text .

publiczne statyczne DecodeProto.Options oczyść (Boolean sanitize)

Parametry
zdezynfekować Niezależnie od tego, czy zdezynfekować wynik, czy nie.

public Output <Integer> rozmiary ()

Tensor int32 o kształcie `[batch_shape, len(field_names)]`. Każdy wpis to liczba wartości znalezionych w odpowiednim polu. Pola opcjonalne mogą mieć wartości 0 lub 1.

publiczna Lista< Wyjście <?>> wartości ()

Lista tensorów zawierających wartości dla odpowiedniego pola. `values[i]` ma typ danych `output_types[i]` i kształt `[batch_shape, max(sizes[...,i])]`.