I-TensorFlow iyithuluzi eliguquguqukayo lokudala amamodeli okufunda ngomshini.
Kulokhu okuthunyelwe, sizobheka indlela yokudala isistimu yokuqaphela ubuso nge-TensorFlow, uhlaka lokufunda lomshini ovulekile. Sizobheka izinqubo ezibalulekile ekudaleni isistimu ephumelelayo yokuqaphela ubuso, kusukela ekuqoqeni nasekulungiseleleni idatha ukuze siqeqeshe futhi sihlole imodeli.
Uzothola ulwazi lokuqala nge-TensorFlow ukuze udale ukubonakala kobuso ngosizo lwamazwibela ekhodi nezibonelo zomhlaba wangempela. Wamukelekile ukuthi ulandele njengoba siqhubeka.
Isingeniso kuTensorFlow
I-TensorFlow iyilabhulali yamahhala nemithombo evulekile. Kuyibhokisi lamathuluzi lezibalo elingokomfanekiso elisebenzisa ukugeleza kwedatha nohlelo oluhlukanisekayo. Ungakwazi ukuphatha uhla lwemisebenzi ngayo, okuhlanganisa nokujula inethiwekhi ye-neural ukuqeqeshwa.
I-TensorFlow inamandla futhi iyavumelana nezimo. Ngokufanayo, iyithuluzi elihle lokuthuthukisa kanye sebenzisa amamodeli wokufunda womshini. Ungakha amamodeli ayinkimbinkimbi ngezendlalelo ezimbalwa kanye nokusebenza kwe-tensor. Futhi, amamodeli akhiwe kusengaphambili kumtapo wolwazi angalungiselelwa izidingo ezithile.
Ngaphezu kwalokho, i-TensorFlow inomphakathi omkhulu wabasebenzisi futhi owandayo. Ngakho-ke, kunenqwaba yolwazi nosizo lwabantu abasanda kuhlanganyela.
I-TensorFlow idumile ukufunda imishini ngokwengxenye ngoba inikeza ukuhamba komsebenzi ekupheleni kuya ekupheleni. Ngakho-ke, ungakha kalula, uqeqeshe futhi usebenzise amamodeli. Ihlinzeka ngamathuluzi namasu okuthuthukisa kanye nokukala amamodeli ukuze avumelane nezidingo ezithile. Iyahluka kusukela ekucutshungulweni kwangaphambili kwedatha ukuya ekusetshenzisweni kwemodeli.
Kuyini Ukuqashelwa Kobuso?
Ukuqashelwa kobuso yi-a umbono wekhompyutha umsebenzi okhomba ukuhlonza komuntu ngokusekelwe ebusweni bakhe. Le nqubo iqaphela izici zobuso, njengokuma nokuhleleka kwamehlo, ikhala, nomlomo.
Futhi, iwaqhathanisa nesizindalwazi sobuso obaziwayo ukukhomba okufanayo. Ukubonwa kobuso kunokusetshenziswa okuningana, okuhlanganisa amasistimu okuvikela, ukuhlelwa kwezithombe, nokuqinisekiswa kwebhayomethrikhi.
Ukunemba kwama-algorithms okubona ubuso kukhule kakhulu eminyakeni yamuva nje ngenxa yempumelelo yokufunda komshini.
Ukungenisa Amalabhulali Adingekayo
Ngaphambi kokuqala noma yini, sidinga ukungenisa imitapo yolwazi edingekayo kumodeli wethu. I-Tensorflow (tf) ingenisiwe futhi isetshenziselwa ukudala nokuqeqesha imodeli. <(p>
"numpy" yenza izibalo zezibalo kanye nokucubungula idatha.
I-“matplotlib.pyplot” ingeniswa njenge-plt futhi isetshenziselwe ukuhlela idatha nokubonwayo.
Ekugcineni, "landa abantu lfw" kuthathwa kwamanye amazwe kusuka sklearn. amasethi edatha futhi asetshenziselwa ukulayisha idathasethi yokubonwa kobuso. Lo msebenzi uyingxenye yekhithi yamathuluzi yokufunda ye-scikit. Ngenxa yalo msebenzi akuzange kudingeke ukuthi silayishe enye idathasethi. Lokhu sekuvele kwakhiwe ku-skit-learn.
Futhi, kukunikeza ukufinyelela ebangeni elibanzi le idathasethi yokufunda komshini izicelo. Kulesi simo, sisebenzisa indlela yokulanda i-lfw ukuze sibuyise idathasethi "Yobuso Obunelebula Endle" (LFW). Ihlanganisa izithombe zobuso babantu kanye namalebula ahambisana nabo.
Lemitapo yolwazi ibalulekile ekuqalisweni nasekuhlolweni kwemodeli yethu yokuqaphela ubuso.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Icubungula ngaphambili futhi Ilayisha isethi Yedatha Yokubona Ubuso
Kule ngxenye, sisebenzisa umsebenzi othi "landa abantu be-lfw" ukuze sicubungule kusengaphambili idatha yokubonwa kobuso. Okokuqala, sisebenzisa ukulanda abantu abangu-lfw ngenketho ethi "min faces per person=60". Lokhu kubonisa ukuthi sifuna kuphela ukufaka abantu kudathasethi abanezithombe okungenani ezingu-60. Ngakho-ke, siqinisekisa ukuthi imodeli yethu inedatha eyanele okufanele ifundwe. Futhi, lokhu kwehlisa ingozi yokugqoka ngokweqile.
Idatha namalebula avela entweni yobuso abese ekhishwa futhi anikezwe okuguquguqukayo u-X kanye no-y. X hol.
Manje sesilungele ukuqeqesha imodeli yethu yokubona ubuso sisebenzisa idatha namalebula asecutshungulwe ngaphambili.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Ukuhlukanisa Ukuqeqeshwa kanye Amasethi Wokuhlola
Kulesi sinyathelo, sihlukanisa idathasethi yethu yokuqaphela ubuso ibe izingxenye ezimbili sisebenzisa indlela yokuhlukanisa yokuhlola isitimela kusukela ekukhethweni kwe-sklearn.model. Umgomo walokhu kuhlukaniswa ukuhlola ukusebenza kwemodeli yethu ngemva kokuqeqeshwa
Umsebenzi wokuhlukanisa ukuhlolwa kwesitimela wamukela njengedatha yokokufaka X namalebula y. Futhi, iwahlukanisa abe amasethi okuqeqesha namasethi okuhlola. Sikhetha usayizi wokuhlola=0.2 kulesi sibonelo. Lokhu kusho ukuthi u-20% wedatha uzosetshenziswa njengesethi yokuhlola bese u-80% usetshenziswe njengesethi yokuqeqeshwa. Ngaphezu kwalokho, sisebenzisa okungahleliwe i-state=42 ukuze siqinisekise ukuthi idatha ihlukaniswa ngokulinganayo isikhathi ngasinye lapho kwenziwa ikhodi.
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
Inhloso yokucubungula ngaphambilini idatha ukuyilungiselela ukungena kumodeli. Idatha icutshungulwa ngaphambili kule khodi ngokuhlukanisa iphoyinti ledatha ngalinye ngama-255.
Yini eyasishukumisela ukuba sifeze lokhu? Ukwenza okujwayelekile kuyinqubo yokucubungula ngaphambilini esetshenziswa ekufundeni komshini ukuze kuqinisekiswe ukuthi zonke izici zisezingeni elifanayo. Kulesi simo, ukuhlukanisa ngo-255 kukala idatha kububanzi obusuka ku-0 kuye ku-1, okuyisinyathelo esivamile sokwenza idatha yesithombe ibe evamile.
Lokhu kusheshisa ukuhlangana kwemodeli futhi kungakhuphula ukusebenza kwayo.
X_train = X_train / 255.0
X_test = X_test / 255.0
Ukudala Imodi
Sifuna ukuhlonza umuntu obuso bakhe obuvela esithombeni. Kulokhu, sizosebenzisa inethiwekhi exhunywe ngokugcwele, ngokuvamile eyaziwa ngokuthi inethiwekhi eminyene. Kuyinethiwekhi ye-neural yokwenziwa eyasetshenziswa ukudala imodeli.
Amanethiwekhi emizwa yokwenziwa amodelwa ngendlela ubuchopho bomuntu obusebenza futhi buhlelwe ngayo. Akhiwe ngamanodi okucubungula ulwazi noma ama-neurons axhumene. I-neuron ngayinye kusendlalelo kunethiwekhi eminyene ixhunywe kuwo wonke ama-neuron esendlaleloni ngaphezu kwayo.
Imodeli inezendlalelo ezine kule khodi. Ukuze ifakwe kusendlalelo esilandelayo, idatha yokokufaka ifinyezwa kusendlalelo sokuqala ibe amalungu afanayo anohlangothi olulodwa. I-128 kanye ne-64 neurons kulezi zingqimba ezimbili ezilandelayo, ngokufanele, zixhunywe ngokuphelele.
Umsebenzi wokwenza kusebenze i-ReLU wumsebenzi oyingqayizivele wokwenza kusebenze osetshenziswa yilezi zendlalelo. Ngalokho, singathola imodeli ukuthi ifunde ukuhlobana okungekona komugqa phakathi kokokufaka nokuphumayo. Isendlalelo sokugcina sisebenzisa umsebenzi wokwenza kusebenze i-softmax ukwenza izibikezelo. Futhi, ungqimba oluxhumeke ngokugcwele olunama-neurons amaningi njengoba kunezigaba ezingaba khona.
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')
])
Ukuhlanganisa Imodeli
Imodeli ihlanganiswa kusetshenziswa umsebenzi othi "hlanganisa". Kudingeka silungiselele imodeli yokuqeqeshwa. Ngakho-ke, sizochaza isilungiseleli, umsebenzi wokulahlekelwa, namamethrikhi azosetshenziswa ukuhlola imodeli.
Ngesikhathi sokuqeqeshwa, i-optimizer iphethe ukushintsha amapharamitha emodeli. I-"adam" optimizer iyindlela edumile yokufunda ngokujulile.
Sisebenzisa umsebenzi wokulahlekelwa ukuze sihlole ukusebenza kwemodeli kudatha yokuqeqeshwa. Ngenxa yokuthi amalebula okuqondiwe angama-integer abonisa isigaba sesithombe kune-vector enekhodi eshisayo, umsebenzi wokulahlekelwa “we-sparse categorical crossentropy” uyathandeka.
Okokugcina, sichaza amamethrikhi okuhlola imodeli, kulokhu, "ukunemba".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Ukuqeqeshwa Kwemodeli
Sizosebenzisa umsebenzi othi "fit" ukuqeqesha imodeli.
Sizobe sihlinzeka ngedatha yokuqeqeshwa (isitimela esingu-X) namalebula ahlobene (isitimela), kanye nokusetha inombolo yama-epoch (ama-iterations) ukuthi asebenze njengo-10. Inqubo yokuqeqesha ilungisa izisindo zemodeli ukuze kwehliswe ukulahlekelwa (umehluko phakathi amalebula abikezelwe nangempela) futhi athuthukise ukunemba kwedatha yokuqeqeshwa.
model.fit(X_train, y_train, epochs=10)
Ukuhlola Imodeli
Manje, sidinga ukuhlola imodeli eqeqeshiwe kudatha yokuhlola. Sisebenzisa ukulahlekelwa kokuhlolwa kanye nokunemba kokuhlolwa kusetshenziswa ukuhlola ukusebenza kwemodeli. Ekuhlolweni kwedatha yokuhlola X namalebula okuhlola y test, sidinga ukubiza “umsebenzi wemodeli.evaluate”
Umsebenzi ukhipha ukunemba kokuhlolwa nokulahlekelwa kokuhlola. Ukulahlekelwa kokuhlolwa okuguquguqukayo nokunemba kokuhlolwa, ngokulandelanayo, kuqukethe lawa manani. Ekugcineni, sisebenzisa umsebenzi othi "phrinta" ukuze sikhiphe ukunemba kokuhlolwa.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Amakilasi Okubikezela kanye Nokuthola Amakilasi Abikezelwe
Isebenzisa imodeli yokuqeqesha kanye nedatha yokuhlola, i-algorithm yenza izibikezelo. Uma idatha yokuhlola idluliselwa endleleni ye-“model.predict”, ikhipha izibikezelo eziningi zesithombe ngasinye kusethi yokuhlola.
Igama lekilasi okuqondiwe kulo lesithombe ngasinye libe selibuyiswa ohlwini “lwamagama okuqondisiwe” kusetshenziswa umsebenzi we-“np.argmax” ukuze kuhlonzwe inkomba enamathuba amakhulu abikezelwe. Le nkomba ibe isisetshenziswa ukunquma isigaba esibikezelwe sesithombe ngasinye.
Ngokusebenzisa ukuqonda kohlu, zonke izibikezelo kuhlelo "lokubikezela" zingaphansi kwale ndlela, okuholela ohlwini "lwezigaba ezibikezelwe".
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Ukubona Izibikezelo
Manje sesingabona ukuthi imodeli yethu ibukeka kanjani.
Ukuhlola ukuthi imodeli yenza kahle kangakanani, kuzoboniswa izithombe zokuqala eziyi-10 nokuqagela kwazo. Izohlela izithombe ngesikali esimpunga futhi ibonise kokubili isigaba sangempela sesithombe kanye nekilasi elibikezelwe imodeli isebenzisa imojula ye-matplotlib.pyplot.
Umsebenzi "we-imshow" usetshenziswa iluphu ukuhlela isithombe ngasinye kwezingu-10 zokuqala zesethi. Amagama okuhlosiwe[y test[i]] namakilasi abikezelwe[i] asetshenziselwa ukunquma isigaba sangempela sesithombe nesigaba esibikezelwe, ngokulandelanayo. Izihloko zesakhiwo ngasinye zibe sezikhonjiswa yilezi zigaba.
Ekugcineni, isakhiwo siboniswa kusetshenziswa 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()
Qedani
I-TensorFlow inikezela ngendawo ephelele neguquguqukayo yokudala amamodeli okufunda omshini.
Ngokulungisa kahle imodeli ukuze ihlangabezane nezidingo ezithile noma ngokwengeza ukuthuthukiswa okusha ekufundeni komshini, ukunemba kwemodeli kungase kukhuliswe nakakhulu.
I-TensorFlow nokubonwa kobuso cishe kuzosetshenziswa kakhulu ezimbonini ezifana nezinhlelo zokuphepha, ukuqinisekiswa kwe-biometric, nokunakekelwa kwezempilo esikhathini esizayo. Sizobona izinto ezintsha ezithokozisayo maduze.
shiya impendulo