டென்சர்ஃப்ளோ பட வகைப்பாடு: கட்டிட வகைப்படுத்திகளைப் பற்றி நீங்கள் தெரிந்து கொள்ள வேண்டியது எல்லாம்



இந்த டென்சர்ஃப்ளோ பட வகைப்பாடு கட்டுரை உங்களுக்கு பட வகைப்பாட்டின் விரிவான மற்றும் விரிவான அறிவை வழங்கும்.

பட வகைப்பாடு ஒரு குழந்தை கூட நொடிகளில் செய்யக்கூடிய ஒரு பணி, ஆனால் ஒரு இயந்திரத்தைப் பொறுத்தவரை, சமீபத்திய முன்னேற்றங்கள் வரை இது ஒரு கடினமான பணியாகும் மற்றும் ஆழமான கற்றல் . சுய-ஓட்டுநர் கார்கள் பொருள்களைக் கண்டறிந்து தேவையான நேரத்தில் நிகழ்நேரத்தில் நடவடிக்கை எடுக்க முடியும், ஏனெனில் இவற்றில் பெரும்பாலானவை சாத்தியமாகும் பட வகைப்பாடு. இந்த கட்டுரையில், பின்வரும் தலைப்புகள் மூலம் நான் உங்களுக்கு வழிகாட்டுவேன்:

டென்சர்ஃப்ளோ என்றால் என்ன?

டென்சர்ஃப்ளோ என்பது கூகிளின் திறந்த மூல இயந்திர கற்றல் கட்டமைப்பாகும். வரைபடத்தில் உள்ள முனைகள் கணித செயல்பாடுகளைக் குறிக்கின்றன, அதே நேரத்தில் வரைபட விளிம்புகள் அவற்றுக்கிடையே தொடர்பு கொள்ளப்பட்ட பல பரிமாண தரவு வரிசைகளைக் குறிக்கின்றன.





TensorFlow-Image-Recognition
டென்சர்கள் என்பது பல பரிமாண வரிசைகள், அதிக பரிமாணத்துடன் தரவுகளுக்கு 2 பரிமாண அட்டவணைகளின் நீட்டிப்பு. டென்சர்ஃப்ளோவின் பல அம்சங்கள் உள்ளன, இது ஆழமான கற்றலுக்கு பொருத்தமானதாக அமைகிறது, மேலும் இது எம்.எல் மாதிரிகளை உருவாக்க மற்றும் பயிற்சியளிக்க உதவுகிறது.

பட வகைப்பாடு என்றால் என்ன?

பட வகைப்பாட்டின் நோக்கம் டிஜிட்டல் படத்தில் உள்ள அனைத்து பிக்சல்களையும் பலவற்றில் ஒன்றாக வகைப்படுத்துவதாகும் நிலப்பரப்பு வகுப்புகள் அல்லது கருப்பொருள்கள் . இந்த வகைப்படுத்தப்பட்ட தரவு பின்னர் தயாரிக்க பயன்படுத்தப்படலாம் கருப்பொருள் வரைபடங்கள் ஒரு படத்தில் இருக்கும் நிலப்பரப்பு.



இப்போது வகைப்பாட்டின் போது ஆய்வாளருக்கும் கணினிக்கும் இடையிலான தொடர்புகளைப் பொறுத்து, வகைப்படுத்தலில் இரண்டு வகைகள் உள்ளன:



  • மேற்பார்வை &
  • மேற்பார்வை செய்யப்படவில்லை

எனவே, எந்த நேரத்தையும் வீணாக்காமல், டென்சர்ஃப்ளோ பட வகைப்பாட்டிற்கு செல்லலாம். எனக்கு 2 எடுத்துக்காட்டுகள் உள்ளன: எளிதான மற்றும் கடினமான. எளிதான ஒன்றைத் தொடரலாம்.

டென்சர்ஃப்ளோ பட வகைப்பாடு: ஃபேஷன் MNIST

ஃபேஷன் MNIST தரவுத்தொகுப்பு

இங்கே நாம் 10 வகைகளில் 70,000 கிரேஸ்கேல் படங்களைக் கொண்ட ஃபேஷன் எம்.என்.ஐ.எஸ்.டி தரவுத்தொகுப்பைப் பயன்படுத்தப் போகிறோம். பயிற்சிக்காக 60000 ஐயும், மீதமுள்ள 10000 ஐ சோதனை நோக்கங்களுக்காகவும் பயன்படுத்துவோம். ஃபேஷன் MNIST ஐ டென்சர்ஃப்ளோவிலிருந்து நேரடியாக அணுகலாம், தரவை இறக்குமதி செய்து ஏற்றவும்.

  • முதலில் நூலகங்களை இறக்குமதி செய்வோம்
__ எதிர்கால__ இறக்குமதி முழுமையான_ இறக்குமதி, பிரிவு, அச்சு_ செயல்பாடு # டென்சர்ஃப்ளோ மற்றும் tf.keras ஆகியவை டென்சர்ஃப்ளோவை tf ஆக டென்சர்ஃப்ளோ இறக்குமதி கெராஸிலிருந்து இறக்குமதி செய்கின்றன # உதவி நூலகங்கள் நம்பியை இறக்குமதி செய்கின்றன
  • தரவை ஏற்றுவோம்
fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data ()
  • அடுத்து, படங்களை வகுப்புகளாக வரைபடமாக்கப் போகிறோம்
class_names = ['டி-ஷர்ட் / டாப்', 'ட்ர ous சர்', 'புல்லோவர்', 'டிரஸ்', 'கோட்', 'செருப்பு', 'சட்டை', 'ஸ்னீக்கர்', 'பேக்', 'கணுக்கால் துவக்க']
  • தரவை ஆராய்தல்
ரயில்_ படங்கள்.வடிவம் 
# ஒவ்வொரு லேபிளும் 0-9 க்கு இடையில் உள்ளது
ரயில்_லேபல்கள் 
சோதனை_படங்கள்.வடிவம்
  • இப்போது, ​​தரவை முன்கூட்டியே செயலாக்க வேண்டிய நேரம் இது.
