Неуронске мреже су важан концепт у областима вештачке интелигенције и машинског учења. Састоје се од међусобно повезаних чворова, организованих у слојевима, и опонашају како функционише људски мозак. Чворови представљају неуроне људског мозга.
Можете креирати сопствену једноставну неуронску мрежу за класификацију више класа. Обучите га да класификује руком писане цифре користећи МНИСТ скуп података. Затим можете користити компјутерски вид да бисте класификовали своје руком писане цифре.
Шта је вишекласна класификација?
Класификација више класа је врста машинског учења која може класификовати податке у више од две категорије. Неуронске мреже користе софтмак класификатор за дистрибуцију вероватноће на могуће класе.
Можете користити вишекласну класификацију да класификујете руком писане слике из МНИСТ скупа података у 10 категорија. Ове категорије ће одговарати цифрама од 0 до 9.
Разумевање МНИСТ скупа података
МНИСТ скуп података је популаран референтни скуп података за машинско учење и алгоритме компјутерског вида. Садржи 70.000 рукописних слика у сивим тоновима које су величине 28 к 28 пиксела. Рукописне цифре су у опсегу од 0 до 9.
Пре него што изградите било који модел машинског учења, важно је разумети шта садржи ваш скуп података. Разумевање скупа података ће вам омогућити да извршите бољу претходну обраду података.
Припрема вашег окружења
Да бисте пратили овај водич, требало би да сте упознати са основе Пајтона. Такође би требало да имате а основна знања о машинском учењу. Коначно, требало би да вам буде удобно да користите Јупитер Нотебоок или Гоогле Цолаб.
Комплетан изворни код је доступан у а ГитХуб спремиште.
Направите нову Јупитер бележницу или се пријавите на Гоогле Цолаб. Покрените ову команду да бисте инсталирали потребне пакете:
!пип инсталл нумпи матплотлиб тенсорфлов опенцв-питхон
Користићете:
- Матплотлиб за визуелизацију података.
- НумПи за манипулисање низовима.
- ТенсорФлов за креирање и обуку вашег модела.
- ОпенЦВ да напуните модел сопственим руком исписаним цифрама.
Увоз потребних модула
Увезите пакете које сте инсталирали у свом окружењу. Ово ће вам омогућити да касније позовете и користите њихове функције и модуле у вашем коду.
увоз тенсорфлов као тф
из тенсорфлов увоз керас
увоз матплотлиб.пиплот као плт
%матплотлиб инлине
увоз нумпи као нп
увоз цв2
Други ред кода увози Керас модул из Гоогле ТенсорФлов библиотека. Користићете Керас да тренирате своју дубоку неуронску мрежу са ТенсорФлов-ом као позадином.
Учитавање и преглед скупа података
МНИСТ скуп података је уграђен у Керас. Учитајте МНИСТ скуп података и поделите га на скупове за обуку и тестове. Користићете сет за обуку да обучите свој модел и тест сет да процените тачност вашег модела у класификацији нових невидљивих слика.
(Кс_траин, и_траин), (Кс_тест, и_тест) = керас.датасетс.мнист.лоад_дата()
Проверите дужину сетова за обуку и тест. МНИСТ скуп података има 60.000 слика за обуку и 10.000 слика за тестирање.
лен (Кс_траин)
лен (Кс_тест)
Проверите облик прве слике у скупу података МНИСТ која би требало да буде 28 пута 28 пиксела. Затим одштампајте његове вредности пиксела и визуелизујте их користећи Матплотлиб.
Кс_траин[0].облик
Кс_траин[0]
плт.матсхов (Кс_траин[0])
и_траин[0]
Излаз визуелизације је следећи:
Визуелизована слика показује да прва слика у скупу података садржи број пет.
Предобрада података
Пре употребе података у скупу података за обуку и тестирање вашег модела, потребно је да га претходно обрадите. Претходна обрада побољшава тачност модела стандардизацијом података.
Нормализација вредности пиксела
Нормализујте вредности пиксела слика у скупу података тако што ћете сваку вредност поделити са 255. Вредности пиксела ненормализованог скупа података се крећу од 0 до 255, при чему је нула црна, а 255 бела. Дељење сваке вредности пиксела са 255 обезбеђује да је сваки пиксел у опсегу између 0 и 1. Ово олакшава моделу да научи релевантне карактеристике и обрасце у подацима.
Кс_воз = Кс_воз / 255
Кс_тест = Кс_тест / 255
Затим одштампајте вредности пиксела прве слике.
Кс_траин[0]
Приметите да су сада у опсегу између 0 и 1.
Претварање матрица слика у 1Д низ
Улазни слој неуронске мреже генерално очекује 1Д улазе, па креирајте 1Д низ вредности пиксела слике. Да бисте то урадили, користите функцију ресхапе() са бројем сировина постављеним на број слика у скупу података.
Кс_траин_флаттенед = Кс_траин.ресхапе (лен (Кс_траин), 28 * 28)
Кс_тест_флаттенед = Кс_тест.ресхапе (лен (Кс_тест), 28 * 28)
Кс_траин_флаттенед.схапе
Кс_траин_флаттенед[0]
Ваше слике су сада спремне за обуку и тестирање модела.
Креирање модела дубоке неуронске мреже
Креирајте секвенцијални модел са Тенсорфлов Керас модулом користећи улазни слој, два скривена слоја и излазни слој. Подесите улазни облик на 28 са 28 јер је ово облик оригиналних слика у скупу података. Користите 128 чворова за скривене слојеве. Излазни слој треба да има само 10 неурона јер класификујете само цифре од 0 до 9.
модел = керас. Редни([
керас.слојеви. Изравнај (инпут_схапе=(28, 28)),керас.слојеви. Густо (128, активација='релу'),
керас.слојеви. Густо (128, активација='релу'),
керас.слојеви. Густо (10, активација='софтмак')
])
Саставите модел користећи адам оптимизатор, спарсе_цатегорицал_цроссентропи као функција губитка, а метрика за процену перформанси модела као тачност. Затим поставите податке о обуци у модел и подесите број епоха на пет.
модел.цомпиле (оптимизер='адам',
губитак='спарсе_цатегорицал_цроссентропи',
метрицс=['тачност'])
модел.фит (Кс_траин, и_траин, епоцхс=5)
Моделу ће бити потребно неколико минута да се обуче. Након што се обука модела заврши, процените његов учинак на тест сету.
модел.евалуате (Кс_тест, и_тест)
Функција евалуације ће вратити губитак и тачност модела. Модел производи тачност од 98%.
Коришћење модела за класификацију сопствених руком писаних цифара
Да бисте класификовали своје руком писане цифре, морате да припремите своје слике да одговарају онима из МНИСТ скупа података. Ако то не урадите, ваш модел ће лоше радити.
Да бисте унапред обрадили слике:
- Учитајте слику која садржи цифру користећи ОпенЦВ.
- Претворите га у нијансе сиве и промените величину на 28 к 28 пиксела.
- Окрените и нормализујте вредности пиксела.
- На крају, поравнајте слику у 1Д низ.
Проследите унапред обрађену слику у модел за предвиђање и одштампајте предвиђену вредност на екрану.
имг = цв2.имреад('дигитс/дигит1.пнг', цв2.ИМРЕАД_ГРАИСЦАЛЕ)
имг_ресизе = цв2.ресизе (имг, (28, 28))
имг_флип = цв2.битвисе_нот (имг_ресизе)
имг_нормализед = имг_флип.астипе('флоат32') / 255.0# Изравнајте слику у 1Д низ
инпут_дата = имг_нормализед.флаттен().ресхапе( 1,28,28)
# Направите предвиђање користећи модел
предвиђање = модел.предвиђање (улазни_подаци)
принт (ф'Предвиђање: {нп.аргмак (предвиђање)}')
Прослеђивање унапред обрађене слике која садржи број у модел.
Излаз модела је следећи:
Модел је успео да правилно класификује цифру седам.
Неуралне мреже у чет-ботовима
Употреба неуронских мрежа је експлодирала у последњих неколико година. Они су претежно коришћени у обради природног језика за превод језика и генеративну вештачку интелигенцију.
У скорије време, дошло је до пораста броја цхатботова који могу да комуницирају на људски начин. Они користе тип неуронске мреже познат као трансформаторска неуронска мрежа. Интерагујте са некима од њих и искусите моћ неуронских мрежа.