„TensorFlow“

Darbo su „TensorFlow“ pradžia

Darbo su „TensorFlow“ pradžia
„TensorFlow“ yra „Google“ smegenų vaikas, o jo esmė yra skaitmeninio skaičiavimo biblioteka. Jis parašytas C / C ++ ir turi labai lanksčią API. Ši API gali būti sąsaja su „Python“ sąsaja, kad galėtumėte parašyti mažus „Python“ kodo fragmentus, kad išspręstumėte sudėtingas problemas. Lanksti ir nuosekli API taip pat leidžia kūrėjams naudoti tą patį „front-end“ kodą paleisti įvairiose platformose, tokiose kaip „Nvidia“ GPU, bendrosios paskirties procesoriuose ir net mobiliuosiuose bei įterptuosiuose įrenginiuose, kurių kiekviena iš jų yra labai skirtinga.

„TensorFlow“ rado didžiulį naudojimąsi mašininio mokymosi srityje būtent todėl, kad mašininis mokymasis apima daugybę skaičių ir yra naudojamas kaip apibendrinta problemų sprendimo technika. Nors su juo bendrausime naudodami „Python“, jis turi kitų kalbų, pvz., „Go“, „Node“, sąsajas.js ir net C #.

„Tensorflow“ yra tarsi juoda dėžutė, slepianti visas matematines subtilybes, o kūrėjas tiesiog iškviečia tinkamas funkcijas problemai išspręsti. Bet kokia problema?

Mašinų mokymasis (ML)

Tarkime, kad jūs projektuojate botą žaisti šachmatais. Dėl šachmatų sukūrimo būdo, figūrų judėjimo būdo ir tiksliai apibrėžto žaidimo tikslo yra visai įmanoma parašyti programą, kuri žaistų šį žaidimą nepaprastai gerai. Tiesą sakant, tai šachmatais pergudrautų visą žmoniją. Jis tiksliai žinotų, kokį žingsnį reikia atlikti, atsižvelgiant į visų lentos dalių būklę.

Tačiau tokia programa gali žaisti tik šachmatais. Žaidimo taisyklės yra įtrauktos į kodo logiką, ir viskas, ką programa daro, yra ta logika vykdoma griežtai ir tiksliau nei bet kuris žmogus galėtų. Tai nėra bendros paskirties algoritmas, kurį galite naudoti kurdami bet kurį žaidimo robotą.

Mokantis mašinomis, paradigma keičiasi ir algoritmai tampa vis labiau bendro naudojimo.

Idėja yra paprasta, ji prasideda apibrėžiant klasifikavimo problemą. Pavyzdžiui, norite automatizuoti vorų rūšių nustatymo procesą. Jums žinomos rūšys yra įvairios klasės (nereikia painioti su taksonominėmis klasėmis), o algoritmo tikslas yra surūšiuoti naują nežinomą vaizdą į vieną iš šių klasių.

Pirmas žmogaus žingsnis būtų nustatyti įvairių atskirų vorų ypatybes. Pateiksime duomenis apie atskirų vorų ilgį, plotį, kūno masę ir spalvą bei rūšis, kurioms jie priklauso:

Ilgis Plotis Mišios Spalva Tekstūra Rūšis
5 3 12 Ruda lygus Tėtuko ilgos kojos
10 8 28 Ruda-juoda plaukuotas Tarantula

Didelė tokių individualių vorinių duomenų kolekcija bus naudojama algoritmui „mokyti“, o kitas panašus duomenų rinkinys bus naudojamas algoritmui išbandyti, kad pamatytumėte, kaip gerai jis veikia prieš naują informaciją, su kuria dar niekada nebuvo susidūręs, bet kurią mes jau žinome atsakymas į.

Algoritmas bus paleistas atsitiktiniu būdu. Tai reiškia, kad kiekvienas voras, neatsižvelgiant į jo ypatybes, būtų priskirtas bet kuriai rūšiai. Jei mūsų duomenų rinkinyje yra 10 skirtingų rūšių, šiam naiviam algoritmui dėl vien tik sėkmės būtų suteikta teisinga klasifikacija maždaug 1/10 laiko.