plt.எண்ணிக்கை() plt.imshow(ரயில்_ படங்கள்[0]) plt.வண்ணப்பட்டி() plt.கட்டம்(பொய்) plt.காட்டு() 
#பயிற்சி தொகுப்பில் முதல் படத்தை நீங்கள் ஆராய்ந்தால், பிக்சல் மதிப்புகள் 0 முதல் 255 வரம்பில் வருவதைக் காண்பீர்கள்.

  • படங்களை நியூரல் நெட்வொர்க்கில் ஊட்ட 0-1 முதல் அளவிட வேண்டும்
ரயில்_ படங்கள் = ரயில்_ படங்கள் / 255.0 சோதனை_படங்கள் = சோதனை_படங்கள் / 255.0
  • சில படங்களை காண்பிப்போம்.
plt.எண்ணிக்கை(figsize=(10,10)) க்கு நான் இல் சரகம்(25): plt.subplot(5,5,நான்+ஒன்று) plt.xticks([]) plt.yticks([]) plt.கட்டம்(பொய்) plt.imshow(ரயில்_ படங்கள்[நான்], cmap=plt.செ.மீ..பைனரி) plt.xlabel(class_names[ரயில்_லேபல்கள்[நான்]]) plt.காட்டு()
 

  • அடுக்குகளை அமைக்கவும்
மாதிரி = கடினமானது.தொடர்([ கடினமானது.அடுக்குகள்.தட்டையானது(உள்ளீடு_ வடிவம்=(28, 28)), கடினமானது.அடுக்குகள்.அடர்த்தியான(128, செயல்படுத்தல்=tf.எண்.relu), கடினமானது.அடுக்குகள்.அடர்த்தியான(10, செயல்படுத்தல்=tf.எண்.softmax) ])
  • மாதிரியை தொகுக்கவும்
மாதிரி.தொகுத்தல்(உகப்பாக்கி='ஆடம்', இழப்பு='sparse_categorical_crossentropy', அளவீடுகள்=['துல்லியம்'])
  • மாதிரி பயிற்சி
மாதிரி.பொருத்தம்(ரயில்_ படங்கள், ரயில்_லேபல்கள், சகாப்தங்கள்=10)

  • துல்லியத்தை மதிப்பீடு செய்தல்
test_loss, test_acc = மாதிரி.மதிப்பீடு(சோதனை_படங்கள், test_labels) அச்சு('சோதனை துல்லியம்:', test_acc)

ஜாவாவில் பல பரம்பரை என்ன
  • கணிப்புகளை உருவாக்குதல்
கணிப்புகள் = மாதிரி.கணிக்கவும்(சோதனை_படங்கள்)
கணிப்புகள்[0]

ஒரு கணிப்பு 10 எண்களின் வரிசை. ஆடைகளின் 10 வெவ்வேறு கட்டுரைகளில் ஒவ்வொன்றிற்கும் ஒத்திருக்கும் மாதிரியின் 'நம்பிக்கையை' இவை விவரிக்கின்றன. எந்த லேபிளில் அதிக நம்பிக்கை மதிப்பு உள்ளது என்பதை நாம் காணலாம்.

எ.கா..argmax(கணிப்புகள்[0])# மாடல் இது ஒரு கணுக்கால் துவக்கமாகும் என்று மிகவும் நம்பிக்கையுடன் உள்ளது. அது சரியானதா என்று பார்ப்போம்

வெளியீடு: 9

test_labels[0]

வெளியீடு: 9

  • இப்போது, ​​10 சேனல்களின் முழு தொகுப்பையும் பார்க்க வேண்டிய நேரம் இது
டெஃப் plot_image(நான், கணிப்புகள்_அரே, true_label, img): கணிப்புகள்_அரே, true_label, img = கணிப்புகள்_அரே[நான்], true_label[நான்], img[நான்] plt.கட்டம்(பொய்) plt.xticks([]) plt.yticks([]) plt.imshow(img, cmap=plt.செ.மீ..பைனரி) கணிக்கப்பட்ட_ லேபிள் = எ.கா..argmax(கணிப்புகள்_அரே) என்றால் கணிக்கப்பட்ட_ லேபிள் == true_label: நிறம் = 'பச்சை' வேறு: நிறம் = 'நிகர' plt.xlabel('{} {: 2.0f}% ({}) '.வடிவம்(class_names[கணிக்கப்பட்ட_ லேபிள்], 100*எ.கா..அதிகபட்சம்(கணிப்புகள்_அரே), class_names[true_label]), நிறம்=நிறம்) டெஃப் plot_value_array(நான், கணிப்புகள்_அரே, true_label): கணிப்புகள்_அரே, true_label = கணிப்புகள்_அரே[நான்], true_label[நான்] plt.கட்டம்(பொய்) plt.xticks([]) plt.yticks([]) thisplot = plt.மதுக்கூடம்(சரகம்(10), கணிப்புகள்_அரே, நிறம்='# 777777') plt.ylim([0, ஒன்று]) கணிக்கப்பட்ட_ லேபிள் = எ.கா..argmax(கணிப்புகள்_அரே) thisplot[கணிக்கப்பட்ட_ லேபிள்].set_color('நிகர') thisplot[true_label].set_color('பச்சை')
  • முதலில் 0 மற்றும் 10 வது படத்தைப் பார்ப்போம்
நான் = 0 plt.எண்ணிக்கை(figsize=(6,3)) plt.subplot(ஒன்று,2,ஒன்று) plot_image(நான், கணிப்புகள், test_labels, சோதனை_படங்கள்) plt.subplot(ஒன்று,2,2) plot_value_array(நான், கணிப்புகள், test_labels) plt.காட்டு()

