Keras/TensorFlow Loss Functions میں 'from_logits=True' کیا ہے؟ پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی

Keras/TensorFlow Loss Functions میں 'from_logits=True' کیا ہے؟

کیراس جیسے ڈیپ لرننگ فریم ورک عوام کے داخلے کی رکاوٹ کو کم کرتے ہیں اور غیر تجربہ کار لوگوں کے لیے DL ماڈلز کی ترقی کو جمہوری بناتے ہیں، جو بھاری لفٹنگ کے نقصان کو برداشت کرنے کے لیے معقول ڈیفالٹس اور آسان APIs پر بھروسہ کر سکتے ہیں، اور اچھے نتائج پیدا کر سکتے ہیں۔

نئے گہرے سیکھنے والے پریکٹیشنرز کے درمیان ایک عام الجھن پیدا ہوتی ہے جب درجہ بندی کے لیے Keras نقصان کے افعال کا استعمال کرتے ہیں، جیسے 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=True?

اگر آپ کا نیٹ ورک آؤٹ پٹ کے امکانات کو معمول بناتا ہے، تو آپ کے نقصان کا فنکشن سیٹ ہونا چاہیے۔ 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 کا اطلاق کرتے ہیں، کیونکہ یہ بہت سے معاملات میں ہے جس کے لیے آپ نیٹ ورک استعمال کریں گے - خاص طور پر آسان تعلیمی مواد میں۔ تاہم، کچھ معاملات میں، آپ کیا سافٹ میکس یا کسی دوسرے فنکشن کو لاگو کرنے سے پہلے اس کو مختلف طریقے سے پروسیس کرنے کے لیے آؤٹ پٹ پر فنکشن کا اطلاق کرنا چاہتے ہیں۔

ایک قابل ذکر مثال NLP ماڈلز سے آتی ہے، جس میں واقعی ایک بڑی ذخیرہ الفاظ پر امکان آؤٹ پٹ ٹینسر میں موجود ہو سکتا ہے۔ سافٹ میکس کا اطلاق کرنا ان میں سے سب اور لالچ سے حاصل کرنا argmax عام طور پر بہت اچھے نتائج نہیں دیتا.

تاہم، اگر آپ لاگٹس کا مشاہدہ کرتے ہیں، تو Top-K نکالیں (جہاں K کوئی بھی نمبر ہو سکتا ہے لیکن عام طور پر اس کے درمیان کہیں ہوتا ہے [0...10])، اور اس کے بعد ہی SoftMax کو لاگو کرنا top-k ذخیرہ الفاظ میں ممکنہ ٹوکن تقسیم کو نمایاں طور پر تبدیل کرتے ہیں، اور عام طور پر زیادہ حقیقت پسندانہ نتائج پیدا کرتے ہیں۔

بہترین طرز عمل، صنعت کے لیے منظور شدہ معیارات، اور چیٹ شیٹ کے ساتھ Git سیکھنے کے لیے ہمارے ہینڈ آن، عملی گائیڈ کو دیکھیں۔ گوگلنگ گٹ کمانڈز کو روکیں اور اصل میں سیکھ یہ!

اسے Top-K سیمپلنگ کے نام سے جانا جاتا ہے، اور جب کہ یہ مثالی حکمت عملی نہیں ہے، عام طور پر لالچی نمونے لینے سے نمایاں طور پر آگے نکل جاتی ہے۔

مزید جانا - کمپیوٹر وژن کے لیے عملی گہری تعلیم

آپ کی جستجو کرنے والی فطرت آپ کو مزید آگے بڑھنا چاہتی ہے؟ ہم اپنے کو چیک کرنے کی تجویز کرتے ہیں۔ کورس: "Python کے ساتھ کمپیوٹر وژن کے لیے عملی گہری تعلیم".

ایک اور کمپیوٹر وژن کورس؟

ہم MNIST ہندسوں یا MNIST فیشن کی درجہ بندی نہیں کریں گے۔ انہوں نے بہت پہلے اپنے حصے کی خدمت کی۔ بہت سارے سیکھنے کے وسائل بنیادی ڈیٹاسیٹس اور بنیادی فن تعمیرات پر توجہ مرکوز کر رہے ہیں اس سے پہلے کہ جدید بلیک باکس فن تعمیر کو کارکردگی کا بوجھ اٹھانے دیا جائے۔

