TensorFlow amûrek pirreng e ku modelên fêrbûna makîneyê diafirîne.
Di vê postê de, em ê binihêrin ka meriv çawa bi TensorFlow, çarçoveyek fêrbûna makîneya çavkaniya vekirî, pergalek nasîna rû biafirîne. Em ê di afirandina pergalek nasîna rûyê serketî de, ji berhevkirin û amadekirina daneyan heya perwerdekirin û nirxandina modelek, pêvajoyên bingehîn derbas bikin.
Hûn ê bi TensorFlow re ezmûnek yekem-destê bistînin da ku bi arîkariya perçeyên kodê û mînakên cîhana rastîn nasîna rû biafirînin. Hûn bi xêr hatin ku em bi pêş ve biçin.
Destpêka TensorFlow
TensorFlow pirtûkxaneyek belaş û çavkaniya vekirî ye. Ew qutiyek matematîkî ya sembolîk e ku danehev û bernamekirina cihêreng bikar tîne. Hûn dikarin rêzek karan bi wê re bi rê ve bibin, tevî kûr torê neural hîndarî.
TensorFlow bi hêz û adapteyî ye. Di heman demê de, ew ji bo pêşkeftin û pêşveçûnê amûrek girîng e bicihkirina modelên fêrbûna makîneyê. Hûn dikarin modelên tevlihev bi çend qat û operasyonên tensor ava bikin. Di heman demê de, modelên pêş-avakirî yên di pirtûkxaneyê de dikarin ji bo hewcedariyên taybetî werin sererast kirin.
Wekî din, TensorFlow xwedan civakek bikarhênerek mezin û berfireh e. Ji ber vê yekê, ji bo kesên ku nû di platformê de ne, pir agahdarî û arîkarî heye.
TensorFlow ji bo populer e fêrbûna makîneyê beşek ji ber ku ew karûbarek dawî-bi-dawî peyda dike. Ji ber vê yekê, hûn dikarin bi hêsanî modelan ava bikin, perwerde bikin û bicîh bikin. Ew amûr û stratejiyan peyda dike ji bo başkirin û pîvandina modelan ku li gorî daxwazên taybetî bicîh bibin. Ew ji pêş-pêvajoya daneyê heya bicîhkirina modelê diguhere.
Naskirina Rû çi ye?
Naskirina rû a vîzyona computer Karê ku nasnameya kesek li ser rûyê wî nas dike. Ev teknîk taybetiyên rû, wek şekil û teşeya çav, poz û dev nas dike.
Û, ew wan bi databasek rûyên naskirî re berhev dike da ku berhevokek nas bike. Naskirina rûyê gelek karanîn hene, di nav de pergalên ewlehiyê, rêxistina wêneyan, û pejirandina biyometrîk.
Rastbûna algorîtmayên naskirina rû di van salên dawî de wekî encama pêşkeftinên di fêrbûna makîneyê de bi giranî zêde bûye.
Importing Pirtûkxaneyên Pêwîst
Berî ku em dest bi tiştekî bikin, pêdivî ye ku em pirtûkxaneyên ku ji bo modela xwe hewce ne îtxal bikin. Tensorflow (tf) ji bo afirandin û perwerdekirina modelê tê import kirin û bikar anîn. <(p>
"Numpy" hesabên matematîkî û pêvajoya daneyê pêk tîne.
"matplotlib.pyplot" wekî plt tê derxistin û ji bo wê tê bikar anîn nexşekirina daneyan û dîtbarîkirin.
Di dawiyê de, "mirovên lfw bînin" ji sklearn tê derxistin. danehevan û ji bo barkirina daneya naskirina rû tê bikar anîn. Ev fonksiyon beşek ji amûra fêrbûna scikit-ê ye. Bi saya vê fonksiyonê me neçar ma ku em daneya din bar bikin. Ev jixwe di sckit-learn de hatî çêkirin.
Û, ew ji we re bigihîje cîhek berfireh daneyên ji bo fêrbûna makîneyê sepanên. Di vê senaryoyê de, em rêbaza fetch lfw people bikar tînin da ku daneheva "Rûyên bi etîketkirî li çolê" (LFW) bistînin. Ew wêneyên rûyê mirovan û her weha etîketên ku bi wan re tê de hene.
Van pirtûkxane di pêkanîn û nirxandina modela naskirina rûyê me de krîtîk in.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Pêşpêçkirin û Barkirina Daneyên Naskirina Rûyê
Di vê beşê de, em fonksiyona "fetch lfw people" bikar tînin da ku daneyên nasîna rûyê pêşdibistanê bikin. Pêşîn, em mirovên lfw bi vebijarka "min rûyên her kesê = 60" bikar tînin. Ev nîşan dide ku em tenê dixwazin kesên ku bi kêmî ve 60 wêne hene têxin nav danezanê. Ji ber vê yekê, em piştrast dikin ku modela me ji bo fêrbûnê daneyên têr hene. Di heman demê de, ev xetera zêdekirina zêde kêm dike.
Dûv re dane û etîketên ji objekta rûyan têne derxistin û li guhêrbarên X û y têne danîn. X hol.
Em naha amade ne ku modela xweya nasîna rûyê xwe bi karanîna dane û etîketên pêşdibistanê perwerde bikin.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Parçekirina Komên Perwerde û Testê
Di vê gavê de, em bi karanîna rêbaza dabeşkirina testa trênê ji hilbijartina sklearn.model daneheva naskirina rûyê xwe li du nîvan dabeş dikin. Armanca vê dabeşkirinê ev e ku meriv performansa modela me piştî perwerdehiyê binirxîne
Fonksiyona dabeşkirina testa trênê wekî daneya têketinê X û etîketên y qebûl dike. Û, ew wan di nav komên perwerdehî û ceribandinê de dabeş dike. Em di vê nimûneyê de mezinahiya testê = 0.2 hilbijêrin. Ev tê vê wateyê ku 20% ji daneyan dê wekî koma ceribandinê û% 80 wekî koma perwerdehiyê were bikar anîn. Wekî din, em dewleta random=42 bikar tînin da ku pê ewle bin ku her carê ku kod tê çêkirin dane bi domdarî têne dabeş kirin.
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)
Amadekirina Daneyên
Armanca pêş-processing daneyan ew e ku ew ji bo têketina modelê amade bike. Daneyên di vê kodê de bi dabeşkirina her nuqteya daneyê bi 255-ê ve têne pêş-pêvajo kirin.
Çi me hişt ku em bigihîjin vê yekê? Normalîzasyon pêvajoyek pêşdibistanê ye ku di fêrbûna makîneyê de tê bikar anîn da ku garantî bike ku hemî taybetmendî di heman pîvanê de ne. Di vê senaryoyê de, dabeşkirina bi 255-an, daneyan di nav rêzek 0-1-ê de pîvan dike, ku ev gavek asayîkirina daneya wêneyê ye.
Ev yeka hevahengiya modelê bileztir dike û dikare performansa wê zêde bike.
X_train = X_train / 255.0
X_test = X_test / 255.0
Afirandina Mode
Em dixwazin kesê ku rûyê wî di wêneyekê de xuya dike nas bikin. Di vê rewşê de, em ê torgilokek bi tevahî ve girêdayî bikar bînin, ku pir caran wekî torgilokek dagirtî tê zanîn. Ew tora neuralî ya çêkirî ye ku ji bo afirandina modelê hatî bikar anîn.
Torên neuralî yên çêkirî li gorî ku mejiyê mirov çawa tevdigere û birêxistinkirî têne model kirin. Ew ji girêkên pêvajo-pêvajoya agahdariyê an neuronên ku bi hev ve girêdayî ne têne çêkirin. Her noyronek di qatek di torgilokek dagirtî de bi her noyronek di qata jorîn de ve girêdayî ye.
Model di vê kodê de çar qat hene. Ji bo ku di qata din de were xwar, daneya têketinê di qata yekem de di nav rêzek yek-dimensî de tê hilanîn. Li gorî vê yekê, 128 û 64 neuronên di du qatên jêrîn de bi tevahî bi hev ve girêdayî ne.
Fonksiyona çalakkirina ReLU fonksiyonek çalakkirina yekta ye ku ji hêla van qatan ve tê bikar anîn. Bi wê re, em dikarin modelê bistînin ku têkiliyên ne-xêzîkî yên di navbera ketin û derketinan de fêr bibin. Qata paşîn fonksiyona çalakkirina softmax bikar tîne da ku pêşbîniyan bike. Û, ew qatek bi tevahî ve girêdayî ye ku bi qasî dersên potansiyel hene bi gelek neuronan re.
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')
])
Berhevkirina Modelê
Model bi karanîna fonksiyona "berhevkirin" tê berhev kirin. Divê em modela perwerdeyê amade bikin. Ji ber vê yekê, em ê optimîzator, fonksiyona windabûnê, û metrîkên ku dê ji bo nirxandina modelê werin bikar anîn diyar bikin.
Di dema perwerdehiyê de, optimîzator di guheztina pîvanên modelê de berpirsiyar e. Optimîzatora "adam" teknîkek xweşbînkirina fêrbûna kûr a populer e.
Em fonksiyona windakirinê bikar tînin da ku performansa modelê li ser daneyên perwerdehiyê binirxînin. Ji ber ku etîketên mebest ji vektorên şîfrekirî yên yek-germ hejmar in ku çîna wêneyê nîşan didin, fonksiyona windakirina "kategorîk crossentropy" xweş e.
Di dawiyê de, em pîvanan diyar dikin ku modelê binirxînin, di vê rewşê de, "rastbûn".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Perwerdehiya Modelê
Em ê fonksiyona "fit" bikar bînin da ku modelê perwerde bikin.
Em ê daneya perwerdehiyê (trêna X) û etîketên têkildar (y trênê) peyda bikin, û her weha jimara serdeman (vegerandin) wekî 10 destnîşan bikin. Pêvajoya perwerdehiyê giraniyên modelê diguhezîne da ku windahiyek kêm bike (ferqa di navbera etîketên pêşbînîkirî û rastîn) û rastbûna daneyên perwerdehiyê baştir bikin.
model.fit(X_train, y_train, epochs=10)
Nirxandina Model
Naha, pêdivî ye ku em modela perwerdekirî li ser daneyên ceribandinê binirxînin. Em windabûna testê bikar tînin û rastbûna testê ji bo nirxandina performansa modelê têne bikar anîn. Li ser daneya testê X test û etîketên testê y test, pêdivî ye ku em gazî "fonksiyona model.evaluate" bikin.
Fonksiyon rastbûna testê û windabûna testê derdixe. Guherbarên windabûna testê û rastbûna testê, bi rêzê, van nirxan dihewîne. Di dawiyê de, em fonksiyona "çapkirinê" bikar tînin da ku rastiya ceribandinê derxînin.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Pêşbînkirina Dersan û Danîna Dersên Pêşbînîkirî
Bi karanîna modela perwerdehiyê û daneyên ceribandinê, algorithm pêşbîniyan dike. Dema ku daneyên testê ji rêbaza "model.predict" re derbas dibe, ew ji bo her wêneyek di koma ceribandinê de komek pêşbînan derdixe.
Dûv re navê pola armancê ji bo her wêneyek ji navnîşa "navên armanc" bi karanîna fonksiyona "np.argmax" tê derxistin da ku navnîşa bi îhtîmala herî mezin a pêşbînîkirî nas bike. Dûv re ev index ji bo destnîşankirina çîna pêşbînîkirî ji bo her wêneyê tê bikar anîn.
Bi karanîna têgihiştinek navnîşê, hemî pêşbîniyên di rêza "pêşbînan" de di bin vê rêbazê de ne, di encamê de navnîşa "çînên pêşbînkirî" derdikeve.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Dîtbarkirina Pêşbîniyan
Em niha dikarin bibînin ka modela me çawa xuya dike.
Ji bo nirxandina ku modela çiqas baş dike, dê 10 wêneyên pêşîn û pêşbîniyên wan werin nîşandan. Ew ê wêneyan bi pîvana gewr xêz bike û hem çîna rastîn a wêneyê hem jî pola ku ji hêla modelê ve hatî pêşbînîkirin bi karanîna modula matplotlib.pyplot nîşan bide.
Fonksiyona "imshow" ji hêla for loop ve tê bikar anîn da ku her yek ji 10 wêneyên set testê yên pêşîn xêz bike. Navên armanc[y test[i]] û çînên pêşbînîkirî[i] bi rêzê ve ji bo destnîşankirina çîna rastîn û çîna pêşbînîkirî ya wêneyê têne bikar anîn. Dûv re sernavên her komployê bi van dabeşan têne destnîşan kirin.
Di dawiyê de, nexşe bi rêbaza plt.show() tê xuyang kirin.
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()
Hot dog
TensorFlow ji bo afirandina modelên fêrbûna makîneyê jîngehek bêkêmasî û maqûl pêşkêşî dike.
Bi rastkirina modelê ji bo bicîhanîna hewcedariyên taybetî an bi zêdekirina pêşkeftinên nû di fêrbûna makîneyê de, dibe ku rastbûna modelê hîn bêtir zêde bibe.
TensorFlow û naskirina rû dê di pêşerojê de di pîşesaziyên mîna pergalên ewlehiyê, rastkirina biyometrîk, û lênihêrîna tenduristiyê de pir zêde were bikar anîn. Em ê di demek nêz de nûbûnên balkêş bibînin.
Leave a Reply