2016-05-16 14 views
5

Belgemdeki her simge için yoğun vektör temsili oluşturmak amacıyla bir katıştırma_görüntü işlemi kullanıyorum. WildML article).Gömme tablosunu doldurma dolgu değeri maskeleme yapmıyor

Her şey düzgün çalışıyor, ancak belgemde bir dolgu değeri ekleyerek doldurduğumda, yerleştirme araması bu simge için de bir vektör oluşturur. Bu yaklaşımın, sınıflandırma görevindeki sonuçları değiştirebileceğini düşünüyorum. Elde etmek istediğim şey, Torch LookupTableMaskZero'un yaptığı gibi bir şeydir.

1) Ne yapmak istediğimi doğru mu?

2) Böyle bir şey zaten uygulanmış mı?

3) Değilse, buna karşılık gelen vektörün oluşturulmasını önlemek için dolgu değerini nasıl gizleyebilirim?

şu anda desteklemediği maalesef tf, bu özellik kullanışlı olduğunu düşünüyorum

Alessandro önceden

+0

Çözümü bulamadınız mı? – Shatu

cevap

2

@Alessandro Suglia teşekkür ederiz. Aynı sonucu elde etmek için bir geçici çözüm daha yavaştır, iki kez arama yapmaktır. Bu RNN modelinde görünüyor

lookup_result = tf.nn.embedding_lookup(emb, index) 
    masked_emb = tf.concat(0, [tf.zeros([1, 1]), 
          tf.ones([emb.get_shape()[0] - 1, 1]) 
    mask_lookup_result = tf.nn.embedding_lookup(masked_emb, index) 
    lookup_result = tf.mul(lookup_result, mask_lookup_result) 
-1

altına gibi, biz sürece biz kaybı maske olarak dolgu değerini maske gerekmez (zarar olursa olsun giriş dolgu maskelemek da aynıdır, ben olsun bir test kodu çalıştırarak sonuçlanır!

Elbette tf.nn.dynamic_rnnsequence_len parametresi iletilmediğinde, dolgu sıfır sayısını hesaplayabilir. Sonunda, eğer model, dizi arasında etkileşime girecekse (CNN gibi, evrişme, dolgu gömülmesini etkileyebilir), sıfır dolgu gömülmesi gereklidir.