Bet tada mašininio mokymosi aspektas pradėtų viršų. Tai pradėtų susieti tam tikrus bruožus su tam tikru rezultatu. Pavyzdžiui, plaukuoti vorai greičiausiai yra tarantulai, taip pat ir didesni vorai. Taigi, kai pasirodys naujas didelis ir plaukuotas voras, jam bus suteikta didesnė tikimybė būti tarantulu. Atkreipkite dėmesį, mes vis dar dirbame su tikimybėmis, taip yra todėl, kad mes savaime dirbame su tikimybiniu algoritmu.

Mokymosi dalis veikia keičiant tikimybes. Iš pradžių algoritmas prasideda atsitiktinai priskiriant „rūšies“ etiketes asmenims, darant atsitiktines koreliacijas, tokias kaip „plaukuotas“ ir „tėtis ilgomis kojomis“. Kai ji daro tokią koreliaciją ir atrodo, kad mokymo duomenų rinkinys su ja nesutinka, ši prielaida atmetama.

Panašiai, kai koreliacija gerai veikia per kelis pavyzdžius, ji kaskart stiprėja. Šis suklupimo tiesos metodas yra nepaprastai efektyvus dėl daugybės matematinių subtilybių, dėl kurių jūs, kaip pradedantysis, nenorėtumėte jaudintis.

„TensorFlow“ ir mokykite savo gėlių klasifikatorių

„TensorFlow“ dar labiau pristato mokymąsi mašinomis. Ankstesniame pavyzdyje jūs buvote atsakingas už savybių, išskiriančių vieną vorų rūšį nuo kitos, nustatymą. Turėjome kruopščiai išmatuoti atskirus vorus ir sukurti šimtus tokių įrašų.

Bet mes galime padaryti geriau, pateikdami algoritmui tik neapdorotus vaizdo duomenis, galime leisti algoritmui rasti modelius ir suprasti įvairius dalykus apie vaizdą, pavyzdžiui, atpažinti paveikslėlyje esančias formas, tada suprasti, kokia yra skirtingų paviršių tekstūra, spalva , Ir taip toliau. Tai yra kompiuterio regėjimo pradžios samprata, kurią galite naudoti ir kitokio tipo įvestims, pvz., Garso signalams ir balso atpažinimo algoritmo mokymui. Visa tai patenka į „gilaus mokymosi“ terminą, kai mašininis mokymasis perkeliamas į loginį kraštutinumą.

Tada šis apibendrintas sąvokų rinkinys gali būti specializuotas, kai reikia nagrinėti daugybę gėlių vaizdų ir juos suskirstyti į kategorijas.

Žemiau pateiktame pavyzdyje naudosime „Python2“.7 sąsajos su „TensorFlow“ sąsaja ir „TensorFlow“ įdiegsime naudodami „pip“ (ne „pip3“). „Python 3“ palaikymas vis dar yra šiek tiek klaidingas.

Norėdami sukurti savo vaizdų klasifikatorių, pirmiausia naudokitės „TensorFlow“ pip:

$ pip įdiegti tensorflow

Toliau turime klonuoti tensorflow-poetams-2 „git“ saugykla. Tai yra tikrai gera vieta pradėti dėl dviejų priežasčių:

  1. Tai paprasta ir paprasta naudoti
  2. Tai yra iš anksto apmokyta iki tam tikro laipsnio. Pavyzdžiui, gėlių klasifikatorius jau yra išmokytas suprasti, kokią tekstūrą jis žiūri ir į kokias formas, todėl skaičiavimais jis yra mažiau intensyvus.

Įsigykime saugyklą:

$ git klonas https: // github.com / googlecodelabs / tensorflow-poetams-2
$ cd „tensorflow“ poetams-2

Tai bus mūsų darbo katalogas, todėl nuo šiol visos komandos turėtų būti išleistos iš jo.

Mes vis tiek turime išmokyti algoritmą konkrečiai gėlių atpažinimo problemai, tam mums reikia mokymo duomenų, todėl sužinokime:

$ curl http: // atsisiųsti.tensorflow.org / example_images / flower_photos.tgz
| degutas xz -C tf_files