நான் = 10 plt.எண்ணிக்கை(figsize=(6,3)) plt.subplot(ஒன்று,2,ஒன்று) plot_image(நான், கணிப்புகள், test_labels, சோதனை_படங்கள்) plt.subplot(ஒன்று,2,2) plot_value_array(நான், கணிப்புகள், test_labels) plt.காட்டு()

  • இப்போது, ​​பல படங்களையும் அவற்றின் கணிப்புகளையும் சதி செய்வோம். சரியானவை பச்சை, அதே நேரத்தில் தவறானவை சிவப்பு.
num_rows = 5 num_cols = 3 num_images = num_rows*num_cols plt.எண்ணிக்கை(figsize=(2*2*num_cols, 2*num_rows)) க்கு நான் இல் சரகம்(num_images): plt.subplot(num_rows, 2*num_cols, 2*நான்+ஒன்று) plot_image(நான், கணிப்புகள், test_labels, சோதனை_படங்கள்) plt.subplot(num_rows, 2*num_cols, 2*நான்+2) plot_value_array(நான், கணிப்புகள், test_labels) plt.காட்டு()

  • இறுதியாக, ஒரு படத்தைப் பற்றி கணிக்க பயிற்சி பெற்ற மாதிரியைப் பயன்படுத்துவோம்.
# சோதனை தரவுத்தொகுப்பிலிருந்து ஒரு படத்தைப் பிடிக்கவும் img = சோதனை_படங்கள்[0] அச்சு(img.வடிவம்)
# படத்தை ஒரே உறுப்பினராக இருக்கும் ஒரு தொகுப்பில் சேர்க்கவும். img = (எ.கா..expand_dims(img,0)) அச்சு(img.வடிவம்)
கணிப்புகள்_சிங்கல் = மாதிரி.கணிக்கவும்(img) அச்சு(கணிப்புகள்_சிங்கல்)

plot_value_array(0, கணிப்புகள்_சிங்கல், test_labels) plt.xticks(சரகம்(10), class_names, சுழற்சி=நான்கு. ஐந்து) plt.காட்டு()

  • எங்கள் ஒரே படத்திற்கான கணிப்பை நீங்கள் தொகுப்பில் காணலாம்.
முன்கணிப்பு_ முடிவு = எ.கா..argmax(கணிப்புகள்_சிங்கல்[0])

வெளியீடு: 9

சிஃபர் -10: சி.என்.என்

CIFAR-10 தரவுத்தொகுப்பில் விமானங்கள், நாய்கள், பூனைகள் மற்றும் பிற பொருட்கள் உள்ளன. நீங்கள் படங்களை முன்கூட்டியே செயலாக்குவீர்கள், பின்னர் அனைத்து மாதிரிகளிலும் ஒரு நரம்பியல் நெட்வொர்க்கைப் பயிற்றுவிப்பீர்கள். படங்களை இயல்பாக்க வேண்டும் மற்றும் லேபிள்கள் ஒரு சூடான குறியாக்கம் செய்யப்பட வேண்டும். இந்த பயன்பாட்டு வழக்கு நிச்சயமாக டென்சர்ஃப்ளோ பட வகைப்பாடு குறித்த உங்கள் சந்தேகங்களை நீக்கும்.

  • தரவைப் பதிவிறக்குகிறது
இருந்து urllib.request இறக்குமதி urlretrieve இருந்து os.path இறக்குமதி isfile, சூட் இருந்து tqdm இறக்குமதி tqdm இறக்குமதி tarfile cifar10_dataset_folder_path = 'சிஃபர் -10-பேட்ச்ஸ்-பை' வர்க்கம் DownloadProgress(tqdm): last_block = 0 டெஃப் கொக்கி(சுய, block_num=ஒன்று, block_size=ஒன்று, ஒட்டு மொத்த அளவு=எதுவுமில்லை): சுய.மொத்தம் = ஒட்டு மொத்த அளவு சுய.புதுப்பிப்பு((block_num - சுய.last_block) * block_size) சுய.last_block = block_num '' ' தரவு (ஜிப்) கோப்பு ஏற்கனவே பதிவிறக்கம் செய்யப்பட்டுள்ளதா என சரிபார்க்கவும் இல்லையெனில், அதை 'https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz' இலிருந்து பதிவிறக்கம் செய்து cifar-10-python.tar.gz ஆக சேமிக்கவும் '' ' என்றால் இல்லை isfile('cifar-10-python.tar.gz'): உடன் DownloadProgress(அலகு='பி', அலகு_ அளவு=உண்மை, மினிட்டர்கள்=ஒன்று, desc='சிஃபர் -10 தரவுத்தொகுப்பு') என pbar: urlretrieve( 'https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz', 'cifar-10-python.tar.gz', pbar.கொக்கி) என்றால் இல்லை சூட்(cifar10_dataset_folder_path): உடன் tarfile.திறந்த('cifar-10-python.tar.gz') என தார்: தார்.அனைவற்றையும் பிரி() தார்.நெருக்கமான()
  • தேவையான நூலகங்களை இறக்குமதி செய்கிறது
இறக்குமதி ஊறுகாய் இறக்குமதி உணர்ச்சியற்ற என எ.கா. இறக்குமதி matplotlib.pyplot என plt
  • தரவைப் புரிந்துகொள்வது

தரவுகளின் அசல் தொகுதி 10000 × 3072 டென்சார் என்பது ஒரு எண்ணற்ற வரிசையில் வெளிப்படுத்தப்படுகிறது, இங்கு 10000 என்பது மாதிரி தரவுகளின் எண்ணிக்கை. படம் வண்ணம் மற்றும் அளவு 32 × 32. (அகலம் x உயரம் x எண்_சனல்) அல்லது (எண்_சனல் x அகலம் x உயரம்) வடிவத்தில் உணவளிக்கலாம். லேபிள்களை வரையறுப்போம்.

டெஃப் load_label_names(): திரும்ப ['விமானம்', 'ஆட்டோமொபைல்', 'பறவை', 'பூனை', 'மான்', 'நாய்', 'தவளை', 'குதிரை', 'கப்பல்', 'டிரக்']
  • தரவை மறுவடிவமைத்தல்

