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://
Klasy zagnieżdżone
klasa | Opcje dekodowania proto | Opcjonalne atrybuty dla DecodeProto |
Metody publiczne
statyczny 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])]`.