Keras/TensorFlow हानि कार्यों में 'from_logits=True' क्या है? प्लेटोब्लॉकचैन डेटा इंटेलिजेंस। लंबवत खोज। ऐ.

Keras/TensorFlow हानि कार्यों में 'from_logits=True' क्या है?

केरस जैसे डीप लर्निंग फ्रेमवर्क आम जनता के लिए प्रवेश की बाधा को कम करते हैं और अनुभवहीन लोगों के लिए डीएल मॉडल के विकास का लोकतंत्रीकरण करते हैं, जो भारी भारोत्तोलन का खामियाजा उठाने के लिए उचित चूक और सरलीकृत एपीआई पर भरोसा कर सकते हैं और अच्छे परिणाम दे सकते हैं।

वर्गीकरण के लिए केरस हानि कार्यों का उपयोग करते समय नए गहन शिक्षण चिकित्सकों के बीच एक आम भ्रम उत्पन्न होता है, जैसे कि CategoricalCrossentropy और SparseCategoricalCrossentropy:

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)

क्या करता है from_logits ध्वज का संदर्भ लें?

उत्तर काफी सरल है, लेकिन उस नेटवर्क के आउटपुट पर एक नज़र डालने की आवश्यकता है जिसे हम हानि फ़ंक्शन का उपयोग करके ग्रेड करने का प्रयास कर रहे हैं।

लॉग्स और सॉफ्टमैक्स संभावनाएं

कहानी संक्षिप्त में:

प्रायिकताओं को सामान्यीकृत किया जाता है - अर्थात उनके बीच की सीमा होती है [0..1]. लॉग सामान्य नहीं होते हैं, और इनके बीच की सीमा हो सकती है [-inf...+inf].

आपके नेटवर्क की आउटपुट परत के आधार पर:

output = keras.layers.Dense(n, activation='softmax')(x)

output = keras.layers.Dense(n)(x)

का उत्पादन Dense परत होगी भी वापसी:

  • संभावनाओं: आउटपुट को सॉफ्टमैक्स फ़ंक्शन के माध्यम से पारित किया जाता है जो आउटपुट को संभावनाओं के एक सेट में सामान्य करता है n, जो सभी को जोड़ते हैं 1.
  • लॉगिट्स: n सक्रियण।

यह गलत धारणा संभवतः शॉर्ट-हैंड सिंटैक्स से उत्पन्न होती है जो आपको एक परत में सक्रियण जोड़ने की अनुमति देती है, मालूम होता है एक परत के रूप में, भले ही यह इसके लिए केवल आशुलिपि है:

output = keras.layers.Dense(n, activation='softmax')(x)

dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)

आपके नुकसान फ़ंक्शन को सूचित किया जाना चाहिए कि क्या उसे सामान्यीकृत वितरण (सॉफ्टमैक्स फ़ंक्शन के माध्यम से आउटपुट पारित) या लॉग की अपेक्षा करनी चाहिए। इसलिए from_logits झंडा!

कब चाहिए from_logits=सत्य?

यदि आपका नेटवर्क आउटपुट संभावनाओं को सामान्य करता है, तो आपका नुकसान फ़ंक्शन सेट होना चाहिए from_logits सेवा मेरे False, क्योंकि यह लॉग स्वीकार नहीं कर रहा है। यह सभी हानि वर्गों का डिफ़ॉल्ट मान भी है जो ध्वज को स्वीकार करते हैं, क्योंकि अधिकांश लोग एक जोड़ते हैं activation='softmax' उनकी आउटपुट परतों के लिए:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10, activation='softmax') 
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

इसका परिणाम यह होगा:

tf.Tensor(
[[[0.12467965 0.10423233 0.10054766 0.09162105 0.09144577 0.07093797
   0.12523937 0.11292477 0.06583504 0.11253635]]], shape=(1, 1, 10), dtype=float32)

चूंकि इस नेटवर्क का परिणाम सामान्यीकृत वितरण में होता है - लक्ष्य आउटपुट के साथ आउटपुट की तुलना करते समय, और वर्गीकरण हानि फ़ंक्शन (उपयुक्त कार्य के लिए) के माध्यम से उन्हें ग्रेडिंग करते समय - आपको सेट करना चाहिए from_logits सेवा मेरे False, या डिफ़ॉल्ट मान रहने दें।