நாங்கள் இரண்டு நிலைகளில் தரவை மறுவடிவமைக்கப் போகிறோம்

முதலில், வரிசை திசையன் (3072) ஐ 3 துண்டுகளாக பிரிக்கவும். ஒவ்வொரு துண்டு ஒவ்வொரு சேனலுக்கும் ஒத்திருக்கிறது. இது ஒரு டென்சரின் (3 x 1024) பரிமாணத்தில் விளைகிறது. இதன் விளைவாக வரும் டென்சரை முந்தைய படியிலிருந்து 32 உடன் பிரிக்கவும். 32 இங்கே ஒரு படத்தின் அகலம் என்று பொருள். இது (3x32x32) விளைகிறது.

இரண்டாவதாக, தரவை (எண்_சனல், அகலம், உயரம்) இருந்து (அகலம், உயரம், எண்_சனல்) மாற்ற வேண்டும். அதற்காக, நாம் டிரான்ஸ்போஸ் செயல்பாட்டைப் பயன்படுத்தப் போகிறோம்.

டெஃப் load_cfar10_batch(cifar10_dataset_folder_path, batch_id): உடன் திறந்த(cifar10_dataset_folder_path + '/ data_batch_' + (batch_id), பயன்முறை='rb') என கோப்பு: # குறியீட்டு வகை 'லத்தீன் 1' என்பதை நினைவில் கொள்க தொகுதி = ஊறுகாய்.சுமை(கோப்பு, குறியாக்கம்='லத்தீன் 1') அம்சங்கள் = தொகுதி['தகவல்கள்'].மறுவடிவமைப்பு((லென்(தொகுதி['தகவல்கள்']), 3, 32, 32)).இடமாற்றம்(0, 2, 3, ஒன்று) லேபிள்கள் = தொகுதி['லேபிள்கள்'] திரும்ப அம்சங்கள், லேபிள்
  • தரவை ஆராய்தல்
டெஃப் காட்சி_நிலைகள்(cifar10_dataset_folder_path, batch_id, மாதிரி_ஐடி): அம்சங்கள், லேபிள்கள் = load_cfar10_batch(cifar10_dataset_folder_path, batch_id) என்றால் இல்லை (0 <= மாதிரி_ஐடி < லென்(அம்சங்கள்)): அச்சு('{}தொகுப்பில் மாதிரிகள்{}.{}வரம்பிற்கு வெளியே உள்ளது. '.வடிவம்(லென்(அம்சங்கள்), batch_id, மாதிரி_ஐடி)) திரும்ப எதுவுமில்லை அச்சு(' தொகுதி புள்ளிவிவரங்கள் #{}: '.வடிவம்(batch_id)) அச்சு('# மாதிரிகள்:{} '.வடிவம்(லென்(அம்சங்கள்)))) லேபிள்_பெயர்கள் = load_label_names() லேபிள்_ கணக்குகள் = கட்டளை(zip(*எ.கா..தனித்துவமான(லேபிள்கள், திரும்ப_ கணக்குகள்=உண்மை)))) க்கு விசை, மதிப்பு இல் லேபிள்_ கணக்குகள்.பொருட்களை(): அச்சு('லேபிள் எண்ணிக்கைகள் [{}] ({}):{}'.வடிவம்(விசை, லேபிள்_பெயர்கள்[விசை].மேல்(), மதிப்பு)) மாதிரி_படம் = அம்சங்கள்[மாதிரி_ஐடி] மாதிரி_ லேபிள் = லேபிள்கள்[மாதிரி_ஐடி] அச்சு(' படத்தின் எடுத்துக்காட்டு{}: '.வடிவம்(மாதிரி_ஐடி)) அச்சு('படம் - குறைந்தபட்ச மதிப்பு:{}அதிகபட்ச மதிப்பு:{}'.வடிவம்(மாதிரி_படம்.நிமிடம்(), மாதிரி_படம்.அதிகபட்சம்())) அச்சு('படம் - வடிவம்:{}'.வடிவம்(மாதிரி_படம்.வடிவம்)) அச்சு('லேபிள் - லேபிள் ஐடி:{}பெயர்:{}'.வடிவம்(மாதிரி_ லேபிள், லேபிள்_பெயர்கள்[மாதிரி_ லேபிள்])) plt.imshow(மாதிரி_படம்)
%matplotlib கோட்டில் %கட்டமைப்பு இன்லைன் பேக்கண்ட்.எண்ணிக்கை_ வடிவம் = 'விழித்திரை' இறக்குமதி உணர்ச்சியற்ற என எ.கா. # தரவுத்தொகுப்பை ஆராயுங்கள் batch_id = 3 மாதிரி_ஐடி = 7000 காட்சி_நிலைகள்(cifar10_dataset_folder_path, batch_id, மாதிரி_ஐடி)

  • முன் செயலாக்க செயல்பாடுகளை செயல்படுத்துதல்

Min-Max Normalization வழியாக தரவை இயல்பாக்கப் போகிறோம். இது அனைத்து x மதிப்புகளையும் 0 மற்றும் 1 க்கு இடையில் இருக்கும்.
y = (x-min) / (அதிகபட்சம்-நிமிடம்)

டெஃப் இயல்பாக்கு(எக்ஸ்): '' ' வாதம் - x: எண்ணற்ற வரிசையில் உள்ளீட்டு பட தரவு [32, 32, 3] திரும்ப - இயல்பாக்கப்பட்ட x '' ' min_val = எ.கா..நிமிடம்(எக்ஸ்) max_val = எ.கா..அதிகபட்சம்(எக்ஸ்) எக்ஸ் = (எக்ஸ்-min_val) / (max_val-min_val) திரும்ப எக்ஸ்
  • ஒன்-ஹாட் என்கோட்
