2016-12-14 10 views
5

sequence_Loss मॉड्यूल के source_code में तीन पैरामीटर हैं जिन्हें वे आउटपुट, लक्ष्य और वजन के रूप में सूचीबद्ध करते हैं।समझने tensorflow sequence_loss पैरामीटर

आउटपुट और लक्ष्य आत्म व्याख्यात्मक हैं, लेकिन मैं बेहतर समझ रहा हूं कि weight पैरामीटर क्या है?

दूसरी चीज जो मुझे भ्रमित करती है वह यह है कि यह बताता है कि targets आउटपुट के रूप में length होना चाहिए, एक टेंसर की लंबाई से उनका क्या मतलब है? खासकर यदि यह एक 3 आयामी टेंसर है।

उत्तर

0

हमने इसे कक्षा में उपयोग किया और हमारे प्रोफेसर ने कहा कि हम इसे सही आकार के पास कर सकते हैं (टिप्पणी कहती है "लॉग इन के समान लंबाई के 1 डी बैच आकार के फ्लोट-टेंसर की सूची")। इससे उनका मतलब क्या नहीं है, लेकिन शायद यह आपको अपना कोड चलाने में मदद करेगा। मेरे लिए काम किया

यह कोड चाल करना चाहिए: [tf.ones(batch_size, tf.float32) for _ in logits]

संपादित करें: TF कोड से:

for logit, target, weight in zip(logits, targets, weights): 
     if softmax_loss_function is None: 
     # TODO(irving,ebrevdo): This reshape is needed because 
     # sequence_loss_by_example is called with scalars sometimes, which 
     # violates our general scalar strictness policy. 
     target = array_ops.reshape(target, [-1]) 
     crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
      logit, target) 
     else: 
     crossent = softmax_loss_function(logit, target) 
     log_perp_list.append(crossent * weight) 

वजन कि विशेष रूप से logit के लिए नुकसान से गुणा कर रहे हैं पारित कर रहे हैं कि। तो मुझे लगता है कि यदि आप एक विशेष भविष्यवाणी अतिरिक्त गंभीरता से लेना चाहते हैं तो आप ऊपर वजन बढ़ा सकते हैं।

+0

यह थोड़ा सा मदद करता है, लेकिन मैं वजन पैरामीटर के उद्देश्य के बारे में अधिक समझने की कोशिश कर रहा हूं, मुझे आरएनएन के हानि समारोह में वजन की बहुत सारी चर्चा नहीं मिल रही है, जब तक कि हम आउटपुट के बारे में बात नहीं कर रहे हों परत। क्या आपको लंबाई के मतलब से संबंधित उचित आकार के प्रश्न का उत्तर पता है? – TheM00s3

+0

मुझे लगता है कि आप कोड में टिप्पणी के बारे में बात कर रहे हैं? 'भार: 1 डी बैच आकार के फ्लोट-टेंसर की सूची लॉग के समान लंबाई के।" क्या आपका टिप्पणी उस टिप्पणी के बारे में है? –

+0

वह एक होगा। – TheM00s3

1

इनपुट टेंसर पर लागू मास्क के रूप में वजन के बारे में सोचें। कुछ एनएलपी अनुप्रयोगों में, हमारे पास प्रत्येक वाक्य के लिए अक्सर अलग-अलग वाक्य की लंबाई होती है। एक तंत्रिका नेट में फ़ीड करने के लिए एक मिनीबैच में एकाधिक उदाहरण वाक्यों को समानांतर/बैच करने के लिए, लोग इनपुट मास्कर में कौन सा तत्व वास्तव में एक वैध इनपुट इंगित करने के लिए मास्क मैट्रिक्स का उपयोग करते हैं। उदाहरण के लिए, वजन np.ones([batch, max_length]) हो सकता है जिसका अर्थ है कि सभी इनपुट तत्व कानूनी हैं।

हम भी लेबल के रूप में एक ही आकार के एक मैट्रिक्स का उपयोग कर सकते जैसे np.asarray([[1,1,1,0],[1,1,0,0],[1,1,1,1]]) (हम यह मान लेबल आकार 3x4 है), तो पहली पंक्ति की crossEntropy अंतिम स्तंभ बाहर 0.

के रूप में नकाबपोश किया जाएगा आप क्रॉस एन्ट्रॉपी के भारित संचय की गणना करने के लिए वजन का भी उपयोग कर सकते हैं।