दूसरी ओर, यदि आपका नेटवर्क आउटपुट पर सॉफ्टमैक्स लागू नहीं करता है:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10)
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

इसका परिणाम यह होगा:

tf.Tensor(
[[[-0.06081138  0.04154852  0.00153442  0.0705068  -0.01139916
    0.08506121  0.1211026  -0.10112958 -0.03410497  0.08653068]]], shape=(1, 1, 10), dtype=float32)

आपको सेट करना होगा from_logits सेवा मेरे True हानि फ़ंक्शन के लिए आउटपुट को ठीक से इलाज करने के लिए।

आउटपुट पर सॉफ्टमैक्स का उपयोग कब करें?

अधिकांश प्रैक्टिशनर सॉफ्टमैक्स को आउटपुट पर एक सामान्यीकृत प्रायिकता वितरण देने के लिए लागू करते हैं, क्योंकि यह कई मामलों में है जिसके लिए आप नेटवर्क का उपयोग करेंगे - विशेष रूप से सरलीकृत शैक्षिक सामग्री में। हालाँकि, कुछ मामलों में, आप नहीं करते सॉफ्टमैक्स या किसी अन्य फ़ंक्शन को लागू करने से पहले इसे अलग तरीके से संसाधित करने के लिए, आउटपुट पर फ़ंक्शन को लागू करना चाहते हैं।

एक उल्लेखनीय उदाहरण एनएलपी मॉडल से आता है, जिसमें आउटपुट टेंसर में वास्तव में एक बड़ी शब्दावली की संभावना मौजूद हो सकती है। सॉफ्टमैक्स को लागू करना उन सभी को और लालच से मिल रहा है argmax आमतौर पर बहुत अच्छे परिणाम नहीं देते हैं।

हालांकि, यदि आप लॉग का निरीक्षण करते हैं, तो टॉप-के निकालें (जहां के कोई भी संख्या हो सकती है लेकिन आमतौर पर कहीं बीच में होती है [0...10]), और उसके बाद ही सॉफ्टमैक्स को लागू करना शीर्ष कश्मीर शब्दावली में संभावित टोकन वितरण को महत्वपूर्ण रूप से बदल देते हैं, और आमतौर पर अधिक यथार्थवादी परिणाम उत्पन्न करते हैं।

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

इसे टॉप-के नमूनाकरण के रूप में जाना जाता है, और जबकि यह आदर्श रणनीति नहीं है, आमतौर पर लालची नमूने से काफी बेहतर प्रदर्शन करता है।

आगे जाना - कंप्यूटर विजन के लिए व्यावहारिक गहन शिक्षण

आपका जिज्ञासु स्वभाव आपको और आगे जाना चाहता है? हम अनुशंसा करते हैं कि हमारी जाँच करें कोर्स: "पायथन के साथ कंप्यूटर विजन के लिए प्रैक्टिकल डीप लर्निंग".

एक और कंप्यूटर विजन कोर्स?

हम MNIST अंकों या MNIST फैशन का वर्गीकरण नहीं करेंगे। उन्होंने बहुत समय पहले अपनी भूमिका निभाई थी। उन्नत ब्लैक-बॉक्स आर्किटेक्चर को प्रदर्शन का बोझ उठाने देने से पहले बहुत से सीखने के संसाधन बुनियादी डेटासेट और बुनियादी आर्किटेक्चर पर ध्यान केंद्रित कर रहे हैं।

हम पर ध्यान केंद्रित करना चाहते हैं रहस्योद्घाटन, व्यावहारिकता, समझ, अंतर्ज्ञान और वास्तविक परियोजनाएं. सीखना चाहते है कैसे आप कुछ कर सकते है? हम आपको हमारे दिमाग की छवियों को संसाधित करने से लेकर स्तन कैंसर के लिए एक शोध-ग्रेड डीप लर्निंग क्लासिफायर लिखने से लेकर गहन शिक्षण नेटवर्क तक ले जाएंगे जो "मतिभ्रम" करते हैं, आपको व्यावहारिक कार्य के माध्यम से सिद्धांत और सिद्धांत सिखाते हैं, आपको इससे लैस करते हैं कंप्यूटर विज़न को हल करने के लिए गहन शिक्षण को लागू करने में विशेषज्ञ बनने के लिए जानकारी और उपकरण।

