PyTorch'un bu release numarası, yinelenen sinir ağı için değişken giriş uzunlukları için PackedSequence
sağlar. Ancak, doğru kullanmak için biraz zor buldum. pack_padded_sequence
tarafından beslendi bir RYSA tabakasının bir çıkış kurtarmak için pad_packed_sequence
kullanmaPyTorch'ta toplu giriş LSTM ağı nasıl doğru uygulanır?
, biz B
parti boyutu ve N
gizli boyutudur, bir T x B x N
tensörünü T
maksimum zaman adım outputs
aldık. Parti içindeki kısa diziler için, sonraki çıktının tüm sıfırlar olduğunu buldum.
İşte benim sorularım. Bu tensör kısa dizileri için sıfırların çok içerdiğinden bir bütün dizilerin son çıkışını gerekir tek çıkış görev için
- , basit
outputs[-1]
bir yanlış sonuç verecektir. Biri, tüm diziler için bireysel son çıkışı almak için dizi uzunluklarına göre indeksler oluşturmaya ihtiyaç duyacaktır. Bunu yapmanın daha basit bir yolu var mı? Birden fazla çıkış görev için
(örneğin seq2seq), genellikle bir lineer tabaka
N x O
ekleyin ve toplu çıkışları
TB x O
içine
T x B x O
yeniden şekillendirme ve gerçek hedef
TB
(dil modeli genellikle tamsayı) ile çapraz entropi kaybı hesaplamak. Bu durumda, toplu çıktıda bu sıfırlar önemlidir?
Ben senin çözüm çalışıyorum ve ben hata var 1, idx) .squeeze() Dosya "/ usr/local/lib/python3.5/dist-packages/torch/autograd/variable.py ", satır 684, toplanır dönüş Gather.apply (öz, loş, dizin) RuntimeError: save_for_backward yalnızca giriş veya çıkış tensörlerini kaydedebilir, ancak argüman 0 yazmaz bu durumu tatmin et – chenfei