ٹینسرفلو امیج کی درجہ بندی: بلڈنگ کلاسیفائر کے بارے میں آپ کو جاننے کی ضرورت ہے



یہ ٹینسرفلو امیج کی درجہ بندی کا مضمون آپ کو تصویری درجہ بندی کی ایک تفصیلی اور جامع جانکاری فراہم کرے گا۔

تصویری درجہ بندی ایک ایسا کام جو بچہ سیکنڈوں میں بھی کرسکتا ہے ، لیکن مشین کے ل for ، حالیہ پیشرفت تک یہ ایک مشکل کام رہا ہے اور گہری لرننگ . خود چلانے والی کاریں اشیاء کا پتہ لگاسکتی ہیں اور اصل وقت میں مطلوبہ کاروائی کرسکتی ہیں اور اس میں سے بیشتر کی وجہ سے ممکن ہے تصویری درجہ بندی۔ اس مضمون میں ، میں مندرجہ ذیل عنوانات کے ذریعہ آپ کی رہنمائی کروں گا:

ٹینسرفلو کیا ہے؟

ٹینسرفلو مختلف کاموں میں ڈیٹا فلو پروگرامنگ کے لئے گوگل کا اوپن سورس مشین لرننگ فریم ورک ہے۔ گراف میں نوڈس ریاضی کی کارروائیوں کی نمائندگی کرتے ہیں ، جبکہ گراف کناروں میں کثیر جہتی ڈیٹا کی اشاعت کی نمائندگی کرتے ہیں جو ان کے درمیان بات چیت کرتے ہیں۔





TensorFlow-Image-Recognition
ٹینسر صرف کثیر جہتی صفیں ہیں ، اعلی جہت والے ڈیٹا میں 2 جہتی جدولوں کی توسیع۔ ٹینسر فلو کی بہت سی خصوصیات ہیں جو ڈیپ لرننگ کے ل for مناسب بناتی ہیں اور یہ مرکزی اوپن سورس لائبریری ایم ایل ماڈلز کی تیاری اور تربیت میں آپ کی مدد کرتی ہے۔

تصویری درجہ بندی کیا ہے؟

تصویری درجہ بندی کا ارادہ یہ ہے کہ تمام پکسلز کو ڈیجیٹل امیج میں کئی میں سے کسی ایک میں درجہ بندی کرنا ہے زمین کا احاطہ کلاسز یا موضوعات . اس درجہ بند ڈیٹا کو پھر تیار کرنے کے لئے استعمال کیا جا سکتا ہے موضوعاتی نقشے ایک تصویر میں موجود لینڈ کا احاطہ



جاوا میں ایک متحرک سرنی کیسے بنائیں

اب درجہ بندی کے دوران تجزیہ کار اور کمپیوٹر کے درمیان تعامل پر منحصر ہے ، درجہ بندی کی دو اقسام ہیں:



  • زیر نگرانی اور
  • غیر نگرانی شدہ

لہذا ، کسی وقت کو ضائع کیے بغیر ٹینسرفلو امیج کی درجہ بندی میں جانے دو۔ میرے پاس 2 مثالیں ہیں: آسان اور مشکل۔ آئیے آسان کے ساتھ آگے بڑھیں۔

ٹینسرفلو امیج کی درجہ بندی: فیشن ایم این آئی ایس ٹی

فیشن ایم این آئی ایس ڈیٹاسیٹ

یہاں ہم فیشن ایم این آئی ایس ٹی ڈیٹاسیٹ استعمال کرنے جارہے ہیں ، جس میں 10 زمروں میں 70،000 گرے اسکیل امیجز ہیں۔ ہم تربیت کے لئے 60000 اور باقی 10000 جانچ کے مقاصد کے لئے استعمال کریں گے۔ آپ ٹنسرفلو سے براہ راست فیشن ایم این آئی ایس ٹی تک رسائی حاصل کرسکتے ہیں ، اعداد و شمار کو صرف درآمد اور لوڈ کرسکتے ہیں۔

  • آئیے پہلے لائبریریاں درآمد کریں
__f____ درآمد_پورٹ_یپورٹ ، ڈویژن ، پرنٹ_فنکشن # ٹینسرفلو اور tf.keras tensor فلو درآمد tensor بہاؤ درآمد کیرا سے # مددگار لائبریریوں کو NP درآمد کے طور پر nump درآمد کریں matplotlib.pyplot بطور plt
  • آئیے ڈیٹا لوڈ کرتے ہیں
fashion_mnist = keras.datasets.f Fashion_mnist (train_images، train_labels)، (test_images، test_labels) = fashion_mnist.load_data ()
  • اگلا ، ہم تصاویر کو کلاسوں میں نقشہ بنانے جارہے ہیں
class_names = ['ٹی شرٹ / ٹاپ' ، 'ٹراؤزر' ، 'پلورور' ، 'لباس' ، 'کوٹ' ، 'سینڈل' ، 'قمیض' ، 'جوتے' ، 'بیگ' ، 'ٹخنوں کا بوٹ']
  • ڈیٹا کی کھوج لگانا
train_images.شکل 
# ہر لیبل 0-9 کے درمیان ہے
ٹرین_لیبلز 
test_images.شکل
  • اب ، وقت آگیا ہے کہ ڈیٹا کو پہلے سے پروسس کیا جائے۔
