TensorFlow

TensorFlowiga alustamine

TensorFlowiga alustamine
TensorFlow on Google'i ajulaps ja selle keskmes on see arvulise arvutamise teek. See on kirjutatud C / C ++ keeles ja sellel on väga paindlik API. Seda API-d saab liidestada Pythoni kasutajaliidesega, et saaksite keeruliste probleemide lahendamiseks kirjutada väikesed Pythoni koodijupid. Paindlik ja järjepidev API võimaldab ka arendajatel kasutada sama esiotsa koodi, et töötada erinevatel platvormidel, nagu Nvidia GPU-d, üldotstarbelised protsessorid ning isegi mobiilsed ja manustatud seadmed, millest igaühel on taustaprogrammis väga erinev rakendamine.

TensorFlow on masinõppe valdkonnas leidnud tohutut kasutamist just seetõttu, et masinõpe hõlmab palju numbrimurdmist ja seda kasutatakse üldistatud probleemilahendustehnikana. Ja kuigi me suhtleme sellega Pythoni abil, on sellel teiste keelte, näiteks Go, Node, esiotsa.js ja isegi C #.

Tensorflow on nagu must kast, mis peidab kõik selle sees olevad matemaatilised peensused ja arendaja kutsub probleemi lahendamiseks lihtsalt õiged funktsioonid. Aga mis probleem?

Masinõpe (ML)

Oletame, et kavandate malemängu mängimiseks botti. Tänu male kavandamisele, mängunuppude liikumisele ja mängu täpselt määratletud eesmärgile on täiesti võimalik kirjutada programm, mis seda mängu ülimalt hästi mängiks. Tegelikult ületaks see males kogu inimkonna. Ta teaks täpselt, millise käigu ta peab tegema, arvestades kõigi laual olevate osade olekut.

Kuid selline programm saab mängida ainult malet. Mängu reeglid on sisse lülitatud koodi loogikasse ja kõik, mida programm teeb, on selle loogika täpne ja täpsem teostamine kui ükski inimene suudaks. See ei ole üldotstarbeline algoritm, mida saate kasutada mis tahes mänguboti kujundamiseks.

Masinõppega paradigma nihkub ja algoritmid muutuvad üha üldisemaks.

Idee on lihtne, see algab klassifitseerimisprobleemi määratlemisega. Näiteks soovite automatiseerida ämblikuliikide tuvastamise protsessi. Teile tuntud liigid on erinevad klassid (mitte segi ajada taksonoomiliste klassidega) ja algoritmi eesmärk on sorteerida uus tundmatu pilt ühte neist klassidest.

Siin oleks inimese esimene samm erinevate üksikute ämblike tunnuste määramine. Esitame andmed üksikute ämblike pikkuse, laiuse, kehamassi ja värvi kohta koos liikidega, kuhu nad kuuluvad:

Pikkus Laius Mass Värv Tekstuur Liigid
5 3 12 Pruun sile Isa pikad jalad
10 8 28 Pruun-must karvane Tarantula

Selliste üksikute ämblikandmete kogumise korral kasutatakse algoritmi koolitamiseks ja teist sarnast andmekogumit kasutatakse algoritmi testimiseks, et näha, kui hästi see toimib uue teabe vastu, mida pole kunagi varem kohanud, kuid mida me juba teame vastus.

Algoritm käivitatakse juhuslikult. See tähendab, et iga ämblik sõltumata selle omadustest klassifitseeritakse mis tahes liikide hulka. Kui meie andmekogumis on 10 erinevat liiki, siis oleks sellele naiivsele algoritmile antud õnne tõttu õige klassifikatsioon umbes 1/10 ajast.

Kuid siis hakkaks masinõppe aspekt võimust võtma. See hakkaks teatud funktsioone seostama kindla tulemusega. Näiteks karvased ämblikud on tõenäoliselt tarantlid ja ka suuremad ämblikud. Nii et kui ilmub uus suur ja karvane ämblik, määratakse talle suurem tõenäosus olla tarantel. Pange tähele, me töötame endiselt tõenäosustega, seda seetõttu, et me töötame oma olemuselt tõenäosusliku algoritmiga.

