ما هو "from_logits = True" في وظائف فقدان تدفق Keras / TensorFlow؟ ذكاء بيانات PlatoBlockchain. البحث العمودي. عاي.

ما هو "from_logits = True" في وظائف فقدان تدفق Keras / TensorFlow؟

تعمل أطر التعلم العميق مثل Keras على تقليل الحاجز أمام دخول الجماهير وإضفاء الطابع الديمقراطي على تطوير نماذج DL للأشخاص غير المتمرسين ، والذين يمكنهم الاعتماد على افتراضات معقولة وواجهات برمجة تطبيقات مبسطة لتحمل وطأة الرفع الثقيل ، وتحقيق نتائج لائقة.

ينشأ ارتباك شائع بين ممارسي التعلم العميق الأحدث عند استخدام وظائف فقدان Keras للتصنيف ، مثل CategoricalCrossentropy و SparseCategoricalCrossentropy:

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

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

ما يفعل from_logits تشير إلى العلم؟

الإجابة بسيطة إلى حد ما ، ولكنها تتطلب نظرة على ناتج الشبكة التي نحاول تصنيفها باستخدام دالة الخسارة.

Logits واحتمالات SoftMax

قصة طويلة قصيرة:

يتم تطبيع الاحتمالات - أي أن لها نطاق بين [0..1]. لا يتم تطبيع السجلات ، ويمكن أن يكون لها نطاق بين [-inf...+inf].

اعتمادًا على طبقة الإخراج لشبكتك:

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

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

خرج ملف Dense طبقة سوف إما إرجاع:

  • الاحتمالات: يتم تمرير الإخراج من خلال دالة SoftMax التي تعمل على تسوية الناتج في مجموعة من الاحتمالات n، كل ذلك يصل إلى 1.
  • سجلات: n التنشيط.

ربما ينشأ هذا المفهوم الخاطئ من بناء الجملة المختصر الذي يسمح لك بإضافة تنشيط إلى طبقة ، على ما يبدو كطبقة واحدة ، على الرغم من أنها مجرد اختصار لـ:

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

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

يجب إعلام وظيفة الخسارة الخاصة بك بما إذا كان يجب أن تتوقع توزيعًا طبيعيًا (يتم تمرير الإخراج من خلال وظيفة SoftMax) أو السجلات. ومن ثم ، فإن 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، أو دع القيمة الافتراضية تبقى.

من ناحية أخرى ، إذا كانت شبكتك لا تطبق SoftMax على الإخراج:

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 لوظيفة الخسارة لمعالجة النواتج بشكل صحيح.

متى تستخدم SoftMax على الإخراج؟

يطبق معظم الممارسين SoftMax على المخرجات لإعطاء توزيع احتمالي عادي ، لأن هذا في كثير من الحالات هو ما ستستخدم شبكة من أجله - خاصة في المواد التعليمية المبسطة. ومع ذلك ، في بعض الحالات ، أنت لا تريد تطبيق الوظيفة على الإخراج ، لمعالجتها بطريقة مختلفة قبل تطبيق إما SoftMax أو وظيفة أخرى.

أحد الأمثلة البارزة يأتي من نماذج البرمجة اللغوية العصبية ، حيث يمكن أن يكون الاحتمال على مفردات كبيرة موجودًا في موتر الإخراج. تطبيق أكثر من SoftMax كلهم وجشع الحصول على argmax عادة لا تؤدي إلى نتائج جيدة جدًا.

ومع ذلك ، إذا لاحظت السجلات ، فاستخرج Top-K (حيث يمكن أن يكون K أي رقم ولكنه عادة ما يكون في مكان ما بين [0...10]) ، وبعد ذلك فقط يتم تطبيق SoftMax على ملف أعلى ك تعمل الرموز الممكنة في المفردات على تغيير التوزيع بشكل كبير ، وعادة ما تنتج نتائج أكثر واقعية.

تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!

يُعرف هذا بأخذ عينات Top-K ، وعلى الرغم من أنها ليست الإستراتيجية المثالية ، إلا أنها عادةً ما تتفوق بشكل كبير على أخذ العينات الجشع.

المضي قدمًا - التعلم العميق العملي لرؤية الكمبيوتر