டெஃப் one_hot_encode(எக்ஸ்): '' ' வாதம் - x: லேபிள்களின் பட்டியல் திரும்ப - ஒரு சூடான குறியாக்க மேட்ரிக்ஸ் (லேபிள்களின் எண்ணிக்கை, வகுப்பின் எண்ணிக்கை) '' ' குறியாக்கம் செய்யப்பட்டது = எ.கா..பூஜ்ஜியங்கள்((லென்(எக்ஸ்), 10)) க்கு idx, மணி இல் கணக்கிட(எக்ஸ்): குறியாக்கம் செய்யப்பட்டது[idx] [மணி] = ஒன்று திரும்ப குறியாக்கம் செய்யப்பட்டது
  • தரவைச் செயலாக்கி சேமிக்கவும்
டெஃப் _preprocess_and_save(இயல்பாக்கு, one_hot_encode, அம்சங்கள், லேபிள்கள், கோப்பு பெயர்): அம்சங்கள் = இயல்பாக்கு(அம்சங்கள்) லேபிள்கள் = one_hot_encode(லேபிள்கள்) ஊறுகாய்.டம்ப்((அம்சங்கள், லேபிள்கள்), திறந்த(கோப்பு பெயர், 'wb')) டெஃப் preprocess_and_save_data(cifar10_dataset_folder_path, இயல்பாக்கு, one_hot_encode): n_ தொகுதிகள் = 5 செல்லுபடியாகும்_ அம்சங்கள் = [] செல்லுபடியாகும்_லேபல்கள் = [] க்கு batch_i இல் சரகம்(ஒன்று, n_ தொகுதிகள் + ஒன்று): அம்சங்கள், லேபிள்கள் = load_cfar10_batch(cifar10_dataset_folder_path, batch_i) # தொகுப்பின் முழு தரவுத்தொகுப்பில் (10%) சரிபார்ப்பு தரவாக குறியீடாக புள்ளியைக் கண்டறியவும் index_of_validation = எண்ணாக(லென்(அம்சங்கள்) * 0.1) # தொகுப்பின் முழு தரவுத்தொகுப்பில் 90% முன் செயலாக்கம் # - அம்சங்களை இயல்பாக்கு # - ஒன்_ஹோட்_என்சிபி லேபிள்கள் # - 'preprocess_batch_' + batch_number என்ற புதிய கோப்பில் சேமிக்கவும் # - ஒவ்வொரு தொகுதிக்கும் ஒவ்வொரு கோப்பு _preprocess_and_save(இயல்பாக்கு, one_hot_encode, அம்சங்கள்[:-index_of_validation], லேபிள்கள்[:-index_of_validation], 'preprocess_batch_' + (batch_i) + '.பி') # பயிற்சி தரவுத்தொகுப்பைப் போலன்றி, அனைத்து தொகுதி தரவுத்தொகுப்பிலும் சரிபார்ப்பு தரவுத்தொகுப்பு சேர்க்கப்படும் # - தொகுப்பின் மொத்த தரவுத்தொகுப்பில் 10% ஐ எடுத்துக் கொள்ளுங்கள் # - அவற்றை பட்டியலில் சேர்க்கவும் # - செல்லுபடியாகும்_ அம்சங்கள் # - செல்லுபடியாகும்_லேபல்கள் செல்லுபடியாகும்_ அம்சங்கள்.நீட்ட(அம்சங்கள்[-index_of_validation:)]) செல்லுபடியாகும்_லேபல்கள்.நீட்ட(லேபிள்கள்[-index_of_validation:)]) # அனைத்து அடுக்கப்பட்ட சரிபார்ப்பு தரவுத்தொகுப்பையும் முன்கூட்டியே செயலாக்குங்கள் _preprocess_and_save(இயல்பாக்கு, one_hot_encode, எ.கா..வரிசை(செல்லுபடியாகும்_ அம்சங்கள்), எ.கா..வரிசை(செல்லுபடியாகும்_லேபல்கள்), 'preprocess_validation.p') # சோதனை தரவுத்தொகுப்பை ஏற்றவும் உடன் திறந்த(cifar10_dataset_folder_path + '/ test_batch', பயன்முறை='rb') என கோப்பு: தொகுதி = ஊறுகாய்.சுமை(கோப்பு, குறியாக்கம்='லத்தீன் 1') # சோதனை தரவை முன்கூட்டியே செயலாக்குங்கள் சோதனை_ அம்சங்கள் = தொகுதி['தகவல்கள்'].மறுவடிவமைப்பு((லென்(தொகுதி['தகவல்கள்']), 3, 32, 32)).இடமாற்றம்(0, 2, 3, ஒன்று) test_labels = தொகுதி['லேபிள்கள்'] # எல்லா செயலாக்க தரவையும் முன்கூட்டியே செயலாக்கி சேமிக்கவும் _preprocess_and_save(இயல்பாக்கு, one_hot_encode, எ.கா..வரிசை(சோதனை_ அம்சங்கள்), எ.கா..வரிசை(test_labels), 'preprocess_training.p')
preprocess_and_save_data(cifar10_dataset_folder_path, இயல்பாக்கு, one_hot_encode)
  • சோதனைச் சாவடி
இறக்குமதி ஊறுகாய் செல்லுபடியாகும்_ அம்சங்கள், செல்லுபடியாகும்_லேபல்கள் = ஊறுகாய்.சுமை(திறந்த('preprocess_validation.p', பயன்முறை='rb'))
  • நெட்வொர்க்கை உருவாக்குதல்

முழு மாதிரியும் மொத்தம் 14 அடுக்குகளைக் கொண்டுள்ளது.