Õppimisosa töötab tõenäosuste muutmisega. Esialgu määratakse algoritm üksikisikutele juhuslikult "liigi" siltide määramisega, tehes juhuslikke seoseid, olles "karvane" ja "issi pikad jalad". Kui see teeb sellise korrelatsiooni ja koolituse andmekogum ei tundu sellega nõus olevat, siis see oletus tühistatakse.

Samamoodi muutub korrelatsioon mitme näite abil hästi toimivaks iga korraga. See tõe poole komistamise meetod on märkimisväärselt tõhus tänu paljudele matemaatilistele nüanssidele, mille pärast algajana ei tahaks muretseda.

TensorFlow ja koolitage oma lille klassifikaatorit

TensorFlow viib masinõppe idee veelgi kaugemale. Ülaltoodud näites vastutasite nende omaduste määramise eest, mis eristavad ühte ämblikuliiki teisest. Pidime hoolega mõõtma üksikuid ämblikke ja looma sadu selliseid rekordeid.

Kuid me saame paremini hakkama, pakkudes algoritmile lihtsalt toored pildiandmed, võime lasta algoritmil leida mustreid ja mõista pildi kohta erinevaid asju, näiteks pildil olevate kujundite äratundmist, seejärel mõista, mis on erinevate pindade tekstuur, värv , nii edasi ja nii edasi. See on arvutinägemise algusmõiste ja saate seda kasutada ka muud tüüpi sisendite jaoks, näiteks helisignaalide jaoks ja hääletuvastuse algoritmi koolitamiseks. Kõik see kuulub katusmõiste „Sügav õppimine” alla, kus masinõpe viiakse loogilisse äärmusesse.

Seda üldist mõistete kogumit saab siis spetsialiseerida paljude lillepiltide käsitlemisel ja nende kategoriseerimisel.

Allpool toodud näites kasutame Python2-d.7 kasutajaliidest TensorFlow'iga ja me kasutame TensorFlow installimiseks pipi (mitte pip3). Python 3 tugi on endiselt natuke lollakas.

Oma piltide klassifikaatori loomiseks installime selle kõigepealt TensorFlow abil pip:

$ pip install tensorflow

Järgmisena peame kloonima luuletajate tensorivoog-2 git hoidla. See on tõesti hea koht alustamiseks kahel põhjusel:

  1. See on lihtne ja hõlpsasti kasutatav
  2. See tuleb teatud määral eelnevalt koolitatud. Näiteks on lillede klassifikaator juba koolitatud mõistma, millist tekstuuri ta vaatab ja milliseid kujundeid vaatab, nii et see on arvutuslikult vähem intensiivne.

Hangi hoidla:

$ giti kloon https: // github.com / googlecodelabs / tensorflow-for-luuletajate-2
$ cd tensorflow-luuletajatele-2

See saab olema meie töökataloog, nii et kõik käsud tuleks edaspidi väljastada selle seest.

Peame ikkagi koolitama lillede äratundmise konkreetse probleemi algoritmi, selleks vajame koolitusandmeid, nii et võtame selle:

$ curl http: // allalaadimine.tensorivool.org / example_images / flower_photos.tgz
| tar xz -C tf_failid

Kataloog… ./tensorflow-for-luuletajate-2 / tf_files sisaldab tonni neid pilte, mis on korralikult märgistatud ja kasutamiseks valmis. Pilte saab kahel erineval eesmärgil:

  1. ML programmi koolitamine
  2. ML programmi testimine

Saate kontrollida kausta sisu tf_files ja siin leiate, et me kitsendame ainult 5 kategooriat lilli, nimelt karikakrad, tulbid, päevalilled, võilill ja roosid.

Mudeli koolitamine