Katalogas… ./tensorflow-for-poet-2 / tf_files yra daugybė šių vaizdų, tinkamai paženklintų ir paruoštų naudoti. Vaizdai bus skirti dviem skirtingiems tikslams:

  1. ML programos mokymas
  2. ML programos testavimas

Galite patikrinti aplanko turinį tf_files ir čia rasite, kad mes susiauriname tik iki 5 gėlių kategorijų, ty ramunėlių, tulpių, saulėgrąžų, kiaulpienių ir rožių.

Mokyti modelį

Mokymo procesą galite pradėti pirmiausia nustatydami šias konstantas, kad pakeistumėte visų įvesties vaizdų dydį į standartinį dydį, ir naudodami lengvą mobilenet architektūrą:

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

Tada paleiskite komandą python scenarijų:

$ python -m scenarijai.perkvalifikuoti \
--butelio kaklelio_dir = tf_files / buteliukai \
--how_many_training_steps = 500 \
--model_dir = tf_files / models / \
--summaries_dir = tf_files / training_summaries / "$ ARCHITECTURE" \
--output_graph = tf_files / perkvalifikuota_graph.pb \
--output_labels = tf_files / perkvalifikuotos etiketės.txt \
--architektūra = "$ ARCHITECTURE" \
--image_dir = tf_files / flower_photos

Nors čia yra daugybė parinkčių, dauguma jų nurodo jūsų įvesties duomenų katalogus ir iteracijos skaičių, taip pat išvesties failus, kuriuose būtų saugoma informacija apie naują modelį. Tai neturėtų užtrukti ilgiau nei 20 minučių, kad veiktų vidutiniškai nešiojamu kompiuteriu.

Kai scenarijus baigs mokymą ir testavimą, gausite apmokyto modelio tikslumą, kuris mūsų atveju buvo šiek tiek didesnis nei 90%.

Naudojant apmokytą modelį

Dabar esate pasirengę naudoti šį modelį atpažindami bet kokį naują gėlės vaizdą. Mes naudosime šį vaizdą:

Saulėgrąžos veidas yra vos matomas, ir tai yra didelis iššūkis mūsų modeliui:

Norėdami gauti šį vaizdą iš „Wikimedia“ bendrų vietų, naudokite „wget“:

$ wget https: // įkelti.wikimedia.org / wikipedia / commons / 2/28 / Saulėgrąžų_galva_2011_G1.JPG
$ mv Saulėgrąžos_galva_2011_G1.JPG tf_files / nežinoma.JPG

Jis išsaugomas kaip nežinoma.JPG pagal tf_files pakatalogis.

Tiesos akimirką pamatysime, ką mūsų modelis sako apie šį vaizdą.Norėdami tai padaryti, mes pasitelkiame label_image scenarijus:

$ python -m scenarijai.label_image --graph = tf_files / perkvalifikuota_graph.pb --
image = tf_files / nežinoma.JPG

Jūs gautumėte panašų išėjimą:

Skaičiai šalia gėlių tipo rodo tikimybę, kad mūsų nežinomas vaizdas priklauso tai kategorijai. Pavyzdžiui, tai 98.04% įsitikinę, kad saulėgrąžos vaizdas yra tik 1.37% tikimybė, kad tai bus rožė.

Išvada

Net turėdami labai vidutinius skaičiavimo išteklius, matome stulbinantį vaizdų identifikavimo tikslumą. Tai aiškiai parodo „TensorFlow“ galią ir lankstumą.

Nuo šiol galite pradėti eksperimentuoti su įvairiais kitais įvestimis arba pabandyti pradėti rašyti savo skirtingą programą naudodami „Python“ ir „TensorFlow“. Jei norite šiek tiek geriau sužinoti apie mašininio mokymosi vidinį darbą, tai galite atlikti interaktyviu būdu.

Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...
Atvirojo kodo komercinių žaidimų variklių uostai
Nemokami atvirojo kodo ir įvairių platformų žaidimų varikliai gali būti naudojami žaidžiant senus ir kai kuriuos gana naujus žaidimų pavadinimus. Šiam...
Geriausi „Linux“ komandinės eilutės žaidimai
Komandų eilutė yra ne tik jūsų didžiausias sąjungininkas naudojant „Linux“, bet ir pramogų šaltinis, nes ją galite naudoti norėdami žaisti daug įdomių...