Dekoderden örneklenen çıktılar üretmek için seq2seq'i bir öznitelikle, yani her bir adımda üretmeye çalışıyorum, çıktı kayıtlarının argmax'ını önceki durumdan almak yerine, bunlardan örnek almalıyım logit dağıtımına ve sonraki adım için girdi olarak kullanın.Örneklenmiş kod çözücü çıkışları ile seq2seq uygulanması
Etrafa bir şeyler kazandıktan sonra, seq2seq.py dosyasındaki loop_function öğesini başlamak için umut verici bir yer olarak buldum.
def _extract_sample_and_embed(embedding, output_projection=None,
update_embedding=True):
def loop_function(prev, _):
if output_projection is not None:
prev = nn_ops.xw_plus_b(prev, output_projection[0], output_projection[1])
prev_symbol = math_ops.sample(prev) #<------- Need this op but it does not exist ?
emb_prev = embedding_ops.embedding_lookup(embedding, prev_symbol)
if not update_embedding:
emb_prev = array_ops.stop_gradient(emb_prev)
return emb_prev
return loop_function
Sonra ben seq2seq_embedding_with_attention modelinde bu döngü fonksiyon jeneratörü kullanın: I (argmax katıştırma + özlerinin dosyasında birinden değiştirilmiş) şöyle bir döngü işlevini yazmak zorunda gibi görünüyor. Bununla birlikte, tensörün içinde bir tensörden gelen örneklere ihtiyacım var, bu yüzden kendi yazmam gerekecek mi? Bunu nasıl yaparım?
-
rehberlik ararken
, ben tensorflow/tensorflow/piton/ops içinde/orada bir referanstır candidate_sampling_ops bulundu:
from tensorflow.python.ops import gen_candidate_sampling_ops
ama yapamıyorum bu dosyayı bul. Sanırım bir yerden otomatik olarak üretiliyor. nerede? aşağıdaki gibi
çok teşekkürler! Bu işe yarıyor. – thesilverbail
Evet, ayrıca seq2seq'de çalışmamı sağladım, ayrıca çıkış_adıma geri döndüğünüz jetonları da yaymanız gerektiğini unuttu. Bu fonksiyon seçimlerde rastgelelik getirir - ama yine de Gumbel hilesini doğru bir şekilde uyguladığı konusunda ikna olmadım. Gumbel gürültüsü doğrudan 'a'ya uygulanmamalıdır mu? Ve shouldlog (−log (Uniform (0,1)) olmamalıdır? – shapecatcher
Cevabımı kullanarak son kullanmadığım kod ile güncelledim. Bu benim görüşüme göre doğru Gumbel max trick. Daha iyi sonuçlar üretir.Kullanılan rastgele miktarını (sıcaklığa benzer şekilde) kontrol etmek için max_gumbel_noise parametresini kullanabilirsiniz. – shapecatcher