Treeninguprotsessi saate alustada, seadistades kõigepealt järgmised konstandid kõigi sisendkujutiste standardsuuruses suuruse muutmiseks ja kerge mobenet-arhitektuuri abil:

$ IMAGE_SIZE = 224
$ ARCHITECTURE = "mobilenet_0.50 _ $ IMAGE_SIZE "

Seejärel kutsuge käsk käivitades pythoni skript:

$ python -m skriptid.ümberõppima \
--pudelikaela_dir = tf_files / kitsaskohad \
--how_many_training_steps = 500 \
--model_dir = tf_files / models / \
--summaries_dir = tf_files / training_summaries / "$ ARCHITECTURE" \
--output_graph = tf_files / ümberõppinud_graafik.pb \
--väljundsildid = tf_failid / ümberõppinud sildid.txt \
--arhitektuur = "$ ARCHITECTURE" \
--image_dir = tf_files / lillefotod

Kuigi siin on palju valikuid, määrab enamik neist teie sisendandmete kataloogid ja iteratsiooni arvu ning väljundfailid, kuhu uue mudeli teave salvestatakse. Keskpärase sülearvutiga töötamiseks ei tohiks kuluda kauem kui 20 minutit.

Kui skript on lõpetanud nii koolituse kui ka testimise, annab see teile koolitatud mudeli täpsuse hinnangu, mis meie puhul oli veidi suurem kui 90%.

Koolitatud mudeli kasutamine

Olete nüüd valmis seda mudelit kasutama lille uue pildi kuvamiseks. Kasutame seda pilti:

Päevalille nägu on vaevu nähtav ja see on meie mudeli jaoks suur väljakutse:

Selle pildi saamiseks Wikimedia commons'ist kasutage wget:

$ wget https: // üleslaadimine.wikimedia.org / wikipedia / commons / 2/28 / Päevalille_pea_2011_G1.jpg
$ mv Päevalill_pea_2011_G1.jpg tf_files / tundmatu.jpg

See salvestatakse kui teadmata.jpg all tf_files alamkataloog.

Nüüd tõe hetkeks näeme, mida on meie mudel selle pildi kohta öelnud.Selleks kutsume üles silt_pilt skript:

$ python -m skriptid.silt_pilt --graaf = tf_failid / ümberõppinud graafik.lk --
image = tf_files / tundmatu.jpg

Sa saaksite sarnase väljundi:

Lilleliigi kõrval olevad numbrid tähistavad tõenäosust, et meie tundmatu pilt kuulub sellesse kategooriasse. Näiteks on see 98.04% on kindel, et pilt on päevalillest ja see on ainult 1.37% tõenäosus, et see on roos.

Järeldus

Isegi väga keskpäraste arvutuslike ressursside korral näeme piltide tuvastamisel hämmastavat täpsust. See näitab selgelt TensorFlow võimsust ja paindlikkust.

Siit saate alustada katsetamist mitmesuguste muude sisenditega või proovida Pythoni ja TensorFlow abil omaenda erinevat rakendust kirjutada. Kui soovite natuke paremini teada saada masinõppe sisemist tööd, on siin interaktiivne viis seda teha.

Kuidas muuta hiirekursori ja kursori suurust, värvi ja skeemi Windows 10-s
Windows 10 hiirekursor ja kursor on operatsioonisüsteemi väga olulised aspektid. Seda võib öelda ka teiste opsüsteemide kohta, nii et tegelikult pole ...
Tasuta ja avatud lähtekoodiga mängumootorid Linuxi mängude arendamiseks
See artikkel hõlmab loetelu tasuta ja avatud lähtekoodiga mängumootoritest, mida saab kasutada 2D- ja 3D-mängude arendamiseks Linuxis. Selliseid mängu...
Tomb Raider for Linuxi õpetus
Shadow of the Tomb Raider on kaheteistkümnes täiendus seeria Tomb Raider - tegevus- ja seiklusmängude frantsiisile, mille on loonud Eidos Montreal. Ni...