TensorFlow - бул машина үйрөнүү моделдерин түзүү үчүн ар тараптуу курал.
Бул постто биз TensorFlow, ачык булактуу машина үйрөнүү негизи менен жүздү таануу системасын кантип түзүүнү карап чыгабыз. Биз жүздү ийгиликтүү таануу тутумун түзүүнүн маанилүү процесстерин карап чыгабыз, маалыматтарды чогултуу жана даярдоодон баштап моделди окутууга жана баалоого чейин.
Код үзүндүлөрүнүн жана реалдуу мисалдардын жардамы менен бетти таанууну түзүү үчүн TensorFlow менен биринчи тажрыйбага ээ болосуз. Биз улантууда сизди ээрчүүгө кош келиңиз.
TensorFlow колдонмосуна киришүү
TensorFlow акысыз жана ачык булактуу китепкана. Бул маалымат агымын жана дифференциалдалуучу программалоону колдонгон символикалык математика куралдар кутусу. Аны менен бир катар иштерди, анын ичинде тереңдете аласыз нейрон тармак окутуу.
TensorFlow күчтүү жана ийкемдүү. Ошо сыяктуу эле, ал иштеп чыгуу жана үчүн сонун курал болуп саналат машина үйрөнүү моделдерин жайылтуу. Сиз бир нече катмарлуу жана тензордук операциялар менен татаал моделдерди кура аласыз. Ошондой эле, китепканада алдын ала түзүлгөн моделдер белгилүү бир муктаждыктар үчүн жакшылап жөндөлүшү мүмкүн.
Андан тышкары, TensorFlow абдан чоң жана кеңейтилген колдонуучу коомчулугуна ээ. Ошентип, платформага жаңы келген адамдар үчүн көптөгөн маалымат жана жардам бар.
TensorFlow үчүн популярдуу машина үйрөнүү жарым-жартылай, анткени ал аягына чейин иштөөнү камсыз кылат. Ошентип, сиз моделдерди оңой куруп, үйрөтүп жана жайылта аласыз. Ал конкреттүү талаптарга ылайык моделдерди өркүндөтүү жана масштабдоо үчүн куралдарды жана стратегияларды берет. Ал маалыматтарды алдын ала иштетүүдөн моделди жайылтууга чейин өзгөрөт.
Жүздү таануу деген эмне?
Жүздү таануу – а компьютер көрүнүш адамдын жүзүнө карап идентификациялоочу тапшырма. Бул ыкма көздүн, мурундун жана ооздун формасы жана текстурасы сыяктуу беттин өзгөчөлүктөрүн тааныйт.
Ал эми дал келүүнү аныктоо үчүн аларды белгилүү жүздөрдүн маалымат базасы менен салыштырат. Жүздү таануу коопсуздук системаларын, фото уюштурууну жана биометрикалык аутентификацияны камтыган бир нече максаттарга ээ.
Жүздү таануу алгоритмдеринин тактыгы акыркы жылдары машинаны үйрөнүүдөгү жетишкендиктердин натыйжасында бир топ жогорулады.
Керектүү китепканаларды импорттоо
Эч нерсени баштаардан мурун, моделибизге керектүү китепканаларды импорттообуз керек. Tensorflow (tf) импорттолгон жана моделди түзүү жана окутуу үчүн колдонулат. <(б>
"numpy" математикалык эсептөөлөрдү жана маалыматтарды иштетүүнү жүзөгө ашырат.
"matplotlib.pyplot" plt катары импорттолот жана үчүн колдонулат маалыматтардын диаграммасы жана визуализациясы.
Акыр-аягы, "Ftch lfw people" склернден импорттолот. маалыматтар топтомдору жана бетти таануу маалымат топтомун жүктөө үчүн колдонулат. Бул функция scikit-learn инструменттеринин бир бөлүгү болуп саналат. Бул функциянын аркасында биз башка маалымат топтомун жүктөшүбүз керек болгон жок. Бул мурунтан эле sckit-learn ичинде курулган.
Жана, ал сизге кеңири спектрге мүмкүнчүлүк берет машина үйрөнүү үчүн маалымат топтомдору колдонмолор. Бул сценарийде "Жапайы жаратылыштагы энбелгиленген жүздөр" (LFW) маалымат топтомун алуу үчүн fetch lfw people ыкмасын колдонобуз. Ал адамдардын беттеринин сүрөттөрүн, ошондой эле алар менен коштолгон энбелгилерди камтыйт.
Бул китепканалар биздин жүздү таануу моделибизди ишке ашырууда жана баалоодо маанилүү.
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
Жүздү таануу дайындар топтомун алдын ала иштетүү жана жүктөө
Бул бөлүктө биз бетти таануу маалыматтарын алдын ала иштетүү үчүн “lfw адамдарды алуу” функциясын колдонобуз. Биринчиден, биз "адам башына эң аз жүздөр = 60" опциясы менен lfw адамдарды алып келебиз. Бул маалымат топтомуна кеминде 60 сүрөтү бар адамдарды гана киргизгибиз келет. Демек, биз моделибиздин үйрөнүү үчүн адекваттуу маалыматтары бар экенине кепилдик беребиз. Ошондой эле, бул ашыкча кирүү коркунучун азайтат.
Андан кийин faces объектинен маалыматтар жана энбелгилер чыгарылып, X жана y өзгөрмөлөрүнө дайындалат. X хол.
Биз азыр алдын ала иштетилген маалыматтарды жана энбелгилерди колдонуу менен бетти таануу моделибизди үйрөтүүгө даярбыз.
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
Тренинг жана тест топтомун бөлүү
Бул кадамда биз sklearn.model тандоосунан поездди сынап бөлүү ыкмасын колдонуп, жүздү таануу маалымат топтомун эки жарымга бөлдүк. Бул бөлүүнүн максаты - машыгуудан кийин биздин моделдин иштешин баалоо
Поезд тестин бөлүү функциясы X маалыматтарын жана y белгилерин кабыл алат. Жана, аларды окутуу жана тест топтомдоруна бөлөт. Бул мисалда биз тест өлчөмү = 0.2 тандайбыз. Бул маалыматтардын 20% тест топтому жана 80% окуу топтому катары колдонулат дегенди билдирет. Андан тышкары, код аткарылган сайын маалыматтар ырааттуу түрдө бөлүнүшүн камсыз кылуу үчүн кокустук абал = 42 колдонобуз.
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)
Маалыматтарды даярдоо
Маалыматтарды алдын ала иштетүүнүн максаты аны моделге киргизүүгө даярдоо болуп саналат. Маалыматтар бул коддо ар бир маалымат чекити 255ке бөлүү менен алдын ала иштетилет.
Буга жетишүүбүзгө эмне түрткү болду? Нормалдаштыруу - бул бардык функциялардын бирдей масштабда болушуна кепилдик берүү үчүн машинаны үйрөнүүдө колдонулган алдын ала иштетүү процедурасы. Бул сценарийде 255ке бөлүү маалыматтарды 0дөн 1ге чейинки диапазонго жеткирет, бул кадимки сүрөт маалыматтарын нормалдаштыруу кадамы.
Бул моделдин конвергенциясын тездетет жана анын иштешин жогорулатат.
X_train = X_train / 255.0
X_test = X_test / 255.0
Режимди түзүү
Сүрөттө жүзү көрүнгөн адамды аныктагыбыз келет. Бул учурда, биз көбүнчө жыш тармак катары белгилүү болгон толук туташкан тармакты колдонобуз. Бул моделди түзүү үчүн колдонулган жасалма нейрон тармагы болуп саналат.
Жасалма нейрон тармактары адамдын мээси кандайча иштээрин жана уюшулганынан кийин моделделет. Алар маалыматты иштетүүчү түйүндөрдөн же байланышкан нейрондордон турат. Тыгыз тармактагы катмардагы ар бир нейрон анын үстүндөгү катмардагы ар бир нейрон менен байланышкан.
Бул коддо моделдин төрт катмары бар. Кийинки катмарга берилиш үчүн, киргизилген маалыматтар биринчи катмарда бир өлчөмдүү массивге тегизделет. Төмөнкү эки катмардагы 128 жана 64 нейрондор, ошого жараша, толугу менен байланышкан.
ReLU активдештирүү функциясы бул катмарлар тарабынан колдонулган уникалдуу активдештирүү функциясы болуп саналат. Ушуну менен биз моделди киргизүү менен чыгуунун ортосундагы сызыктуу эмес корреляцияларды үйрөнө алабыз. Акыркы катмар алдын ала айтуу үчүн softmax активдештирүү функциясын колдонот. Жана, бул потенциалдуу класстар болушунча көп нейрондор менен толук байланышкан катмар.
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')
])
Моделди түзүү
Модель “компиляция” функциясын колдонуу менен түзүлөт. Биз моделди машыгууга даярдашыбыз керек. Ошентип, биз оптимизаторду, жоготуу функциясын жана моделди баалоо үчүн колдонула турган көрсөткүчтөрдү аныктайбыз.
Окутуу учурунда оптимизатор моделдин параметрлерин өзгөртүүгө жооптуу. "Адам" оптимизатору - бул терең үйрөнүүнү оптималдаштыруунун популярдуу ыкмасы.
Биз жоготуу функциясын окуу маалыматтарында моделдин иштешин баалоо үчүн колдонобуз. Максаттуу энбелгилер бир ысык коддолгон векторлорго караганда сүрөттүн классын чагылдырган бүтүн сандар болгондуктан, “сейрек категориялык кроссентропия” жоготуу функциясы жагымдуу.
Акыр-аягы, биз моделди баалоо үчүн көрсөткүчтөрдү аныктайт, бул учурда, "так".
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Моделдик тренинг
Модельди үйрөтүү үчүн биз "турат" функциясын колдонобуз.
Биз машыгуу берилиштерин (X поезд) жана ага тиешелүү энбелгилерди (y поезд) камсыздайбыз, ошондой эле иштөө үчүн доорлордун (итерациялар) санын 10 деп коёбуз. Тренинг процедурасы жоготууну азайтуу үчүн моделдин салмагын өзгөртөт (анын ортосундагы айырма) алдын ала жана реалдуу этикеткаларды) жана окутуу маалыматтарынын тактыгын жакшыртуу.
model.fit(X_train, y_train, epochs=10)
Моделди баалоо
Эми биз тесттик маалыматтар боюнча үйрөтүлгөн моделди баалашыбыз керек. Биз тесттин жоголушун колдонобуз жана тесттин тактыгы моделдин иштешин баалоо үчүн колдонулат. Сыноо маалыматтарында X тестинде жана y тестинде биз "model.evaluate функциясын" чакырышыбыз керек.
Функция тесттин тактыгын жана тесттин жоголушун чыгарат. өзгөрмөлөр тест жоготуу жана сыноо тактыгы, тиешелүүлүгүнө жараша, бул маанилерди камтыйт. Акыр-аягы, биз тесттин тактыгын чыгаруу үчүн "басып чыгаруу" функциясын колдонобуз.
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
Класстарды болжолдоо жана болжолдонгон класстарды алуу
Тренинг моделин жана тесттик маалыматтарды колдонуу менен алгоритм болжолдоолорду жасайт. Сыноо маалыматтары “model.predict” ыкмасына өткөндө, ал тест топтомундагы ар бир сүрөт үчүн болжолдоолордун массивдерин чыгарат.
Ар бир сүрөт үчүн максаттуу класстын аталышы "np.argmax" функциясын колдонуу менен "максаттын аттары" тизмесинен чыгарылып, индексти болжолдонгон эң чоң ыктымалдуулук менен аныктайт. Бул индекс андан кийин ар бир сүрөт үчүн болжолдонгон классты аныктоо үчүн колдонулат.
Тизмени түшүнүүнү колдонуу менен, "болжолдоолор" массивиндеги бардык божомолдор ушул ыкмага дуушар болот, натыйжада "болжолдонгон класстар" тизмеси пайда болот.
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
Божомолдорду визуализациялоо
Эми моделибиздин кандай экенин көрө алабыз.
Модель канчалык жакшы иштеп жатканын баалоо үчүн алгачкы 10 сүрөт жана алардын божомолдору көрсөтүлөт. Ал сүрөттөрдү боз түстө жайгаштырып, matplotlib.pyplot модулунун жардамы менен моделдин болжолдонгон классын да, сүрөттүн чыныгы классын да көрсөтөт.
"imshow" функциясы for цикли тарабынан алгачкы 10 сыноо топтомунун сүрөттөрүнүн ар бирин түзүү үчүн колдонулат. Максаттуу аталыштар[y тест[i]] жана болжолдонгон класстар[i] тиешелүүлүгүнө жараша сүрөттүн чыныгы классын жана болжолдонгон классын аныктоо үчүн колдонулат. Андан кийин ар бир сюжеттин аталыштары бул классификациялар менен көрсөтүлөт.
Акырында, сюжет 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()
Киришүү
TensorFlow машина үйрөнүү моделдерин түзүү үчүн толук жана ийкемдүү чөйрөнү сунуш кылат.
Белгилүү талаптарга жооп берүү үчүн моделди тактоо же машина үйрөнүүдөгү жаңы өнүгүүлөрдү кошуу менен моделдин тактыгын дагы да жогорулатууга болот.
TensorFlow жана жүзүн таануу келечекте коопсуздук системалары, биометрикалык аутентификация жана саламаттыкты сактоо сыяктуу тармактарда көбүрөөк колдонулушу мүмкүн. Биз жакын арада кызыктуу инновацияларды көрөбүз.
Таштап Жооп