TensorFlow yog ntau yam cuab yeej los tsim cov qauv kev kawm tshuab.
Hauv cov ntawv tshaj tawm no, peb yuav saib yuav ua li cas los tsim lub ntsej muag paub txog lub ntsej muag nrog TensorFlow, qhib lub tshuab kev kawm lub hauv paus. Peb yuav mus hla cov txheej txheem tseem ceeb hauv kev tsim kom muaj kev paub txog lub ntsej muag zoo, los ntawm kev sib sau thiab npaj cov ntaub ntawv los cob qhia thiab ntsuas tus qauv.
Koj yuav tau txais kev paub ua ntej nrog TensorFlow los tsim kev paub lub ntsej muag nrog kev pab ntawm cov lej snippets thiab cov piv txwv tiag tiag hauv ntiaj teb. Zoo siab txais tos koj los ua raws li peb mus.
Taw qhia rau TensorFlow
TensorFlow yog lub tsev qiv ntawv dawb thiab qhib qhov chaw. Nws yog ib lub cim lej toolbox uas siv dataflow thiab txawv programming. Koj tuaj yeem ua ntau yam haujlwm nrog nws, suav nrog qhov tob neural network kev cob qhia.
TensorFlow muaj zog thiab hloov tau. Ib yam li ntawd, nws yog ib qho cuab yeej zoo rau kev txhim kho thiab deploying machine learning qauv. Koj tuaj yeem tsim cov qauv nyuaj nrog ob peb txheej thiab tensor ua haujlwm. Tsis tas li ntawd, cov qauv tsim ua ntej hauv lub tsev qiv ntawv tuaj yeem raug kho kom zoo rau cov kev xav tau tshwj xeeb.
Tsis tas li ntawd, TensorFlow muaj cov neeg siv loj thiab nthuav dav hauv zej zog. Yog li, muaj ntau cov ntaub ntawv thiab kev pab rau cov tib neeg uas tshiab rau lub platform.
TensorFlow yog nrov rau tshuab kev kawm nyob rau hauv ib feem vim nws muab qhov kawg-rau-kawg workflow. Yog li, koj tuaj yeem yooj yim tsim, cob qhia thiab xa cov qauv. Nws muab cov cuab yeej thiab cov tswv yim los txhim kho thiab ntsuas cov qauv kom haum rau cov kev xav tau tshwj xeeb. Nws txawv ntawm cov ntaub ntawv ua ntej ua ntej mus rau cov qauv xa tawm.
Face Recognition yog dab tsi?
Face recognition yog ib lub computer tsis pom kev txoj hauj lwm uas txheeb xyuas tus neeg qhov kev txheeb xyuas raws li lawv lub ntsej muag. Cov txheej txheem no paub txog lub ntsej muag zoo, xws li cov duab thiab kev ntxhib los mos ntawm lub qhov muag, qhov ntswg, thiab qhov ncauj.
Thiab, nws muab piv rau lawv rau cov ntaub ntawv ntawm lub ntsej muag paub los txheeb xyuas qhov sib tw. Kev lees paub lub ntsej muag muaj ntau yam kev siv, suav nrog kev ruaj ntseg systems, lub koom haum duab, thiab biometric authentication.
Kev lees paub lub ntsej muag algorithms qhov tseeb tau nce ntau nyob rau xyoo tas los no los ntawm kev ua tiav hauv kev kawm tshuab.
Ntshuam cov tsev qiv ntawv tsim nyog
Ua ntej pib ua dab tsi, peb yuav tsum tau import cov tsev qiv ntawv xav tau rau peb cov qauv. Tensorflow (tf) yog imported thiab siv los tsim thiab cob qhia tus qauv. <(p>
"numpy" ua lej suav thiab ua cov ntaub ntawv.
"matplotlib.pyplot" yog imported li plt thiab siv rau cov ntaub ntawv charting thiab visualizations.
Thaum kawg, "nrhiav lfw neeg" yog imported los ntawm sklearn. datasets thiab siv los thauj cov ntaub ntawv qhia txog lub ntsej muag. Qhov kev ua haujlwm no yog ib feem ntawm cov khoom siv scikit-kawm. Ua tsaug rau qhov ua haujlwm no peb tsis tas yuav upload lwm cov ntaub ntawv. Qhov no twb tau ua hauv sckit-kawm.
Thiab, nws muab koj nkag mus rau ntau yam ntawm cov ntaub ntawv rau kev kawm tshuab daim ntawv thov. Hauv qhov xwm txheej no, peb siv txoj hauv kev nqa lfw tib neeg los muab cov ntaub ntawv "Labeled Faces in the Wild" (LFW) dataset. Nws suav nrog cov duab ntawm tib neeg lub ntsej muag nrog rau cov ntawv lo nrog lawv.
Cov tsev qiv ntawv no yog qhov tseem ceeb hauv kev siv thiab kev ntsuam xyuas ntawm peb tus qauv paub lub ntsej muag.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Preprocessing thiab Loading Face Recognition Dataset
Hauv ntu no, peb siv "nqa lfw neeg" ua haujlwm los ua ntej cov ntaub ntawv paub lub ntsej muag. Ua ntej, peb siv nqa lfw cov neeg nrog rau kev xaiv "min faces per person=60". Qhov no qhia tau hais tias peb tsuas yog xav suav nrog cov neeg hauv cov ntaub ntawv uas muaj tsawg kawg 60 daim duab. Li no, peb xyuas kom meej tias peb tus qauv muaj cov ntaub ntawv txaus los kawm. Tsis tas li ntawd, qhov no txo qis qhov txaus ntshai ntawm overfitting.
Cov ntaub ntawv thiab cov ntawv lo ntawm lub ntsej muag khoom raug muab rho tawm thiab muab xa mus rau qhov sib txawv X thiab y. X hlo.
Tam sim no peb npaj txhij los cob qhia peb tus qauv paub lub ntsej muag siv cov ntaub ntawv ua ntej thiab cov ntawv sau.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Splitting Training thiab Test Sets
Nyob rau hauv cov kauj ruam no, peb faib peb lub ntsej muag paub dataset rau hauv ob halves siv lub tsheb ciav hlau kuaj cais txoj kev los ntawm sklearn.model xaiv. Lub hom phiaj ntawm qhov kev sib cais no yog los ntsuas peb tus qauv kev ua tau zoo tom qab kev cob qhia
Lub tsheb ciav hlau kuaj kev faib ua haujlwm lees txais raws li cov ntaub ntawv nkag X thiab cov ntawv y. Thiab, nws faib lawv mus rau hauv kev cob qhia thiab kev xeem. Peb xaiv qhov loj me = 0.2 hauv qhov piv txwv no. Qhov no txhais tau hais tias 20% ntawm cov ntaub ntawv yuav raug siv raws li qhov kev sim teeb tsa thiab 80% raws li kev cob qhia. Tsis tas li ntawd, peb siv lub xeev random = 42 los xyuas kom meej tias cov ntaub ntawv tau muab faib ua ntu zus txhua lub sijhawm ua tiav.
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)
Kev npaj cov ntaub ntawv
Lub hom phiaj ntawm preprocessing cov ntaub ntawv yog los npaj nws rau kev nkag mus rau hauv tus qauv. Cov ntaub ntawv yog preprocessed nyob rau hauv no code los ntawm faib txhua cov ntaub ntawv taw tes los ntawm 255.
Dab tsi txhawb peb kom ua tiav qhov no? Normalization yog cov txheej txheem ua ntej siv hauv tshuab kev kawm kom lav tias txhua tus yam ntxwv nyob rau tib qhov ntsuas. Hauv qhov xwm txheej no, faib los ntawm 255 teev cov ntaub ntawv mus rau thaj tsam ntawm 0 mus rau 1, uas yog cov duab duab cov ntaub ntawv ib txwm ua haujlwm.
Qhov no ua rau kom tus qauv convergence thiab tuaj yeem ua rau nws qhov kev ua tau zoo.
X_train = X_train / 255.0
X_test = X_test / 255.0
Tsim hom
Peb xav txheeb xyuas tus neeg uas nws lub ntsej muag tshwm hauv daim duab. Nyob rau hauv cov ntaub ntawv no, peb yuav siv ib tug tag nrho kev cob cog rua network, feem ntau hu ua ib tug ntom network. Nws yog ib qho khoom siv neural network uas tau siv los tsim cov qauv.
Artificial neural networks yog ua qauv tom qab li cas tib neeg lub hlwb ua haujlwm thiab raug teeb tsa. Lawv yog tsim los ntawm cov ntaub ntawv-ua cov nodes lossis neurons uas txuas. Txhua neuron nyob rau hauv ib txheej nyob rau hauv ib tug ntom network yog txuas mus rau txhua txhua neuron nyob rau hauv lub txheej saum toj no nws.
Tus qauv muaj plaub txheej hauv cov cai no. Yuav tsum tau pub rau hauv txheej tom ntej, cov ntaub ntawv tawm tswv yim yog flattened nyob rau hauv thawj txheej mus rau hauv ib qho array. Lub 128 thiab 64 neurons hauv ob txheej hauv qab no, raws li, tau txuas tag nrho.
ReLU activation muaj nuj nqi yog qhov tshwj xeeb ua kom muaj nuj nqi siv los ntawm cov txheej txheem no. Nrog rau qhov ntawd, peb tuaj yeem tau txais tus qauv los kawm txog kev sib raug zoo ntawm cov khoom siv thiab cov khoom siv. Cov txheej txheem kawg siv lub softmax ua kom muaj nuj nqi los ua kev kwv yees. Thiab, nws yog ib qho kev sib txuas tag nrho nrog ntau cov neurons raws li muaj cov chav kawm muaj peev xwm.
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')
])
Compiling ntawm Tus Qauv
Tus qauv yog muab tso ua ke siv lub "compile" muaj nuj nqi. Peb yuav tsum npaj tus qauv rau kev cob qhia. Yog li, peb yuav txhais cov optimizer, poob muaj nuj nqi, thiab metrics uas yuav siv los ntsuas tus qauv.
Thaum lub sij hawm kev cob qhia, tus optimizer yog tus saib xyuas ntawm kev hloov cov qauv tsis. Lub "adam" optimizer yog ib qho kev kawm tob-kev kawm optimization txheej txheem.
Peb siv qhov poob haujlwm los ntsuas tus qauv kev ua haujlwm ntawm cov ntaub ntawv kev cob qhia. Vim tias cov ntawv cim lub hom phiaj yog cov lej qhia txog cov duab hauv chav kawm es tsis yog ib-kub encoded vectors, "sparse categorical crossenttropy" poob haujlwm yog qhov zoo.
Thaum kawg, peb txhais cov metrics los ntsuas tus qauv, qhov no, "qhov tseeb".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Kev cob qhia qauv
Peb yuav siv qhov "haum" ua haujlwm los cob qhia tus qauv.
Peb yuav muab cov ntaub ntawv qhia kev cob qhia (X tsheb ciav hlau) thiab cov ntawv txheeb (y tsheb ciav hlau), nrog rau kev teeb tsa tus naj npawb ntawm epochs (iterations) kom khiav raws li 10. Cov txheej txheem kev cob qhia hloov cov qauv hnyav kom txo tau qhov poob (qhov txawv ntawm kwv yees thiab cov ntawv tiag) thiab txhim kho qhov tseeb ntawm cov ntaub ntawv kev cob qhia.
model.fit(X_train, y_train, epochs=10)
Kev ntsuas tus qauv
Tam sim no, peb yuav tsum ntsuas tus qauv kev cob qhia ntawm cov ntaub ntawv xeem. Peb siv qhov kev xeem poob thiab qhov ntsuas qhov tseeb yog siv los ntsuas tus qauv kev ua haujlwm. Ntawm cov ntaub ntawv xeem X xeem thiab cov ntawv xeem y xeem, peb yuav tsum hu rau "model.evaluate function"
Lub luag haujlwm tso tawm qhov ntsuas qhov tseeb thiab kev xeem poob. Cov variables xeem poob thiab xeem raug, ntsig txog, muaj cov nqi no. Thaum kawg, peb siv qhov "luam tawm" ua haujlwm los tso tawm qhov ntsuas qhov tseeb.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Predicting Classes thiab tau txais cov chav kawm Predicted
Siv cov qauv kev cob qhia thiab cov ntaub ntawv xeem, cov algorithm ua rau kev kwv yees. Thaum cov ntaub ntawv xeem dhau mus rau "model.predict" txoj kev, nws outputs ib array ntawm kwv yees rau txhua daim duab nyob rau hauv lub xeem teeb.
Lub hom phiaj hauv chav kawm npe rau txhua daim duab yog tom qab ntawd muab los ntawm "cov npe phiaj" npe siv "np.argmax" muaj nuj nqi txhawm rau txheeb xyuas qhov ntsuas nrog qhov ua tau zoo tshaj plaws. Qhov kev ntsuas no yog siv los txiav txim siab cov chav kawm kwv yees rau txhua daim duab.
Siv cov npe kev nkag siab, tag nrho cov kev kwv yees hauv "kev kwv yees" array raug rau txoj kev no, ua rau "cov chav kawm kwv yees" cov npe.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Visualizing cov Predictions
Tam sim no peb tuaj yeem pom tias peb tus qauv zoo li cas.
Txhawm rau ntsuas tus qauv ua tau zoo npaum li cas, thawj 10 daim duab thiab lawv qhov kev twv yuav raug pom. Nws yuav npaj cov duab hauv greyscale thiab tso saib ob chav kawm ntawm cov duab thiab cov chav kawm kwv yees los ntawm tus qauv siv matplotlib.pyplot module.
Qhov "imshow" muaj nuj nqi yog siv los ntawm lub voj voog rau phiaj xwm txhua qhov ntawm thawj 10 qhov kev sim teeb duab. Cov npe hom phiaj [y test[i]] thiab cov chav kawm kwv yees[i] yog siv los txiav txim siab cov duab cov chav kawm tiag tiag thiab cov chav kawm kwv yees, raws li. Cov npe ntawm txhua daim phiaj yog qhia los ntawm cov kev faib tawm no.
Thaum kawg, cov phiaj xwm tau tshwm sim siv plt.show() txoj kev.
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()
Qhwv Sau
TensorFlow muaj qhov ua tiav thiab hloov tau yooj yim rau kev tsim cov qauv kev kawm tshuab.
Los ntawm kev kho tus qauv kom tau raws li cov kev xav tau tshwj xeeb lossis los ntawm kev ntxiv cov kev tsim kho tshiab hauv kev kawm tshuab, qhov tseeb ntawm tus qauv yuav raug nce ntxiv.
TensorFlow thiab kev lees paub lub ntsej muag yuav zoo li yuav raug siv ntau dua hauv kev lag luam xws li kev ruaj ntseg tshuab, biometric authentication, thiab kev kho mob yav tom ntej. Peb yuav pom cov kev hloov pauv tshiab sai sai.
Sau ntawv cia Ncua