यह release PyTorch के पुनरावर्ती तंत्रिका नेटवर्क के लिए इनपुट की चर लंबाई के लिए PackedSequence
प्रदान करता है। हालांकि, मैंने पाया कि इसे सही तरीके से उपयोग करना थोड़ा मुश्किल है।PyTorch में बैच-इनपुट एलएसटीएम नेटवर्क को सही तरीके से कार्यान्वित कैसे करें?
एक RNN परत जो pack_padded_sequence
से तंग आ चुके थे का उत्पादन ठीक करने के लिए pad_packed_sequence
का उपयोग करना, हम एक T x B x N
टेन्सर outputs
जहां T
अधिकतम समय कदम दूर है मिला है, B
बैच आकार और N
छिपा आकार है। मैंने पाया कि बैच में छोटे अनुक्रमों के लिए, बाद का आउटपुट सभी शून्य होगा।
यहां मेरे प्रश्न हैं।
- एक भी उत्पादन कार्य जहां एक सभी दृश्यों के अंतिम उत्पादन की आवश्यकता होगी के लिए, सरल
outputs[-1]
एक गलत परिणाम दे देंगे के बाद से इस टेन्सर कम दृश्यों के लिए शून्य के बहुत सारे हैं। सभी अनुक्रमों के लिए अंतिम अंतिम आउटपुट लाने के लिए अनुक्रम लंबाई से सूचकांक बनाने की आवश्यकता होगी। क्या ऐसा करने का कोई आसान तरीका है? - एक बहु उत्पादन कार्य के लिए (जैसे seq2seq), आम तौर पर एक एक रेखीय परत
N x O
जोड़ सकते हैं औरTB x O
मेंT x B x O
नयी आकृति प्रदान बैच आउटपुट और गणना सही लक्ष्यTB
(आमतौर पर भाषा मॉडल में पूर्णांक) के साथ पार एन्ट्रापी नुकसान होगा। इस स्थिति में, बैच आउटपुट मामलों में इन शून्यों को करते हैं?
मैं अपने समाधान कोशिश कर रहा हूँ, और मैं त्रुटि मिली: फ़ाइल "/root/PycharmProjects/skip-thoughts.torch/pytorch/tmpRNN.py", रेखा 13, last_timestep वापसी unpacked.gather में (1, आईडीएक्स) .squeeze() फ़ाइल "/ usr/local/lib/python3।5/dist-packages/मशाल/autograd/variable.py ", लाइन 684, इकट्ठा करने में इकट्ठा करें Gather.apply (self, dim, index) रनटाइम त्रुटि: save_for_backward केवल इनपुट या आउटपुट टेंसर को सहेज सकता है, लेकिन तर्क 0 नहीं करता है इस हालत को पूरा करो – chenfei