Operasyon, serileştirilmiş bir protokol tampon mesajındaki alanları tensörlere çıkarır.
Not: Bu API, insan dostu olmaktan ziyade dikeylik için tasarlanmıştır. Giriş protokollerini elle ayrıştırmak için kullanılabilir, ancak oluşturulan kodda kullanılmak üzere tasarlanmıştır.
'decode_proto' işlemi, serileştirilmiş bir protokol arabellek mesajından alanları tensörlere çıkarır. "Alan_adları"ndaki alanların kodu çözülür ve mümkünse karşılık gelen "çıkış_tipleri"ne dönüştürülür.
Alan adlarına bağlam kazandırmak için bir "mesaj_türü" adı sağlanmalıdır. Gerçek mesaj tanımlayıcısı, bağlı tanımlayıcı havuzunda veya arayan tarafından "tanımlayıcı_kaynak" özelliği kullanılarak sağlanan dosya adında aranabilir.
Her çıkış tensörü yoğun bir tensördür. Bu, giriş mini kümesinde görülen en fazla sayıda tekrarlanan öğeyi tutacak şekilde doldurulduğu anlamına gelir. (Sıfır boyutlu boyutları önlemek için şekil aynı zamanda birer adet dolguludur). Mini serideki her örnek için gerçek tekrar sayıları "boyutlar" çıktısında bulunabilir. Çoğu durumda, eğer eksik değerler sorun teşkil etmiyorsa, 'decode_proto' çıktısı hemen tf.squeeze'e beslenir. Tf.squeeze kullanırken sürprizlerden kaçınmak için daima sıkma boyutunu açıkça iletin.
Proto alan tipleri ile TensorFlow dtipleri arasındaki eşleme çoğunlukla basittir. Ancak birkaç özel durum vardır:
- Bir alt mesaj veya grup içeren bir protokol alanı yalnızca `DT_STRING`e (serileştirilmiş alt mesaj) dönüştürülebilir. Bunun amacı API'nin karmaşıklığını azaltmaktır. Ortaya çıkan dize, decode_proto işleminin başka bir örneğine girdi olarak kullanılabilir.
- TensorFlow imzasız tamsayılar için destekten yoksundur. Ops, uint64 türlerini aynı ikili tamamlayıcı bit düzenine sahip bir 'DT_INT64' olarak temsil eder (açık yol). İmzasız int32 değerleri tam olarak 'DT_INT64' tipi belirtilerek veya arayan kişinin 'output_types' özelliğinde 'DT_INT32' belirtmesi durumunda ikili tamamlayıcı kullanılarak temsil edilebilir.
- 'harita' alanlarının kodu doğrudan çözülmez. Uygun giriş tipinin 'tekrarlanan' alanları olarak değerlendirilirler. Proto-derleyici her harita alanı için giriş türlerini tanımlar. Tür adı, "Entry" eklenerek "CamelCase"e dönüştürülen alan adıdır. tf.train.Features.FeatureEntry
mesajı bu örtülü 'Giriş' türlerinden birinin örneğidir.
- 'enum' alanları int32 olarak okunmalıdır.
Hem ikili hem de metin protokol serileştirmeleri desteklenir ve "format" özelliği kullanılarak seçilebilir.
"tanımlayıcı_kaynak" özelliği, "mesaj_türü" aranırken başvurulacak protokol tanımlayıcılarının kaynağını seçer. Bu olabilir:
- Boş bir dize veya "local://"; bu durumda, ikili dosyaya bağlı C++ (Python değil) protokol tanımları için protokol tanımlayıcıları oluşturulur.
- Bir dosya; bu durumda protokol tanımlayıcıları dosyadan oluşturulur ve bu dosyanın dize olarak serileştirilmiş bir 'FileDescriptorSet' içermesi beklenir. NOT: Protokol derleyicisi 'protoc' için '--descriptor_set_out' ve '--include_imports' seçeneklerini kullanarak bir 'descriptor_source' dosyası oluşturabilirsiniz.
- Bir "bayt://
İç İçe Sınıflar
sınıf | DecodeProto.Options | DecodeProto için isteğe bağlı özellikler |
Genel Yöntemler
statik Kod ÇözmeProto | create ( Kapsam kapsamı, İşlenen <Dize> bayt, String messageType, List<String> fieldNames, List<Class<?>> OutputTypes, Options... seçenekleri) Yeni bir DecodeProto işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi. |
statik DecodeProto.Options | tanımlayıcıKaynak (Dize tanımlayıcıKaynak) |
statik DecodeProto.Options | messageFormat (Dize messageFormat) |
statik DecodeProto.Options | sterilize etmek (Boolean sterilize etmek) |
Çıkış <Tamsayı> | boyutlar () '[batch_shape, len(field_names)]' şeklindeki int32 tensörü. |
Liste< Çıkış <?>> | değerler () İlgili alan için değerleri içeren tensörlerin listesi. |
Kalıtsal Yöntemler
Genel Yöntemler
public static DecodeProto create ( Kapsam kapsamı, Operand <String> bayt, String messageType, List<String> fieldNames, List<Class<?>> OutputTypes, Options... seçenekleri)
Yeni bir DecodeProto işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi.
Parametreler
kapsam | mevcut kapsam |
---|---|
bayt | 'Batch_shape' şeklindeki serileştirilmiş protoların tensörü. |
mesaj tipi | Kodu çözülecek protokol mesaj türünün adı. |
alanAdları | Proto alan adlarını içeren dizelerin listesi. Bir uzantı alanının kodu, tam adı kullanılarak çözülebilir, örneğin EXT_PACKAGE.EXT_FIELD_NAME. |
çıktı Türleri | Alan_adları'ndaki ilgili alan için kullanılacak TF türlerinin listesi. |
seçenekler | isteğe bağlı nitelik değerlerini taşır |
İadeler
- DecodeProto'nun yeni bir örneği
public static DecodeProto.Options descriptorSource (Dize tanımlayıcıSource)
Parametreler
tanımlayıcıKaynak | Ya 'local://' özel değeri ya da serileştirilmiş bir 'FileDescriptorSet' içeren dosyanın yolu. |
---|
public static DecodeProto.Options messageFormat (String messageFormat)
Parametreler
mesaj Formatı | Ya 'ikili' ya da text . |
---|
public static DecodeProto.Options temizleme (Boolean temizleme)
Parametreler
sterilize etmek | Sonucun sterilize edilip edilmeyeceği. |
---|
genel Çıkış <Tamsayı> boyutları ()
'[batch_shape, len(field_names)]' şeklindeki int32 tensörü. Her giriş, ilgili alan için bulunan değerlerin sayısıdır. İsteğe bağlı alanlar 0 veya 1 değerine sahip olabilir.
genel Liste< Çıkış <?>> değerler ()
İlgili alan için değerleri içeren tensörlerin listesi. "values[i]", "output_types[i]" veri türüne ve "[batch_shape, max(sizes[...,i])]" şekline sahip.