இறக்குமதி tensorflow என tf டெஃப் conv_net(எக்ஸ், keep_prob): conv1_filter = tf.மாறி(tf.துண்டிக்கப்பட்டது_ இயல்பானது(வடிவம்=[3, 3, 3, 64], சராசரி=0, stddev=0.08)) conv2_filter = tf.மாறி(tf.துண்டிக்கப்பட்டது_ இயல்பானது(வடிவம்=[3, 3, 64, 128], சராசரி=0, stddev=0.08)) conv3_filter = tf.மாறி(tf.துண்டிக்கப்பட்டது_ இயல்பானது(வடிவம்=[5, 5, 128, 256], சராசரி=0, stddev=0.08)) conv4_filter = tf.மாறி(tf.துண்டிக்கப்பட்டது_ இயல்பானது(வடிவம்=[5, 5, 256, 512], சராசரி=0, stddev=0.08)) # 1, 2 conv1 = tf.எண்.conv2d(எக்ஸ், conv1_filter, முன்னேற்றங்கள்=[ஒன்று,ஒன்று,ஒன்று,ஒன்று], திணிப்பு='அதே') conv1 = tf.எண்.relu(conv1) conv1_pool = tf.எண்.max_pool(conv1, ksize=[ஒன்று,2,2,ஒன்று], முன்னேற்றங்கள்=[ஒன்று,2,2,ஒன்று], திணிப்பு='அதே') conv1_bn = tf.அடுக்குகள்.தொகுதி_ இயல்பாக்கம்(conv1_pool) # 3. 4 conv2 = tf.எண்.conv2d(conv1_bn, conv2_filter, முன்னேற்றங்கள்=[ஒன்று,ஒன்று,ஒன்று,ஒன்று], திணிப்பு='அதே') conv2 = tf.எண்.relu(conv2) conv2_pool = tf.எண்.max_pool(conv2, ksize=[ஒன்று,2,2,ஒன்று], முன்னேற்றங்கள்=[ஒன்று,2,2,ஒன்று], திணிப்பு='அதே') conv2_bn = tf.அடுக்குகள்.தொகுதி_ இயல்பாக்கம்(conv2_pool) # 5, 6 conv3 = tf.எண்.conv2d(conv2_bn, conv3_filter, முன்னேற்றங்கள்=[ஒன்று,ஒன்று,ஒன்று,ஒன்று], திணிப்பு='அதே') conv3 = tf.எண்.relu(conv3) conv3_pool = tf.எண்.max_pool(conv3, ksize=[ஒன்று,2,2,ஒன்று], முன்னேற்றங்கள்=[ஒன்று,2,2,ஒன்று], திணிப்பு='அதே') conv3_bn = tf.அடுக்குகள்.தொகுதி_ இயல்பாக்கம்(conv3_pool) # 7, 8 conv4 = tf.எண்.conv2d(conv3_bn, conv4_filter, முன்னேற்றங்கள்=[ஒன்று,ஒன்று,ஒன்று,ஒன்று], திணிப்பு='அதே') conv4 = tf.எண்.relu(conv4) conv4_pool = tf.எண்.max_pool(conv4, 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 தொகுதி_ அளவு = 128 keep_probability = 0.7 கற்றல்_ரேட் = 0.001
பதிவுகள் = conv_net(எக்ஸ், keep_prob) மாதிரி = tf.அடையாளம்(பதிவுகள், பெயர்='பதிவுகள்') # பெயர் பதிவுகள் டென்சர், இதனால் பயிற்சியின் பின்னர் வட்டில் இருந்து ஏற்ற முடியும் # இழப்பு மற்றும் உகப்பாக்கி செலவு = tf.குறைத்தல்_மீன்(tf.எண்.softmax_cross_entropy_with_logits(பதிவுகள்=பதிவுகள், லேபிள்கள்=ஒய்)) உகப்பாக்கி = tf.தொடர்வண்டி.ஆடம் ஆப்டிமைசர்(கற்றல்_ரேட்=கற்றல்_ரேட்).குறைத்தல்(செலவு) # துல்லியம் correct_pred = tf.சமம்(tf.argmax(பதிவுகள், ஒன்று), tf.argmax(ஒய், ஒன்று)) துல்லியம் = tf.குறைத்தல்_மீன்(tf.நடிகர்கள்(correct_pred, tf.மிதவை 32), பெயர்='துல்லியம்')
  • நரம்பியல் வலையமைப்பைப் பயிற்றுவிக்கவும்
# ஒற்றை உகப்பாக்கம் 
டெஃப்
ரயில்_நியூரல்_நெட்வொர்க்(அமர்வு, உகப்பாக்கி, keep_probability, அம்சம்_பாட்ச், லேபிள்_பாட்ச்): அமர்வு.ஓடு(உகப்பாக்கி, feed_dict={ எக்ஸ்: அம்சம்_பாட்ச், ஒய்: லேபிள்_பாட்ச், keep_prob: keep_probability })
# புள்ளிவிவரங்களைக் காட்டுகிறது அச்சு_நிலைகள்(அமர்வு, அம்சம்_பாட்ச், லேபிள்_பாட்ச், செலவு, துல்லியம்): இழப்பு = sess.ஓடு(செலவு, feed_dict={ எக்ஸ்: அம்சம்_பாட்ச், ஒய்: லேபிள்_பாட்ச், keep_prob: ஒன்று. }) valid_acc = sess.ஓடு(துல்லியம், feed_dict={ எக்ஸ்: செல்லுபடியாகும்_ அம்சங்கள், ஒய்: செல்லுபடியாகும்_லேபல்கள், keep_prob: ஒன்று. }) அச்சு('இழப்பு:{:> 10.4f}சரிபார்ப்பு துல்லியம்:{: .6f}'.வடிவம்(இழப்பு, valid_acc))
  • முழு பயிற்சி மற்றும் மாதிரியை சேமித்தல்
