I-TensorFlow sisixhobo esiguquguqukayo sokwenza iimodeli zokufunda ngoomatshini.
Kule post, siza kujonga indlela yokwenza inkqubo yokuqaphela ubuso kunye ne-TensorFlow, isikhokelo sokufunda umatshini ovulekileyo. Siza kudlula kwiinkqubo ezibalulekileyo ekudaleni inkqubo eyimpumelelo yokuqaphela ubuso, ukusuka ekuqokeleleni nasekulungiseleleni idatha ukuqeqesha nokuvavanya imodeli.
Uya kufumana amava okuqala kunye ne-TensorFlow ukwenza ukuqondwa kobuso ngoncedo lweekhowudi eziziqwengana kunye nemizekelo yokwenyani yehlabathi. Wamkelekile ukuba uhambe kunye njengoko siqhubeka.
Intshayelelo kwiTensorFlow
I-TensorFlow lithala leencwadi lasimahla nelivulelekileyo. Yibhokisi yesixhobo yezibalo engokomfuziselo esebenzisa ukuhanjiswa kwedatha kunye nenkqubo eyahlulahluko. Unokusingatha uluhlu lwemisebenzi ngayo, kuquka ubunzulu inethiwekhi yomnatha qeqesho.
I-TensorFlow inamandla kwaye iyaguquguquka. Ngokufanayo, sisixhobo esikhulu sokuphuhlisa kunye ukusebenzisa iimodeli zokufunda koomatshini. Unokwakha iimodeli ezintsonkothileyo ezinemigangatho emininzi kunye nokusebenza kwe-tensor. Kwakhona, iimodeli ezakhiwe kwangaphambili kwithala leencwadi zinokulungiswa kakuhle kwiimfuno ezithile.
Ngaphaya koko, iTensorFlow inoluntu olukhulu nolwandisayo lwabasebenzisi. Ke, kukho inkitha yolwazi kunye noncedo lwabantu abatsha eqongeni.
I-TensorFlow idumile yokufunda umatshini ngokuyinxenye kuba ibonelela ngesiphelo ukuya ekupheleni komsebenzi. Ke, unokwakha ngokulula, uqeqeshe kwaye usebenzise iimodeli. Ibonelela ngezixhobo kunye nezicwangciso zokuphucula kunye nokulinganisa iimodeli ukuze zilungele iimfuno ezithile. Iyahluka ukusuka kwi-data pre-processing ukuya kwimodeli yokuthunyelwa.
Yintoni ukuNakana ngobuso?
Ukuqaphela ubuso yi umbono wekhompyutha umsebenzi obonisa ukuchongwa komntu ngokusekelwe ebusweni babo. Obu buchule bubonisa iimpawu zobuso, njengokumila kwamehlo, impumlo nomlomo.
Kwaye, ibathelekisa nedathabheyisi yobuso obaziwayo ukuchonga umdlalo. Ukuqondwa kobuso kunosetyenziso oluninzi, kubandakanya iinkqubo zokhuseleko, ulungelelwaniso lweefoto, kunye nokuqinisekiswa kwebhayometriki.
Ukuchaneka kwee-algorithms zokuqondwa kobuso kuye kwanda kakhulu kwiminyaka yakutshanje ngenxa yempumelelo yokufunda koomatshini.
Ukungenisa ngaphandle kwamaThala eencwadi ayimfuneko
Ngaphambi kokuba siqale nantoni na, kufuneka singenise amathala eencwadi afunekayo kumzekelo wethu. I-Tensorflow (tf) ithathwa kumazwe angaphandle kwaye isetyenziselwa ukuyila nokuqeqesha imodeli. <(p>
"numpy" yenza izibalo zemathematika kunye nokucubungula idatha.
"matplotlib.pyplot" ithathwa ngaphandle njenge-plt kwaye isetyenziselwa itshathi yedatha kunye nokubonwayo.
Okokugqibela, "ukulanda abantu lfw" kuthathwa kumazwe angaphandle kwi-sklearn. iiseti zedatha kwaye zisetyenziselwa ukulayisha isethi yedatha yokuqonda ubuso. Lo msebenzi yinxalenye ye-scikit-learn toolkit. Enkosi kulo msebenzi akunyanzelekanga ukuba silayishe enye isethi yedatha. Oku sele kwakhiwe kwi-skit-learn.
Kwaye, ikunika ukufikelela kuluhlu olubanzi lwe iiseti zedatha yokufunda koomatshini izicelo. Kulo mzekelo, sisebenzisa indlela yokulanda abantu lfw ukufumana kwakhona isethi yedatha ethi "Labeleled Faces in the Wild" (LFW). Iquka iifoto zobuso babantu kunye neeleyibhile ezihamba nabo.
La mathala eencwadi abalulekile ekuphunyezweni nasekuvavanyeni imodeli yethu yokuqaphela ubuso.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Ukuqhubela phambili kunye nokuLayisha iSeti yeenkcukacha zoBuso
Kweli candelo, sisebenzisa umsebenzi "wokulanda abantu lfw" ukuqhubela phambili idatha yokuqonda ubuso. Okokuqala, sisebenzisa ukulanda abantu abanenketho ethi "min faces per person=60". Oku kubonisa ukuba sifuna kuphela ukuquka abantu abakwidatabase abaneefoto ezingama-60 ubuncinane. Ke ngoko, siqinisekisa ukuba imodeli yethu inedatha eyaneleyo yokufunda. Kwakhona, oku kunciphisa umngcipheko wokugqithisa kakhulu.
Idatha kunye neelebhile ezivela kwizinto zobuso zikhutshwe kwaye zinikezelwe kwiinguqu X kunye no-y. X hol.
Ngoku sikulungele ukuqeqesha imodeli yethu yokuqaphela ubuso sisebenzisa idatha esele ilungisiwe kunye neelebhile.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Ukwahlula uQeqesho kunye neeSeti zoVavanyo
Kule nyathelo, sahlula i-dataset yethu yokuqaphela ubuso kwiihafu ezibini sisebenzisa indlela yokuvavanya uloliwe ukusuka kukhetho lwe-sklearn.model. Injongo yolu lwahlulo kukuvavanya ukusebenza kwemodeli yethu emva koqeqesho
Umsebenzi wokwahlulwa kovavanyo lukaloliwe yamkela njengamagalelo edatha X kunye neelebhile y. Kwaye, ibohlula kuqeqesho kunye neeseti zovavanyo. Sikhetha ubungakanani bovavanyo=0.2 kulo mzekelo. Oku kuthetha ukuba i-20% yedatha iya kusetyenziswa njengeseti yovavanyo ize i-80% isetyenziswe njengeseti yoqeqesho. Ngaphezu koko, sisebenzisa i-random state = 42 ukuqinisekisa ukuba idatha ihlulwe ngokuqhubekayo rhoqo xa ikhowudi isenziwa.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Ukulungiselela iDatha
Injongo yokulungiswa kwedatha kukulungiselela ukungena kwimodeli. Idatha iqhutywe ngaphambili kule khowudi ngokwahlula indawo nganye yedatha ngama-255.
Yintoni eyasikhuthaza ukuba sikuphumeze oku? I-normalization yinkqubo yokucubungula kwangaphambili esetyenziswa ekufundeni koomatshini ukuqinisekisa ukuba zonke iimpawu zikwisikali esifanayo. Kule meko, ukwahlula nge-255 izikali zedatha ukuya kuluhlu lwe-0 ukuya ku-1, oluyinyathelo eliqhelekileyo lokulinganisa idatha yedatha.
Oku kukhawuleza ukudibanisa kwemodeli kwaye kunokunyusa ukusebenza kwayo.
X_train = X_train / 255.0
X_test = X_test / 255.0
Ukudala Imo
Sifuna ukuchonga umntu obuso bakhe bubonakala emfanekisweni. Kule meko, siya kusebenzisa inethiwekhi eqhagamshelwe ngokupheleleyo, eyaziwa ngokuba yinethiwekhi exineneyo. Yinethiwekhi ye-neural eyenziwe yasetyenziswa ukwenza imodeli.
Uthungelwano lwe-neural eyenziweyo luyilwe emva kokuba ingqondo yomntu isebenza kwaye ilungelelaniswe. Zenziwe ngama-nodes-processing nodes okanye i-neurons edibeneyo. I-neuron nganye ekumaleko kuthungelwano olushinyeneyo idityaniswe kwi-neuron nganye ekumaleko ongentla kwayo.
Imodeli inemigangatho emine kule khowudi. Ukuze utyiswe kuluhlu olulandelayo, idatha yegalelo ifakwe kuluhlu lokuqala kwi-array-dimensional array. I-128 kunye ne-64 neurons kwezi zimbini zilandelayo, ngokufanelekileyo, zidibene ngokupheleleyo.
Umsebenzi wokuvula we-ReLU ngumsebenzi owodwa wokuvula osetyenziswa ngala maleko. Ngaloo nto, sinokufumana imodeli yokufunda ulungelelwaniso olungenamgca phakathi kwamagalelo kunye neziphumo. Umaleko wokugqibela usebenzisa umsebenzi wokuvula i-softmax ukwenza uqikelelo. Kwaye, lulwaleko oludityaniswe ngokupheleleyo olune-neurons ezininzi njengoko kukho iiklasi ezinokubakho.
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(62 * 47,)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(len(target_names), activation='softmax')
])
Ukuqulunqwa koMzekelo
Imodeli iqulunqwe kusetyenziswa umsebenzi "wokuqokelela". Kufuneka silungiselele imodeli yoqeqesho. Ke, siya kuchaza i-optimizer, umsebenzi welahleko, kunye neemetrics eziza kusetyenziswa ukuvavanya imodeli.
Ngexesha loqeqesho, i-optimizer ijongene nokutshintsha iiparamitha zemodeli. I-“adam” optimizer yindlela edumileyo yokufunda nzulu.
Sisebenzisa umsebenzi welahleko ukuvavanya ukusebenza kwemodeli kwidatha yoqeqesho. Ngenxa yokuba iilebhile ekujoliswe kuzo ziziinombolo ezipheleleyo ezibonisa udidi lomfanekiso kuneevekhtha ezifakwe kwikhowudi enye eshushu, umsebenzi wokulahleka “woluhlu oluphangaleleyo lwe-crossentropy” ulungile.
Ekugqibeleni, sichaza iimethrikhi zokuvavanya imodeli, kule meko, "ukuchaneka".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Uqeqesho olungumzekelo
Siza kusebenzisa "fit" umsebenzi ukuqeqesha imodeli.
Siza kubonelela ngedatha yoqeqesho (i-X train) kunye neelebhile ezinxulumene (y train), kunye nokubeka inani leepochs (i-iterations) ukuba iqhube njenge-10. Inkqubo yoqeqesho iguqula imodeli yobunzima ukunciphisa ilahleko (umahluko phakathi iilebhile eziqikelelweyo kunye nezenyani) kunye nokuphucula ukuchaneka kwedatha yoqeqesho.
model.fit(X_train, y_train, epochs=10)
UVavanyo loMzekelo
Ngoku, kufuneka sivavanye imodeli eqeqeshiweyo kwidatha yovavanyo. Sisebenzisa ilahleko yovavanyo kunye nokuchaneka kovavanyo kusetyenziswa ukuvavanya ukusebenza kwemodeli. Kuvavanyo lwedatha yovavanyo X kunye neelebhile zovavanyo y uvavanyo, kufuneka sibize "imodeli.evaluate function"
Umsebenzi uvelisa ukuchaneka kovavanyo kunye nelahleko yovavanyo. Ukulahleka kovavanyo oluguquguqukayo kunye nokuchaneka kovavanyo, ngokulandelanayo, kuqulethe la maxabiso. Ekugqibeleni, sisebenzisa umsebenzi "wokushicilela" ukuvelisa ukuchaneka kovavanyo.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Iiklasi zokuqikelela kunye nokuFumana iiklasi eziqikelelweyo
Ukusebenzisa imodeli yoqeqesho kunye nedatha yokuvavanya, i-algorithm yenza izibikezelo. Xa idatha yovavanyo idluliselwe kwindlela "yemodeli.predict", ikhupha uluhlu lweengqikelelo zomfanekiso ngamnye kwiseti yovavanyo.
Igama lodidi ekujoliswe kulo lomfanekiso ngamnye lifunyanwa kwakhona kuluhlu “lokujoliswe kuko” kusetyenziswa u-“np.argmax” umsebenzi wokuchonga isalathiso ngowona mathuba aqikelelweyo. Esi salathisi sisetyenziselwa ukumisela udidi oluqikelelweyo lomfanekiso ngamnye.
Ukusebenzisa ukuqonda koluhlu, zonke iingqikelelo kwi-"predictions" kuluhlu zixhomekeke kule ndlela, okukhokelela kuluhlu "lweeklasi eziqikelelweyo".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Ukuba nomfanekiso-ngqondweni weZiqikelelo
Ngoku sinokubona ukuba imodeli yethu ibonakala njani.
Ukuvavanya indlela imodeli eqhuba ngayo, iifoto zokuqala ezili-10 kunye noqikelelo lwazo ziya kuboniswa. Iya kucwangcisa iifoto kwi-grayscale kwaye ibonise zombini iklasi yokwenene yomfanekiso kunye neklasi eqikelelweyo yimodeli usebenzisa imodyuli ye-matplotlib.pyplot.
Umsebenzi we-"imshow" usetyenziswa yi-loop ukwenza isicwangciso seefoto ezili-10 zokuqala zovavanyo. Amagama ekujoliswe kuwo[y test[i]] kunye neeklasi eziqikelelweyo[i] zisetyenziselwa ukumisela iklasi yomfanekiso kunye nodidi oluqikelelweyo, ngokulandelelanayo. Izihloko zeploti nganye ziboniswa ngolu kuhlelwa.
Okokugqibela, iyelenqe liboniswa kusetyenziswa indlela ye plt.show().
for i in range(10):
plt.imshow(X_test[i].reshape(62, 47), cmap='gray')
plt.title(f"True: {target_names[y_test[i]]}, Predicted:{predicted_classes[i]}")
plt.show()
Songa
I-TensorFlow inikezela ngendawo epheleleyo kunye neguquguqukayo yokudala iimodeli zokufunda koomatshini.
Ngokulungisa kakuhle imodeli ukuhlangabezana neemfuno ezithile okanye ngokongeza uphuhliso olutsha ekufundeni koomatshini, ukuchaneka kwemodeli kunokwandiswa ngakumbi.
I-TensorFlow kunye nokuqondwa kobuso kuya kusetyenziswa kakhulu kumashishini afana neenkqubo zokhuseleko, uqinisekiso lwebhayometriki, kunye nokhathalelo lwempilo kwixesha elizayo. Siza kubona iinguqulelo ezinomdla kungekudala.
Shiya iMpendulo