طبيعتك الفضولية تجعلك ترغب في الذهاب إلى أبعد من ذلك؟ نوصي بالتحقق من الدورة: "التعلم العميق العملي لرؤية الكمبيوتر باستخدام Python".

دورة أخرى في الرؤية الحاسوبية؟

لن نقوم بتصنيف أرقام MNIST أو أزياء MNIST. لقد خدموا دورهم منذ وقت طويل. يركز عدد كبير جدًا من موارد التعلم على مجموعات البيانات الأساسية والبنى الأساسية قبل السماح لبنى الصندوق الأسود المتقدمة بتحمل عبء الأداء.

نريد التركيز على إزالة الغموض, التطبيق العملي, فهم, حدس و مشاريع حقيقية. يرغب فى التعلم كيف يمكنك أن تحدث فرقا؟ سنأخذك في جولة من طريقة معالجة أدمغتنا للصور إلى كتابة مصنف تعليمي عميق من الدرجة البحثية لسرطان الثدي إلى شبكات التعلم العميق التي "تهلوس" ، وتعليمك المبادئ والنظرية من خلال العمل العملي ، وتزويدك الدراية والأدوات لتصبح خبيرًا في تطبيق التعلم العميق لحل رؤية الكمبيوتر.

ماذا يوجد في الداخل؟

  • المبادئ الأولى للرؤية وكيف يمكن تعليم أجهزة الكمبيوتر "الرؤية"
  • مهام وتطبيقات مختلفة للرؤية الحاسوبية
  • أدوات التجارة التي ستجعل عملك أسهل
  • البحث عن مجموعات البيانات وإنشائها واستخدامها للرؤية الحاسوبية
  • نظرية وتطبيق الشبكات العصبية التلافيفية
  • التعامل مع تحول المجال والتواجد المشترك والتحيزات الأخرى في مجموعات البيانات
  • نقل التعلم والاستفادة من وقت تدريب الآخرين والموارد الحسابية لصالحك
  • بناء وتدريب مصنف حديث لسرطان الثدي
  • كيفية تطبيق جرعة صحية من الشك على الأفكار السائدة وفهم الآثار المترتبة على التقنيات المعتمدة على نطاق واسع
  • تصور "الفضاء المفهوم" لـ ConvNet باستخدام t-SNE و PCA
  • دراسات حالة عن كيفية استخدام الشركات لتقنيات الرؤية الحاسوبية لتحقيق نتائج أفضل
  • تقييم النموذج المناسب ، تصور الفضاء الكامن وتحديد انتباه النموذج
  • إجراء بحث في المجال ومعالجة مجموعات البيانات الخاصة بك وإنشاء اختبارات نموذجية
  • أحدث البنيات ، تطور الأفكار ، ما الذي يجعلها فريدة من نوعها وكيفية تنفيذها
  • KerasCV - مكتبة العمل قيد التقدم لإنشاء خطوط الأنابيب والنماذج الحديثة
  • كيف تحلل وتقرأ الأوراق وتنفذها بنفسك
  • اختيار النماذج حسب التطبيق الخاص بك
  • إنشاء خط أنابيب تعلم آلي شامل
  • المناظر الطبيعية والحدس في اكتشاف الكائنات باستخدام شبكات R-CNN و RetinaNets و SSDs و YOLO أسرع
  • المثيل والتجزئة الدلالية
  • التعرف على الكائنات في الوقت الفعلي باستخدام YOLOv5
  • تدريب كاشفات الأجسام YOLOv5
  • العمل مع المحولات باستخدام KerasNLP (مكتبة WIP ذات قوة الصناعة)
  • دمج المحولات مع ConvNets لإنشاء تسميات توضيحية للصور
  • ديب دريم

وفي الختام

في هذا الدليل المختصر ، ألقينا نظرة على from_logits حجة لفصول فقدان Keras ، والتي تثير في كثير من الأحيان أسئلة مع الممارسين الجدد.

قد ينشأ الالتباس من التركيب المختصر الذي يسمح بإضافة طبقات تنشيط فوق الطبقات الأخرى ، ضمن تعريف الطبقة نفسها. لقد ألقينا نظرة أخيرًا على الوقت الذي يجب أن يتم فيه ضبط الحجة True or False، وعندما يجب ترك المخرجات كسجلات أو تمريرها عبر وظيفة تنشيط مثل SoftMax.

الطابع الزمني:

اكثر من ستاكابوز