டெஃப் batch_features_labels(அம்சங்கள், லேபிள்கள், தொகுதி_ அளவு): '' ' அம்சங்கள் மற்றும் லேபிள்களை தொகுப்பாக பிரிக்கவும் '' ' க்கு தொடங்கு இல் சரகம்(0, லென்(அம்சங்கள்), தொகுதி_ அளவு): முடிவு = நிமிடம்(தொடங்கு + தொகுதி_ அளவு, லென்(அம்சங்கள்)) மகசூல் அம்சங்கள்[தொடங்கு:முடிவு], லேபிள்கள்[தொடங்கு:முடிவு] டெஃப் load_preprocess_training_batch(batch_id, தொகுதி_ அளவு): '' ' முன் பதப்படுத்தப்பட்ட பயிற்சி தரவை ஏற்றவும், அவற்றை அல்லது அதற்கும் குறைவான தொகுப்புகளில் திருப்பித் தரவும் '' ' கோப்பு பெயர் = 'preprocess_batch_' + (batch_id) + '.பி' அம்சங்கள், லேபிள்கள் = ஊறுகாய்.சுமை(திறந்த(கோப்பு பெயர், பயன்முறை='rb')) # பயிற்சி தரவை அளவு அல்லது அதற்கும் குறைவான தொகுதிகளில் திரும்பவும் திரும்ப batch_features_labels(அம்சங்கள், லேபிள்கள், தொகுதி_ அளவு)
# மாதிரி மற்றும் பாதையைச் சேமித்தல் 
save_model_path
= './image_classification' அச்சு('பயிற்சி ...') உடன் tf.அமர்வு() என sess: # மாறிகள் துவக்குகிறது sess.ஓடு(tf.global_variables_initializer()) # பயிற்சி சுழற்சி க்கு சகாப்தம் இல் சரகம்(சகாப்தங்கள்): # அனைத்து தொகுதிகளுக்கும் மேல் சுழற்சி n_ தொகுதிகள் = 5 க்கு batch_i இல் சரகம்(ஒன்று, n_ தொகுதிகள் + ஒன்று): க்கு தொகுதி_ அம்சங்கள், batch_labels இல் load_preprocess_training_batch(batch_i, தொகுதி_ அளவு): ரயில்_நியூரல்_நெட்வொர்க்(sess, உகப்பாக்கி, keep_probability, தொகுதி_ அம்சங்கள், batch_labels) அச்சு('சகாப்தம்{:> 2}, சிஃபர் -10 தொகுதி{}: '.வடிவம்(சகாப்தம் + ஒன்று, batch_i), முடிவு='') அச்சு_நிலைகள்(sess, தொகுதி_ அம்சங்கள், batch_labels, செலவு, துல்லியம்) # மாதிரியைச் சேமி சேவர் = tf.தொடர்வண்டி.சேவர்() save_path = சேவர்.சேமி(sess, save_model_path)

இப்போது, ​​டென்சர்ஃப்ளோ பட வகைப்பாட்டின் முக்கிய பகுதி செய்யப்படுகிறது. இப்போது, ​​மாதிரியை சோதிக்க நேரம் வந்துவிட்டது.

  • மாதிரியை சோதித்தல்