ہم توجہ مرکوز کرنا چاہتے ہیں۔ demystification, عملیی, افہام و تفہیم, انترجشتھان اور حقیقی منصوبوں. سیکھنا چاہتے ہیں۔ کس طرح کیا آپ فرق کر سکتے ہیں؟ ہم آپ کو ایک سفر پر لے جائیں گے جس طرح سے ہمارے دماغ چھاتی کے کینسر کے لیے ایک ریسرچ گریڈ ڈیپ لرننگ کلاسیفائر لکھنے سے لے کر گہرے سیکھنے کے نیٹ ورکس تک لے جائیں گے جو کہ "فریب" کرتے ہیں، عملی کام کے ذریعے آپ کو اصول اور تھیوری سکھاتے ہیں، کمپیوٹر وژن کو حل کرنے کے لیے گہری سیکھنے کا اطلاق کرنے میں ماہر بننے کا طریقہ اور اوزار۔

اندر کیاہے؟

  • بصارت کے پہلے اصول اور کمپیوٹر کو "دیکھنا" کیسے سکھایا جا سکتا ہے۔
  • کمپیوٹر وژن کے مختلف کام اور ایپلی کیشنز
  • تجارت کے اوزار جو آپ کے کام کو آسان بنائیں گے۔
  • کمپیوٹر وژن کے لیے ڈیٹاسیٹس کی تلاش، تخلیق اور استعمال
  • Convolutional Neural Networks کا نظریہ اور اطلاق
  • ڈیٹا سیٹس میں ڈومین شفٹ، شریک ہونے اور دیگر تعصبات کو ہینڈل کرنا
  • سیکھنے کو منتقل کریں اور دوسروں کے تربیتی وقت اور کمپیوٹیشنل وسائل کو اپنے فائدے کے لیے استعمال کریں۔
  • ایک جدید ترین چھاتی کے کینسر کی درجہ بندی کرنے والے کی تعمیر اور تربیت
  • مرکزی دھارے کے خیالات پر شکوک و شبہات کی صحت مند خوراک کو کیسے لاگو کیا جائے اور وسیع پیمانے پر اختیار کی جانے والی تکنیکوں کے مضمرات کو کیسے سمجھا جائے
  • T-SNE اور PCA کا استعمال کرتے ہوئے ConvNet کی "تصور کی جگہ" کا تصور کرنا
  • کیس اسٹڈیز کہ کمپنیاں بہتر نتائج حاصل کرنے کے لیے کمپیوٹر ویژن تکنیک کا استعمال کیسے کرتی ہیں۔
  • ماڈل کی مناسب تشخیص، اویکت جگہ کا تصور اور ماڈل کی توجہ کی نشاندہی کرنا
  • ڈومین ریسرچ کرنا، آپ کے اپنے ڈیٹا سیٹس پر کارروائی کرنا اور ماڈل ٹیسٹ قائم کرنا
  • جدید فن تعمیر، خیالات کی ترقی، انہیں کیا منفرد بناتا ہے اور انہیں کیسے نافذ کیا جائے
  • KerasCV – جدید ترین پائپ لائنز اور ماڈل بنانے کے لیے ایک WIP لائبریری
  • پیپرز کو کیسے پارس کریں اور پڑھیں اور خود ان پر عمل کریں۔
  • آپ کی درخواست پر منحصر ماڈلز کا انتخاب
  • آخر سے آخر تک مشین لرننگ پائپ لائن بنانا
  • تیز تر R-CNNs، RetinaNets، SSDs اور YOLO کے ساتھ آبجیکٹ کا پتہ لگانے پر زمین کی تزئین اور بصیرت
  • مثال اور سیمنٹک سیگمنٹیشن
  • YOLOv5 کے ساتھ ریئل ٹائم آبجیکٹ کی شناخت
  • YOLOv5 آبجیکٹ ڈیٹیکٹر کی تربیت
  • KerasNLP (صنعت کی طاقت WIP لائبریری) کا استعمال کرتے ہوئے ٹرانسفارمرز کے ساتھ کام کرنا
  • تصاویر کے کیپشن بنانے کے لیے ConvNets کے ساتھ ٹرانسفارمرز کو مربوط کرنا
  • DeepDream

نتیجہ

اس مختصر گائیڈ میں، ہم نے اس پر ایک نظر ڈالی ہے۔ from_logits Keras نقصان کی کلاسوں کے لیے دلیل، جو اکثر نئے پریکٹیشنرز کے ساتھ سوالات اٹھاتی ہے۔

یہ الجھن ممکنہ طور پر شارٹ ہینڈ نحو سے پیدا ہوتی ہے جو خود ایک پرت کی تعریف کے اندر، دوسری تہوں کے اوپر ایکٹیویشن لیئرز کو شامل کرنے کی اجازت دیتا ہے۔ ہم نے آخر کار اس پر ایک نظر ڈالی ہے کہ دلیل کو کب مقرر کیا جانا چاہئے۔ True or False، اور جب ایک آؤٹ پٹ کو لاگٹس کے طور پر چھوڑ دیا جانا چاہئے یا سافٹ میکس جیسے ایکٹیویشن فنکشن سے گزرنا چاہئے۔

ٹائم اسٹیمپ:

سے زیادہ Stackabuse