plt.اعداد و شمار() plt.imshow(train_images[0]) plt.رنگین بار() plt.گرڈ(جھوٹا) plt.دکھائیں() 
#اگر آپ ٹریننگ سیٹ میں پہلی شبیہہ کا معائنہ کرتے ہیں تو آپ دیکھیں گے کہ پکسل کی اقدار 0 سے 255 کی حد میں آتی ہیں۔

  • ہمیں 0-1 سے تصاویر کو نیورل نیٹ ورک میں کھانا کھلانا ہے
train_images = train_images / 255.0 test_images = test_images / 255.0
  • آئیے کچھ تصاویر دکھائیں۔
plt.اعداد و شمار(انجیر کرنا=(10،10)) کے لئے میں میں رینج(25): plt.subplot(5،5،میں+ایک) plt.ایکسٹکس([]) plt.yticks([]) plt.گرڈ(جھوٹا) plt.imshow(train_images[میں cmap=plt.سینٹی میٹر.بائنری) plt.xlabel(کلاس_ نام[ٹرین_لیبلز[میں]]) plt.دکھائیں()
 

  • پرتیں ترتیب دیں
ماڈل = سخت.ترتیب([[ سخت.تہوں.چپٹا(ان پٹ_شپی=(28، 28))، سخت.تہوں.گھنے(128، ایکٹیویشن=tf.نمبر.relu سخت.تہوں.گھنے(10، ایکٹیویشن=tf.نمبر.سوفٹ میکس) ])
  • ماڈل مرتب کریں
ماڈل.مرتب کرنا(اصلاح کار='ایڈم'، نقصان='sparse_categorical_crossentropy'، میٹرکس=['درستگی'])
  • ماڈل ٹریننگ
ماڈل.فٹ(train_images، ٹرین_لیبلز، زمانے=10)

  • درستگی کا اندازہ کرنا
ٹیسٹ_لوس، test_acc = ماڈل.اندازہ(test_images، ٹیسٹ_ لیبلز) پرنٹ کریں('ٹیسٹ کی درستگی:'، test_acc)

  • پیش گوئیاں کرنا
پیش گوئیاں = ماڈل.پیشن گوئی(test_images)
پیش گوئیاں[0]

ایک پیشن گوئی 10 نمبروں کی ایک صف ہے۔ یہ اس ماڈل کے 'اعتماد' کو بیان کرتے ہیں جو تصویر کے لباس کے 10 مختلف مضامین میں سے ہر ایک سے مماثل ہے۔ ہم دیکھ سکتے ہیں کہ کس لیبل میں اعتماد کی اعلی قیمت ہے۔

جیسے.argmax(پیش گوئیاں[0])# ماڈل سب سے زیادہ پراعتماد ہے کہ یہ ٹخنوں کا بوٹ ہے۔ آئیے دیکھتے ہیں کہ یہ صحیح ہے یا نہیں

آؤٹ پٹ: 9

ٹیسٹ_ لیبلز[0]

آؤٹ پٹ: 9

  • اب ، 10 چینلز کے مکمل سیٹ کو دیکھنے کا وقت آگیا ہے
Def پلاٹ_ایمج(میں، پیشن گوئیاں_امری، true_label، img): پیشن گوئیاں_امری، true_label، img = پیشن گوئیاں_امری[میں true_label[میں img[میں] plt.گرڈ(جھوٹا) plt.ایکسٹکس([]) plt.yticks([]) plt.imshow(img، cmap=plt.سینٹی میٹر.بائنری) پیشن گوئی_لیبل = جیسے.argmax(پیشن گوئیاں_امری) اگر پیشن گوئی_لیبل == true_label: رنگ = 'سبز' اور: رنگ = 'نیٹ' plt.xlabel('{ {: 2.0f٪ ({) '.فارمیٹ(کلاس_ نام[پیشن گوئی_لیبل 100*جیسے.زیادہ سے زیادہ(پیشن گوئیاں_امری کلاس_ نام[true_label]) ، رنگ=رنگ) Def پلاٹ_ویلیو_ریری(میں، پیشن گوئیاں_امری، true_label): پیشن گوئیاں_امری، true_label = پیشن گوئیاں_امری[میں true_label[میں] plt.گرڈ(جھوٹا) plt.ایکسٹکس([]) plt.yticks([]) اس پلٹ = plt.بار(رینج(10 پیشن گوئیاں_امری، رنگ='# 777777') plt.یلم([[0، ایک]) پیشن گوئی_لیبل = جیسے.argmax(پیشن گوئیاں_امری) اس پلٹ[پیشن گوئی_لیبل].سیٹ_کلر('نیٹ') اس پلٹ[true_label].سیٹ_کلر('سبز')
  • آئیے پہلے 0 ویں اور دسویں امیج کو دیکھیں
میں = 0 plt.اعداد و شمار(انجیر کرنا=(6،3)) plt.subplot(ایک،2،ایک) پلاٹ_ایمج(میں، پیش گوئیاں، ٹیسٹ_ لیبلز، test_images) plt.subplot(ایک،2،2) پلاٹ_ویلیو_ریری(میں، پیش گوئیاں، ٹیسٹ_ لیبلز) plt.دکھائیں()

میں = 10 plt.اعداد و شمار(انجیر کرنا=(6،3)) plt.subplot(ایک،2،ایک) پلاٹ_ایمج(میں، پیش گوئیاں، ٹیسٹ_ لیبلز، test_images) plt.subplot(ایک،2،2) پلاٹ_ویلیو_ریری(میں، پیش گوئیاں، ٹیسٹ_ لیبلز) plt.دکھائیں()

  • آئیے ، ہم متعدد نقشوں اور ان کی پیش گوئوں کو پلاٹ کرتے ہیں۔ صحیح سبز رنگ کے ہیں ، جبکہ غلط سرخ ہیں۔
num_rows = 5 num_col = 3 num_images = num_rows*num_col plt.اعداد و شمار(انجیر کرنا=(2*2*num_col، 2*num_rows)) کے لئے میں میں رینج(num_images): plt.subplot(num_rows، 2*num_col، 2*میں+ایک) پلاٹ_ایمج(میں، پیش گوئیاں، ٹیسٹ_ لیبلز، test_images) plt.subplot(num_rows، 2*num_col، 2*میں+2) پلاٹ_ویلیو_ریری(میں، پیش گوئیاں، ٹیسٹ_ لیبلز) plt.دکھائیں()

  • آخر میں ، ہم تربیت یافتہ ماڈل کا استعمال کسی ایک شبیہہ کے بارے میں پیش گوئی کریں گے۔
# ٹیسٹ ڈیٹاسیٹ سے ایک تصویر پکڑو img = test_images[0] پرنٹ کریں(img.شکل)
# تصویر کو کسی بیچ میں شامل کریں جہاں وہ واحد ممبر ہو۔ img = (جیسے.وسعت_ڈیمز(img،0)) پرنٹ کریں(img.شکل)
پیشن گوئی_سسل = ماڈل.پیشن گوئی(img) پرنٹ کریں(پیشن گوئی_سسل)

جاوا اسٹرنگ سے لے کر ڈیٹ کنورژن
پلاٹ_ویلیو_ریری(0، پیشن گوئی_سسل، ٹیسٹ_ لیبلز) plt.ایکسٹکس(رینج(10 کلاس_ نام، گردش=چار پانچ) plt.دکھائیں()

  • جیسا کہ آپ بیچ میں ہماری واحد شبیہہ کی پیش گوئی دیکھ سکتے ہیں۔
پیشن گوئی_ نتیجہ = جیسے.argmax(پیشن گوئی_سسل[0])

آؤٹ پٹ: 9

سیفر -10: سی این این

CIFAR-10 ڈیٹاسیٹ ہوائی جہاز ، کتوں ، بلیوں اور دیگر اشیاء پر مشتمل ہے۔ آپ تصاویر کو پہلے سے بڑھاؤ گے ، پھر تمام نمونوں پر مجتمع عصبی نیٹ ورک کی تربیت کریں گے۔ تصاویر کو معمول پر لانے کی ضرورت ہے اور لیبلوں کو ایک ہیٹ انکوڈڈ کرنے کی ضرورت ہے۔ یہ استعمال کیس یقینی طور پر ٹینسرفلو امیج کی درجہ بندی کے بارے میں آپ کے شکوک و شبہات کو دور کرے گا۔

  • ڈیٹا ڈاؤن لوڈ کیا جا رہا ہے
سے urllib.request درآمد کریں urlretrieve سے os.path درآمد کریں isfile، کاجل ہے سے tqdm درآمد کریں tqdm درآمد کریں ٹرفائل cifar10_dataset_folder_path = 'cifar-10-batches-py' کلاس ڈاؤن لوڈپروگرام(tqdm): آخری_ بلاک = 0 Def کانٹا(خود، block_num=ایک، block_size=ایک، کل سائز=کوئی نہیں): خود.کل = کل سائز خود.اپ ڈیٹ((block_num - خود.آخری_ بلاک) * block_size) خود.آخری_ بلاک = block_num '' ' چیک کریں کہ آیا ڈیٹا (زپ) فائل پہلے ہی ڈاؤن لوڈ ہوچکی ہے اگر نہیں تو ، اسے 'https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz' سے ڈاؤن لوڈ کریں اور سیفر -10-python.tar.gz کے بطور محفوظ کریں۔ '' ' اگر نہیں isfile('cifar-10-python.tar.gz'): کے ساتھ ڈاؤن لوڈپروگرام(یونٹ='بی'، اکائی_سکال=سچ ہے، miniters=ایک، ڈیسک='CIFAR-10 ڈیٹاسیٹ') جیسے pbar: urlretrieve( 'https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz'، 'cifar-10-python.tar.gz'، pbar.کانٹا) اگر نہیں کاجل ہے(cifar10_dataset_folder_path): کے ساتھ ٹرفائل.کھلا('cifar-10-python.tar.gz') جیسے ٹار: ٹار.اقتباس() ٹار.بند کریں()
  • ضروری لائبریریاں درآمد کرنا
درآمد کریں اچار درآمد کریں عجیب جیسے جیسے درآمد کریں matplotlib.pyplot جیسے plt
  • ڈیٹا کو سمجھنا

ڈیٹا کی اصل کھیپ 10000 × 3072 ٹینسر ہے جس کا اظہار نمی سرے میں ہوتا ہے ، جہاں نمونے کے اعداد و شمار کی تعداد 10000 ہے۔ تصویر رنگین اور سائز 32 × 32 ہے۔ پلانا یا تو (چوڑائی x اونچائی x num_ چینل) یا (num_ چینل x چوڑائی x اونچائی) کی شکل میں کیا جاسکتا ہے۔ آئیے لیبل کی وضاحت کریں۔

Def لوڈ_لیبل_ نام(): واپسی ['ہوائی جہاز'، 'گاڑی'، 'پرندہ'، 'کیٹ'، 'ہرن'، 'کتا'، 'مینڈک'، 'گھوڑا'، 'جہاز'، 'ٹرک']
  • ڈیٹا کو نئی شکل دینا

ہم ڈیٹا کو دو مرحلوں میں نئی ​​شکل دینے جا رہے ہیں

سب سے پہلے ، قطار ویکٹر (3072) کو 3 ٹکڑوں میں تقسیم کریں۔ ہر ٹکڑا ہر چینل سے مساوی ہے۔ اس کا نتیجہ ٹینسر (3 x 1024) طول و عرض میں ہوتا ہے۔ پھر نتیجے کے ٹینسر کو پچھلے مرحلے سے 32 کے ساتھ تقسیم کریں۔ 32 یہاں ایک تصویر کی چوڑائی کا مطلب ہے۔ اس کا نتیجہ (3x32x32) میں نکلتا ہے۔

دوم ، ہمیں ڈیٹا کو (num_ چینل ، چوڑائی ، اونچائی) سے (چوڑائی ، اونچائی ، num_ چینل) میں منتقل کرنا ہے۔ اس کے ل we ، ہم ٹرانسپوز فنکشن استعمال کرنے جارہے ہیں۔

Def لوڈ_کفر 10_بیچ(cifar10_dataset_folder_path، بیچ_ایڈ): کے ساتھ کھلا(cifar10_dataset_folder_path + '/ ڈیٹا_بیچ_' + پی(بیچ_ایڈ وضع='ر ب') جیسے فائل: # نوٹ کریں کہ انکوڈنگ کی قسم 'لاطینی 1' ہے بیچ = اچار.بوجھ(فائل، انکوڈنگ='لاطینی 1') خصوصیات = بیچ['ڈیٹا'].نئی شکل دینا((لین(بیچ['ڈیٹا']) ، 3، 32، 32)).ٹرانسپوز کریں(0، 2، 3، ایک) لیبل = بیچ['لیبل'] واپسی خصوصیات، لیبل
  • ڈیٹا کی کھوج لگانا
Def ڈسپلے_اسٹیٹس(cifar10_dataset_folder_path، بیچ_ایڈ، نمونہ_ایڈ): خصوصیات، لیبل = لوڈ_کفر 10_بیچ(cifar10_dataset_folder_path، بیچ_ایڈ) اگر نہیں (0 <= نمونہ_ایڈ < لین(خصوصیات)): پرنٹ کریں('{بیچ میں نمونے{.{حد سے باہر ہے۔ '.فارمیٹ(لین(خصوصیات بیچ_ایڈ، نمونہ_ایڈ)) واپسی کوئی نہیں پرنٹ کریں(' بیچ کے اعدادوشمار #{: '.فارمیٹ(بیچ_ایڈ)) پرنٹ کریں('# نمونے:{ '.فارمیٹ(لین(خصوصیات))) لیبل_ نام = لوڈ_لیبل_ نام() لیبل_کاؤنٹس = ڈک(زپ(*جیسے.انوکھا(لیبل، ریٹرن_کاؤنٹس=سچ ہے))) کے لئے چابی، قدر میں لیبل_کاؤنٹس.اشیاء(): پرنٹ کریں(کے لیبل شمار [{] ({):{'.فارمیٹ(چابی، لیبل_ نام[چابی].اوپری() ، قدر)) نمونہ_اختیار = خصوصیات[نمونہ_ایڈ] نمونہ_قبل = لیبل[نمونہ_ایڈ] پرنٹ کریں(' شبیہہ کی مثال{: '.فارمیٹ(نمونہ_ایڈ)) پرنٹ کریں('تصویری - کم از کم قیمت:{زیادہ سے زیادہ قیمت:{'.فارمیٹ(نمونہ_اختیار.منٹ() ، نمونہ_اختیار.زیادہ سے زیادہ())) پرنٹ کریں('امیج - شکل:{'.فارمیٹ(نمونہ_اختیار.شکل)) پرنٹ کریں('لیبل - لیبل آئی ڈی:{نام:{'.فارمیٹ(نمونہ_قبل، لیبل_ نام[نمونہ_قبل])) plt.imshow(نمونہ_اختیار)
٪matplotlib لائن میں ٪تشکیل ان لائن بیکینڈ.فگر_فارمٹ = 'ریٹنا' درآمد کریں عجیب جیسے جیسے # ڈیٹاسیٹ کو دریافت کریں بیچ_ایڈ = 3 نمونہ_ایڈ = 7000 ڈسپلے_اسٹیٹس(cifar10_dataset_folder_path، بیچ_ایڈ، نمونہ_ایڈ)

  • پیشگی کارروائیوں کو نافذ کرنا

ہم کم سے زیادہ معمول پر لانے کے ذریعہ ڈیٹا کو معمول پر لانے جا رہے ہیں۔ یہ آسانی سے تمام x اقدار کو 0 اور 1 کے درمیان بناتا ہے۔
y = (x منٹ) / (زیادہ سے زیادہ منٹ)

Def معمول بنانا(ایکس): '' ' دلیل - x: نمی صف میں ان پٹ تصویر کا ڈیٹا [32 ، 32 ، 3] واپسی -. معمول بنانا x '' ' منٹ_والا = جیسے.منٹ(ایکس) زیادہ سے زیادہ_والا = جیسے.زیادہ سے زیادہ(ایکس) ایکس = (ایکس-منٹ_والا) / (زیادہ سے زیادہ_والا-منٹ_والا) واپسی ایکس
  • ایک ہاٹ انکوڈ
Def one_hot_encode(ایکس): '' ' دلیل - x: لیبل کی ایک فہرست واپسی - ایک گرم انکوڈنگ میٹرکس (لیبل کی تعداد ، کلاس کی تعداد) '' ' انکوڈڈ = جیسے.زیرو((لین(ایکس 10)) کے لئے idx، گھنٹے میں گننا(ایکس): انکوڈڈ[idx] [گھنٹے] = ایک واپسی انکوڈڈ
  • ڈیٹا کو پیشگی اور محفوظ کریں
Def _پیرپروسیس_اور_سیو(معمول بنانا، one_hot_encode، خصوصیات، لیبل، فائل کا نام): خصوصیات = معمول بنانا(خصوصیات) لیبل = one_hot_encode(لیبل) اچار.پھینک دیں((خصوصیات، لیبل کھلا(فائل کا نام، 'ڈبلیو بی')) Def پری پروسیسی_اور_سیو_ڈیٹا(cifar10_dataset_folder_path، معمول بنانا، one_hot_encode): این_بیچز = 5 درست_فائچر = [] درست_قبل = [] کے لئے batch_i میں رینج(ایک، این_بیچز + ایک): خصوصیات، لیبل = لوڈ_کفر 10_بیچ(cifar10_dataset_folder_path، batch_i) # بیچ کے پورے ڈیٹاسیٹ میں توثیقی اعدادوشمار کی حیثیت سے اشاریہ کو تلاش کریں (10٪) انڈیکس_وفایت = INT(لین(خصوصیات) * 0.1) # بیچ کے پورے ڈیٹاسیٹ کے 90٪ کو پہلے سے تیار کریں # - خصوصیات کو معمول بنائیں # - ایک_حیرت_این کوڈ لیبلز # - ایک نئی فائل ، جس میں 'پریپروسیس_بیچ_' + + بیچ_نمبر نامزد ہے ، میں محفوظ کریں # - ہر بیچ کے لئے ہر فائل _پیرپروسیس_اور_سیو(معمول بنانا، one_hot_encode، خصوصیات[:-انڈیکس_وفایت لیبل[:-انڈیکس_وفایت 'پری پروسیسی_بیچ_' + پی(batch_i) + '.پی') # ٹریننگ ڈیٹاسیٹ کے برعکس ، تمام بیچ ڈیٹاسیٹ کے ذریعہ توثیق ڈیٹاسیٹ شامل کیا جائے گا # - بیچ کے مکمل ڈیٹاسیٹ کا 10٪ لیں # - انہیں فہرست میں شامل کریں # - درست_خصوصیات # - درست_قبل درست_فائچر.توسیع(خصوصیات[-انڈیکس_وفایت:]) درست_قبل.توسیع(لیبل[-انڈیکس_وفایت:]) # اسٹیک شدہ تمام توثیق ڈیٹاسیٹ کو پہلے سے تیار کریں _پیرپروسیس_اور_سیو(معمول بنانا، one_hot_encode، جیسے.سرنی(درست_فائچر جیسے.سرنی(درست_قبل 'پری پروسیسی_ٹیویٹیشن.پی') # ٹیسٹ ڈیٹاسیٹ لوڈ کریں کے ساتھ کھلا(cifar10_dataset_folder_path + '/ ٹیسٹ_بیچ'، وضع='ر ب') جیسے فائل: بیچ = اچار.بوجھ(فائل، انکوڈنگ='لاطینی 1') # جانچ کے ڈیٹا کو پہلے سے بڑھاؤ ٹیسٹ_فائچر = بیچ['ڈیٹا'].نئی شکل دینا((لین(بیچ['ڈیٹا']) ، 3، 32، 32)).ٹرانسپوز کریں(0، 2، 3، ایک) ٹیسٹ_ لیبلز = بیچ['لیبل'] # جانچ کے تمام اعداد و شمار کو محفوظ اور محفوظ کریں _پیرپروسیس_اور_سیو(معمول بنانا، one_hot_encode، جیسے.سرنی(ٹیسٹ_فائچر جیسے.سرنی(ٹیسٹ_ لیبلز 'پریپروسیس_ٹریننگ.پی')
پری پروسیسی_اور_سیو_ڈیٹا(cifar10_dataset_folder_path، معمول بنانا، one_hot_encode)
  • چوکی
درآمد کریں اچار درست_فائچر، درست_قبل = اچار.بوجھ(کھلا('پری پروسیسی_ٹیویٹیشن.پی'، وضع='ر ب'))
  • نیٹ ورک کی تعمیر

پورا ماڈل مجموعی طور پر 14 پرتوں پر مشتمل ہے۔

جاوا کے لئے چاند گرہن کی تشکیل کیسے کریں

درآمد کریں ٹینسر فلو جیسے tf Def قائل_نیٹ(ایکس، keep_prob): conv1_filter = tf.متغیر(tf.چھوٹا_نورمل(شکل=[3، 3، 3، 64 مطلب=0، stddev=0.08)) قائل_فلٹر = tf.متغیر(tf.چھوٹا_نورمل(شکل=[3، 3، 64، 128 مطلب=0، stddev=0.08)) قائل_فلٹر = tf.متغیر(tf.چھوٹا_نورمل(شکل=[5، 5، 128، 256 مطلب=0، stddev=0.08)) conv4_filter = tf.متغیر(tf.چھوٹا_نورمل(شکل=[5، 5، 256، 512 مطلب=0، stddev=0.08)) # 1 ، 2 قائل 1 = tf.نمبر.قائل 2d(ایکس، conv1_filter، ترقی=[ایک،ایک،ایک،ایک بھرتی='اسی') قائل 1 = tf.نمبر.relu(قائل 1) conv1_pool = tf.نمبر.زیادہ سے زیادہ_کول(قائل 1، ksize=[ایک،2،2،ایک ترقی=[ایک،2،2،ایک بھرتی='اسی') conv1_bn = tf.تہوں.بیچ_نورملائزیشن(conv1_pool) # 3. 4 قائل 2 = tf.نمبر.قائل 2d(conv1_bn، قائل_فلٹر، ترقی=[ایک،ایک،ایک،ایک بھرتی='اسی') قائل 2 = tf.نمبر.relu(قائل 2) conv2_pool = tf.نمبر.زیادہ سے زیادہ_کول(قائل 2، ksize=[ایک،2،2،ایک ترقی=[ایک،2،2،ایک بھرتی='اسی') conv2_bn = tf.تہوں.بیچ_نورملائزیشن(conv2_pool) # 5 ، 6 قائل 3 = tf.نمبر.قائل 2d(conv2_bn، قائل_فلٹر، ترقی=[ایک،ایک،ایک،ایک بھرتی='اسی') قائل 3 = tf.نمبر.relu(قائل 3) conv3_pool = tf.نمبر.زیادہ سے زیادہ_کول(قائل 3، ksize=[ایک،2،2،ایک ترقی=[ایک،2،2،ایک بھرتی='اسی') conv3_bn = tf.تہوں.بیچ_نورملائزیشن(conv3_pool) # 7 ، 8 قائل 4 = tf.نمبر.قائل 2d(conv3_bn، conv4_filter، ترقی=[ایک،ایک،ایک،ایک بھرتی='اسی') قائل 4 = tf.نمبر.relu(قائل 4) conv4_pool = tf.نمبر.زیادہ سے زیادہ_کول(قائل 4، ksize=[ایک،2،2،ایک ترقی=[ایک،2،2،ایک بھرتی='اسی') conv4_bn = tf.تہوں.بیچ_نورملائزیشن(conv4_pool) # 9 فلیٹ = tf.شراکت.تہوں.چپٹا کرنا(conv4_bn) # 10 مکمل 1 = tf.شراکت.تہوں.مکمل طور پر منسلک(آدانوں=فلیٹ، num_outputs=128، ایکٹیویشن_فن=tf.نمبر.relu) مکمل 1 = tf.نمبر.باہر چھوڑ(مکمل 1، keep_prob) مکمل 1 = tf.تہوں.بیچ_نورملائزیشن(مکمل 1) # گیارہ مکمل 2 = tf.شراکت.تہوں.مکمل طور پر منسلک(آدانوں=مکمل 1، num_outputs=256، ایکٹیویشن_فن=tf.نمبر.relu) مکمل 2 = tf.نمبر.باہر چھوڑ(مکمل 2، keep_prob) مکمل 2 = tf.تہوں.بیچ_نورملائزیشن(مکمل 2) # 12 مکمل 3 = tf.شراکت.تہوں.مکمل طور پر منسلک(آدانوں=مکمل 2، num_outputs=512، ایکٹیویشن_فن=tf.نمبر.relu) مکمل 3 = tf.نمبر.باہر چھوڑ(مکمل 3، keep_prob) مکمل 3 = tf.تہوں.بیچ_نورملائزیشن(مکمل 3) # 13 مکمل 4 = tf.شراکت.تہوں.مکمل طور پر منسلک(آدانوں=مکمل 3، num_outputs=1024، ایکٹیویشن_فن=tf.نمبر.relu) مکمل 4 = tf.نمبر.باہر چھوڑ(مکمل 4، keep_prob) مکمل 4 = tf.تہوں.بیچ_نورملائزیشن(مکمل 4) # 14 باہر = tf.شراکت.تہوں.مکمل طور پر منسلک(آدانوں=مکمل 3، num_outputs=10، ایکٹیویشن_فن=کوئی نہیں) واپسی باہر
  • ہائپرپرمیٹر
زمانے = 10 batch_size = 128 keep_probability = 0.7 لرننگ_ریٹ = 0.001
لاگ ان = قائل_نیٹ(ایکس، keep_prob) ماڈل = tf.شناخت(لاگ ان، نام='لاگ ان') # نام لاگ ان ٹینسر ، تاکہ تربیت کے بعد ڈسک سے بھری جاسکے # نقصان اور اصلاح کار لاگت = tf.کم_میان(tf.نمبر.سافٹ میکس_کراس_ینٹراپی_کے ساتھ_لاگٹس(لاگ ان=لاگ ان، لیبل=Y)) اصلاح کار = tf.ٹرین.ایڈم اوپٹیمائزر(لرننگ_ریٹ=لرننگ_ریٹ).کم سے کم(لاگت) # درستگی درست_پریڈ = tf.برابر(tf.argmax(لاگ ان، ایک tf.argmax(Y، ایک)) درستگی = tf.کم_میان(tf.کاسٹ(درست_پریڈ، tf.فلوٹ 32 نام='درستگی')
  • عصبی نیٹ ورک کی تربیت
# سنگل اصلاح 
Def
ٹرین_نورال_ نیٹ ورک(اجلاس، اصلاح کار، keep_probability، فیچر_بیچ، لیبل_بیچ): اجلاس.رن(اصلاح کار، فیڈ_ڈکٹ={ ایکس: فیچر_بیچ، Y: لیبل_بیچ، keep_prob: keep_probability })
# شوٹنگ کے اعدادوشمار پرنٹ_سٹاسٹس(اجلاس، فیچر_بیچ، لیبل_بیچ، لاگت، درستگی): نقصان = sess.رن(لاگت، فیڈ_ڈکٹ={ ایکس: فیچر_بیچ، Y: لیبل_بیچ، keep_prob: ایک }) درست_ایک = sess.رن(درستگی، فیڈ_ڈکٹ={ ایکس: درست_فائچر، Y: درست_قبل، keep_prob: ایک }) پرنٹ کریں('نقصان:{:> 10.4f}توثیق کی درستگی:{: .6f}'.فارمیٹ(نقصان، درست_ایک))
  • ماڈل کی مکمل تربیت اور بچت
Def batch_features_labels(خصوصیات، لیبل، batch_size): '' ' بیچوں میں خصوصیات اور لیبل تقسیم کریں '' ' کے لئے شروع کریں میں رینج(0، لین(خصوصیات batch_size): ختم = منٹ(شروع کریں + batch_size، لین(خصوصیات)) پیداوار خصوصیات[شروع کریں:ختم لیبل[شروع کریں:ختم] Def لوڈ_پروسیس_ ٹریننگ_بیچ(بیچ_ایڈ، batch_size): '' ' پہلے سے چلنے والی ٹریننگ کا ڈیٹا لوڈ کریں اور انہیں یا اس سے کم بیچوں میں لوٹائیں '' ' فائل کا نام = 'پری پروسیسی_بیچ_' + پی(بیچ_ایڈ) + '.پی' خصوصیات، لیبل = اچار.بوجھ(کھلا(فائل کا نام، وضع='ر ب')) # سائز یا اس سے کم بیچوں میں تربیت کا ڈیٹا واپس کریں واپسی batch_features_labels(خصوصیات، لیبل، batch_size)
# ماڈل اور راہ کی بچت 
save_model_path
= './image_classization' پرنٹ کریں('تربیت...') کے ساتھ tf.اجلاس() جیسے sess: # متغیرات کو شروع کرنا sess.رن(tf.گلوبل_وئیر ایبلز_نیٹیئلائزر()) # ٹریننگ سائیکل کے لئے عہد میں رینج(زمانے): # تمام بیچوں پر لوپ این_بیچز = 5 کے لئے batch_i میں رینج(ایک، این_بیچز + ایک): کے لئے batch_features، بیچ_لیبلز میں لوڈ_پروسیس_ ٹریننگ_بیچ(batch_i، batch_size): ٹرین_نورال_ نیٹ ورک(sess، اصلاح کار، keep_probability، batch_features، بیچ_لیبلز) پرنٹ کریں('عہد{:> 2، CIFAR-10 بیچ{: '.فارمیٹ(عہد + ایک، batch_i ختم='') پرنٹ_سٹاسٹس(sess، batch_features، بیچ_لیبلز، لاگت، درستگی) # ماڈل بچائیں سیور = tf.ٹرین.سیور() save_path = سیور.محفوظ کریں(sess، save_model_path)

اب ، ٹینسر فلو امیج کی درجہ بندی کا اہم حصہ ہو چکا ہے۔ اب ، ماڈل کا امتحان لینے کا وقت آگیا ہے۔

  • ماڈل کی جانچ ہو رہی ہے
درآمد کریں اچار درآمد کریں عجیب جیسے جیسے درآمد کریں matplotlib.pyplot جیسے plt سے sklearn.preprocessing درآمد کریں لیبل بینر Def batch_features_labels(خصوصیات، لیبل، batch_size): '' ' بیچوں میں خصوصیات اور لیبل تقسیم کریں '' ' کے لئے شروع کریں میں رینج(0، لین(خصوصیات batch_size): ختم = منٹ(شروع کریں + batch_size، لین(خصوصیات)) پیداوار خصوصیات[شروع کریں:ختم لیبل[شروع کریں:ختم] Def display_image_predictions(خصوصیات، لیبل، پیش گوئیاں، ٹاپ_ن_پیشن گوئیاں): این_کلاسز = 10 لیبل_ نام = لوڈ_لیبل_ نام() لیبل_بینزر = لیبل بینر() لیبل_بینزر.فٹ(رینج(این_کلاسز)) لیبل_ ایڈز = لیبل_بینزر.الٹا_ٹرانسفارم(جیسے.سرنی(لیبل)) انجیر، محور = plt.subplots(nrows=ٹاپ_ن_پیشن گوئیاں، ncols=2، انجیر کرنا=(بیس، 10)) انجیر.ٹائٹ_لی آؤٹ() انجیر.ذیلی عنوان('سافٹ مینکس پیشن گوئیاں'، حرف کا سائز=بیس، Y=1.1) n_ پیش گوئیاں = 3 مارجن = 0.05 ind = جیسے.ارینج کریں(n_ پیش گوئیاں) چوڑائی = (ایک - 2 * مارجن) / n_ پیش گوئیاں کے لئے image_i، (خصوصیت، لیبل_ ایڈ، پیش گوئیاں، پیش گوئیاں) میں گننا(زپ(خصوصیات، لیبل_ ایڈز، پیش گوئیاں.اشارے، پیش گوئیاں.اقدار)): اگر (image_i < ٹاپ_ن_پیشن گوئیاں): سابقہ ​​نام = [لیبل_ نام[pred_i] کے لئے pred_i میں پیش گوئیاں] درست نام = لیبل_ نام[لیبل_ ایڈ] محور[image_i] [0].imshow((خصوصیت*255).ٹائپ(جیسے.int32، کاپی=جھوٹا)) محور[image_i] [0].سیٹ_ ٹائٹل(درست نام) محور[image_i] [0].set_axis_off() محور[image_i] [ایک].بارہ(ind + مارجن، پیش گوئیاں[:3 چوڑائی) محور[image_i] [ایک].سیٹ_ٹیکس(ind + مارجن) محور[image_i] [ایک].سیٹ_ٹیکلیبلز(سابقہ ​​نام[::-ایک]) محور[image_i] [ایک].سیٹ_سٹکس([[0، 0.5، 1.0])
٪matplotlib لائن میں ٪تشکیل ان لائن بیکینڈ.فگر_فارمٹ = 'ریٹنا' درآمد کریں ٹینسر فلو جیسے tf درآمد کریں اچار درآمد کریں بے ترتیب save_model_path = './image_classization' batch_size = 64 n_ نمونے = 10 ٹاپ_ن_پیشن گوئیاں = 5 Def ٹیسٹ_موڈل(): ٹیسٹ_فائچر، ٹیسٹ_ لیبلز = اچار.بوجھ(کھلا('پریپروسیس_ٹریننگ.پی'، وضع='ر ب')) بھری ہوئی_گراف = tf.گراف() کے ساتھ tf.اجلاس(گراف=بھری ہوئی_گراف) جیسے sess: # لوڈ ماڈل لوڈر = tf.ٹرین.امپورٹ_میٹا_گراف(save_model_path + '.میٹا') لوڈر.بحال(sess، save_model_path) # بھری ہوئی ماڈل سے ٹینسر حاصل کریں بھری ہوئی_ x = بھری ہوئی_گراف.get_tensor_by_name('ان پٹ_ x: 0') بھری ہوئی = بھری ہوئی_گراف.get_tensor_by_name('آؤٹ پٹ_ y: 0') بھری ہوئی_ کیپ_پروب = بھری ہوئی_گراف.get_tensor_by_name('keep_prob: 0') بھری ہوئی_لوگٹس = بھری ہوئی_گراف.get_tensor_by_name('لاگ ان: 0') بھری ہوئی_ایک = بھری ہوئی_گراف.get_tensor_by_name('درستگی: 0') # میموری کی حدود کے لئے بیچوں میں درستگی حاصل کریں ٹیسٹ_بیچ_ایک_کی کل = 0 ٹیسٹ_بیچ_کاؤنٹ = 0 کے لئے ٹرین_فیکٹ_بیچ، ٹرین_لیبل_بیچ میں batch_features_labels(ٹیسٹ_فائچر، ٹیسٹ_ لیبلز، batch_size): ٹیسٹ_بیچ_ایک_کی کل + = sess.رن( بھری ہوئی_ایک، فیڈ_ڈکٹ={بھری ہوئی_ x: ٹرین_فیکٹ_بیچ، بھری ہوئی: ٹرین_لیبل_بیچ، بھری ہوئی_ کیپ_پروب: 1.0}) ٹیسٹ_بیچ_کاؤنٹ + = ایک پرنٹ کریں(جانچ کی درستگی:{ '.فارمیٹ(ٹیسٹ_بیچ_ایک_کی کل/ٹیسٹ_بیچ_کاؤنٹ)) # بے ترتیب نمونے پرنٹ کریں بے ترتیب_امتیازات، بے ترتیب_ٹیسٹ_ابیلز = tuple(زپ(*بے ترتیب.نمونہ(فہرست(زپ(ٹیسٹ_فائچر، ٹیسٹ_ لیبلز))، n_ نمونے))) بے ترتیب_امتیازات = sess.رن( tf.نمبر.ٹاپ_کے(tf.نمبر.سوفٹ میکس(بھری ہوئی_لوگٹس ٹاپ_ن_پیشن گوئیاں فیڈ_ڈکٹ={بھری ہوئی_ x: بے ترتیب_امتیازات، بھری ہوئی: بے ترتیب_ٹیسٹ_ابیلز، بھری ہوئی_ کیپ_پروب: 1.0}) display_image_predictions(بے ترتیب_امتیازات، بے ترتیب_ٹیسٹ_ابیلز، بے ترتیب_امتیازات، ٹاپ_ن_پیشن گوئیاں) ٹیسٹ_موڈل()

آؤٹ پٹ: جانچ کی درستگی: 0.5882762738853503

اب ، اگر آپ اپنے عصبی نیٹ ورک کو مزید عہدوں کے ل train تربیت دیتے ہیں یا ایکٹیویشن فنکشن کو تبدیل کرتے ہیں تو ، آپ کو ایک مختلف نتیجہ مل سکتا ہے جس کی بہتر درستگی ہوسکتی ہے۔

تو ، اس کے ساتھ ، ہم اس ٹینسرفلو امیج کی درجہ بندی کے مضمون کو ختم کرتے ہیں۔ مجھے یقین ہے کہ اب آپ کسی بھی طرح کی تصاویر کی درجہ بندی کرنے کے لئے بھی یہی استعمال کرسکتے ہیں اور آپ تصویری درجہ بندی کے ابتدائی نہیں ہیں۔

ایڈورکا کی ازگر سرٹیفیکیشن ٹریننگ کے ساتھ صنعت کے پیشہ ور افراد کی طرف سے صنعت کی ضروریات اور مطالبات کے مطابق تشکیل پایا جاتا ہے۔ آپ سافٹ ویکس فنکشن ، آٹوئنکوڈر نیورل نیٹ ورکس ، محدود بولٹزمان مشین (آر بی ایم) ، کیراس اور ٹی ایف لیرن جیسے تصورات پر عبور حاصل کریں گے۔ اس کورس کو خاص طور پر صنعت کے ماہرین نے اصل وقت کے مطالعے کے ذریعہ تیار کیا ہے۔