இறக்குமதி ஊறுகாய் இறக்குமதி உணர்ச்சியற்ற என எ.கா. இறக்குமதி matplotlib.pyplot என plt இருந்து sklearn.preprocessing இறக்குமதி லேபிள் பைனரைசர் டெஃப் batch_features_labels(அம்சங்கள், லேபிள்கள், தொகுதி_ அளவு): '' ' அம்சங்கள் மற்றும் லேபிள்களை தொகுப்பாக பிரிக்கவும் '' ' க்கு தொடங்கு இல் சரகம்(0, லென்(அம்சங்கள்), தொகுதி_ அளவு): முடிவு = நிமிடம்(தொடங்கு + தொகுதி_ அளவு, லென்(அம்சங்கள்)) மகசூல் அம்சங்கள்[தொடங்கு:முடிவு], லேபிள்கள்[தொடங்கு:முடிவு] டெஃப் display_image_predictions(அம்சங்கள், லேபிள்கள், கணிப்புகள், top_n_ கணிப்புகள்): n_ வகுப்புகள் = 10 லேபிள்_பெயர்கள் = load_label_names() label_binarizer = லேபிள் பைனரைசர்() label_binarizer.பொருத்தம்(சரகம்(n_ வகுப்புகள்)) label_ids = label_binarizer.தலைகீழ்_மாற்றம்(எ.கா..வரிசை(லேபிள்கள்)) அத்தி, அச்சுகள் = plt.துணைப்பிரிவுகள்(nrows=top_n_ கணிப்புகள், ncols=2, figsize=(இருபது, 10)) அத்தி.இறுக்கமான_அமைவு() அத்தி.suptitle('சாஃப்ட்மேக்ஸ் கணிப்புகள்', எழுத்துரு=இருபது, ஒய்=1.1) n_ கணிப்புகள் = 3 விளிம்பு = 0.05 ind = எ.கா..ஆரஞ்சு(n_ கணிப்புகள்) அகலம் = (ஒன்று. - 2. * விளிம்பு) / n_ கணிப்புகள் க்கு image_i, (அம்சம், label_id, pred_indicies, pred_values) இல் கணக்கிட(zip(அம்சங்கள், label_ids, கணிப்புகள்.குறியீடுகள், கணிப்புகள்.மதிப்புகள்)): என்றால் (image_i < top_n_ கணிப்புகள்): pred_names = [லேபிள்_பெயர்கள்[pred_i] க்கு pred_i இல் pred_indicies] சரியான_ பெயர் = லேபிள்_பெயர்கள்[label_id] அச்சுகள்[image_i] [0].imshow((அம்சம்*255).astype(எ.கா..int32, நகல்=பொய்)) அச்சுகள்[image_i] [0].set_title(சரியான_ பெயர்) அச்சுகள்[image_i] [0].set_axis_off() அச்சுகள்[image_i] [ஒன்று].பார்(ind + விளிம்பு, pred_values[:3], அகலம்) அச்சுகள்[image_i] [ஒன்று].set_yticks(ind + விளிம்பு) அச்சுகள்[image_i] [ஒன்று].set_yticklabels(pred_names[::-ஒன்று]) அச்சுகள்[image_i] [ஒன்று].set_xticks([0, 0.5, 1.0])
%matplotlib கோட்டில் %கட்டமைப்பு இன்லைன் பேக்கண்ட்.எண்ணிக்கை_ வடிவம் = 'விழித்திரை' இறக்குமதி tensorflow என tf இறக்குமதி ஊறுகாய் இறக்குமதி சீரற்ற save_model_path = './image_classification' தொகுதி_ அளவு = 64 n_ மாதிரிகள் = 10 top_n_ கணிப்புகள் = 5 டெஃப் சோதனை_மாடல்(): சோதனை_ அம்சங்கள், test_labels = ஊறுகாய்.சுமை(திறந்த('preprocess_training.p', பயன்முறை='rb')) ஏற்றப்பட்ட_கிராப் = tf.வரைபடம்() உடன் tf.அமர்வு(வரைபடம்=ஏற்றப்பட்ட_கிராப்) என sess: # சுமை மாதிரி ஏற்றி = tf.தொடர்வண்டி.import_meta_graph(save_model_path + '.மெட்டா') ஏற்றி.மீட்டமை(sess, save_model_path) # ஏற்றப்பட்ட மாதிரியிலிருந்து டென்சர்களைப் பெறுங்கள் ஏற்றப்பட்ட_எக்ஸ் = ஏற்றப்பட்ட_கிராப்.get_tensor_by_name('input_x: 0') ஏற்றப்பட்டது_ = ஏற்றப்பட்ட_கிராப்.get_tensor_by_name('output_y: 0') ஏற்றப்பட்டது_கீப்_பிரப் = ஏற்றப்பட்ட_கிராப்.get_tensor_by_name('keep_prob: 0') ஏற்றப்பட்ட_லோகிட்டுகள் = ஏற்றப்பட்ட_கிராப்.get_tensor_by_name('பதிவுகள்: 0') ஏற்றப்பட்ட_அக் = ஏற்றப்பட்ட_கிராப்.get_tensor_by_name('துல்லியம்: 0') # நினைவக வரம்புகளுக்கு தொகுதிகளில் துல்லியத்தைப் பெறுங்கள் test_batch_acc_total = 0 test_batch_count = 0 க்கு ரயில்_ அம்சம்_பாட்ச், ரயில்_லேபிள்_பாட்ச் இல் batch_features_labels(சோதனை_ அம்சங்கள், test_labels, தொகுதி_ அளவு): test_batch_acc_total + = sess.ஓடு( ஏற்றப்பட்ட_அக், feed_dict={ஏற்றப்பட்ட_எக்ஸ்: ரயில்_ அம்சம்_பாட்ச், ஏற்றப்பட்டது_: ரயில்_லேபிள்_பாட்ச், ஏற்றப்பட்டது_கீப்_பிரப்: 1.0}) test_batch_count + = ஒன்று அச்சு('சோதனை துல்லியம்:{} '.வடிவம்(test_batch_acc_total/test_batch_count)) # சீரற்ற மாதிரிகள் அச்சிடுக சீரற்ற_ சோதனை_ அம்சங்கள், சீரற்ற_ சோதனை_ லேபல்கள் = tuple(zip(*சீரற்ற.மாதிரி(பட்டியல்(zip(சோதனை_ அம்சங்கள், test_labels)), n_ மாதிரிகள்)))) சீரற்ற_ சோதனை_ கணிப்புகள் = sess.ஓடு( tf.எண்.top_k(tf.எண்.softmax(ஏற்றப்பட்ட_லோகிட்டுகள்), top_n_ கணிப்புகள்), feed_dict={ஏற்றப்பட்ட_எக்ஸ்: சீரற்ற_ சோதனை_ அம்சங்கள், ஏற்றப்பட்டது_: சீரற்ற_ சோதனை_ லேபல்கள், ஏற்றப்பட்டது_கீப்_பிரப்: 1.0}) display_image_predictions(சீரற்ற_ சோதனை_ அம்சங்கள், சீரற்ற_ சோதனை_ லேபல்கள், சீரற்ற_ சோதனை_ கணிப்புகள், top_n_ கணிப்புகள்) சோதனை_மாடல்()

வெளியீடு: சோதனை துல்லியம்: 0.5882762738853503

இப்போது, ​​உங்கள் நரம்பியல் நெட்வொர்க்கை அதிக சகாப்தங்களுக்கு நீங்கள் பயிற்சியளித்தால் அல்லது செயல்படுத்தும் செயல்பாட்டை மாற்றினால், சிறந்த துல்லியத்தன்மையைக் கொண்ட வேறுபட்ட முடிவை நீங்கள் பெறலாம்.

எனவே, இதன் மூலம், இந்த டென்சர்ஃப்ளோ பட வகைப்பாடு கட்டுரையின் முடிவுக்கு வருகிறோம். எந்தவொரு படங்களையும் வகைப்படுத்த நீங்கள் இப்போது இதைப் பயன்படுத்தலாம் என்பதில் நான் உறுதியாக உள்ளேன், மேலும் நீங்கள் பட வகைப்பாட்டிற்கான தொடக்கக்காரர் அல்ல.

என்பது ஜாவாவில் ஒரு உறவைக் கொண்டுள்ளது

எடுரேகா பைதான் சான்றிதழ் பயிற்சி தொழில் தேவைகள் மற்றும் கோரிக்கைகளுக்கு ஏற்ப தொழில் வல்லுநர்களால் நிர்வகிக்கப்படுகிறது. சாஃப்ட்மேக்ஸ் செயல்பாடு, ஆட்டோஎன்கோடர் நியூரல் நெட்வொர்க்குகள், கட்டுப்படுத்தப்பட்ட போல்ட்ஜ்மேன் இயந்திரம் (ஆர்.பி.எம்), கெராஸ் & டி.எஃப்.லெர்ன் போன்ற கருத்துக்களை நீங்கள் மாஸ்டர் செய்வீர்கள். நிகழ்நேர வழக்கு ஆய்வுகள் மூலம் தொழில் வல்லுநர்களால் இந்த பாடநெறி சிறப்பாக வடிவமைக்கப்பட்டுள்ளது.