अंदर क़या है?

  • दृष्टि के पहले सिद्धांत और कंप्यूटर को "देखना" कैसे सिखाया जा सकता है
  • कंप्यूटर विज़न के विभिन्न कार्य और अनुप्रयोग
  • व्यापार के उपकरण जो आपके काम को आसान बना देंगे
  • कंप्यूटर विज़न के लिए डेटासेट खोजना, बनाना और उपयोग करना
  • दृढ़ तंत्रिका नेटवर्क का सिद्धांत और अनुप्रयोग
  • डेटासेट में डोमेन शिफ्ट, सह-घटना और अन्य पूर्वाग्रहों को संभालना
  • अपने लाभ के लिए सीखने और दूसरों के प्रशिक्षण समय और कम्प्यूटेशनल संसाधनों का उपयोग करना स्थानांतरित करें
  • एक अत्याधुनिक स्तन कैंसर क्लासिफायर का निर्माण और प्रशिक्षण
  • मुख्यधारा के विचारों पर संदेह की एक स्वस्थ खुराक कैसे लागू करें और व्यापक रूप से अपनाई गई तकनीकों के निहितार्थ को समझें
  • t-SNE और PCA का उपयोग करके ConvNet के "अवधारणा स्थान" की कल्पना करना
  • बेहतर परिणाम प्राप्त करने के लिए कंपनियां कंप्यूटर विज़न तकनीकों का उपयोग कैसे करती हैं, इसका केस अध्ययन
  • उचित मॉडल मूल्यांकन, गुप्त स्थान विज़ुअलाइज़ेशन और मॉडल के ध्यान की पहचान करना
  • डोमेन अनुसंधान करना, अपने स्वयं के डेटासेट को संसाधित करना और मॉडल परीक्षण स्थापित करना
  • अत्याधुनिक वास्तुकला, विचारों की प्रगति, उन्हें क्या विशिष्ट बनाता है और उन्हें कैसे लागू किया जाए
  • KerasCV - अत्याधुनिक पाइपलाइन और मॉडल बनाने के लिए WIP लाइब्रेरी
  • पेपर कैसे पार्स करें और पढ़ें और उन्हें स्वयं कैसे लागू करें
  • अपने आवेदन के आधार पर मॉडल का चयन
  • एंड-टू-एंड मशीन लर्निंग पाइपलाइन बनाना
  • तेजी से आर-सीएनएन, रेटिनानेट्स, एसएसडी और योलो के साथ ऑब्जेक्ट डिटेक्शन पर लैंडस्केप और अंतर्ज्ञान
  • इंस्टेंस और सिमेंटिक सेगमेंटेशन
  • YOLOv5 . के साथ रीयल-टाइम ऑब्जेक्ट रिकग्निशन
  • YOLOv5 ऑब्जेक्ट डिटेक्टरों का प्रशिक्षण
  • KerasNLP (उद्योग-शक्ति WIP पुस्तकालय) का उपयोग कर ट्रांसफॉर्मर के साथ कार्य करना
  • छवियों के कैप्शन उत्पन्न करने के लिए ट्रांसफॉर्मर को कन्वनेट के साथ एकीकृत करना
  • DeepDream

निष्कर्ष

इस संक्षिप्त मार्गदर्शिका में, हमने इस पर एक नज़र डाली है from_logits केरस हानि वर्गों के लिए तर्क, जो अक्सर नए चिकित्सकों के साथ प्रश्न उठाते हैं।

भ्रम संभवतः शॉर्ट-हैंड सिंटैक्स से उत्पन्न होता है जो एक परत की परिभाषा के भीतर अन्य परतों के शीर्ष पर सक्रियण परतों को जोड़ने की अनुमति देता है। हमने अंत में इस पर एक नज़र डाली है कि तर्क को कब सेट किया जाना चाहिए True or False, और जब आउटपुट को लॉग के रूप में छोड़ा जाना चाहिए या सॉफ्टमैक्स जैसे सक्रियण फ़ंक्शन के माध्यम से पारित किया जाना चाहिए।

समय टिकट:

से अधिक स्टैकब्यूज