TensorFlow

Darba sākšana ar TensorFlow

Darba sākšana ar TensorFlow
TensorFlow ir Google smadzeņu bērns, un tā pamatā ir bibliotēka skaitliskai aprēķināšanai. Tas ir rakstīts C / C ++ un tam ir ļoti elastīga API. Šo API var sasaistīt ar Python priekšgalu, lai jūs varētu rakstīt mazus Python koda fragmentus, lai atrisinātu sarežģītas problēmas. Elastīga un konsekventa API arī ļauj izstrādātājiem izmantot to pašu priekšgala kodu, lai darbotos dažādās platformās, piemēram, Nvidia GPU, vispārējas nozīmes procesoros un pat mobilajās un iegultās ierīcēs, un katra no tām aizmugurē ir ļoti atšķirīga.

TensorFlow ir atradis milzīgu pielietojumu mašīnmācīšanās jomā tieši tāpēc, ka mašīnmācīšanās ir saistīta ar daudzām skaitļiem un tiek izmantota kā vispārināta problēmu risināšanas tehnika. Lai gan mēs ar to mijiedarbosimies, izmantojot Python, tam ir priekšpuses citām valodām, piemēram, Go, Node.js un pat C #.

Tensorflow ir kā melna kaste, kas slēpj visus matemātiskos smalkumus tās iekšpusē, un izstrādātājs vienkārši izsauc pareizās funkcijas problēmas risināšanai. Bet kāda problēma?

Mašīnmācība (ML)

Pieņemsim, ka jūs projektējat robotu, lai spēlētu šaha spēli. Sakarā ar šaha izstrādi, figūru pārvietošanos un precīzi definēto spēles mērķi ir pilnīgi iespējams uzrakstīt programmu, kas ārkārtīgi labi spēlētu spēli. Patiesībā tas šahā pārspētu visu cilvēku rasi. Tā precīzi zinātu, kāda kustība tai jāveic, ņemot vērā visu uz kuģa esošo gabalu stāvokli.

Tomēr ar šādu programmu var spēlēt tikai šahu. Spēles noteikumi tiek iekļauti koda loģikā, un viss, ko programma dara, ir izpildīt šo loģiku stingri un precīzāk, nekā jebkurš cilvēks spētu. Tas nav vispārējas nozīmes algoritms, kuru varat izmantot jebkura spēles robota noformēšanai.

Ar mašīnmācīšanos paradigma mainās, un algoritmi kļūst arvien vispārīgāki.

Ideja ir vienkārša, tā sākas ar klasifikācijas problēmas noteikšanu. Piemēram, jūs vēlaties automatizēt zirnekļu sugu noteikšanas procesu. Jums zināmās sugas ir dažādas klases (nejaukt ar taksonomiskām klasēm), un algoritma mērķis ir kārtot jaunu nezināmu attēlu vienā no šīm klasēm.

Pirmais solis cilvēkam būtu noteikt dažādu atsevišķu zirnekļu pazīmes. Mēs sniegsim datus par atsevišķu zirnekļu garumu, platumu, ķermeņa masu un krāsu, kā arī sugām, kurām tie pieder:

Garums Platums Mise Krāsa Tekstūra Sugas
5 3 12 Brūns gluda Tētis Garās kājas
10 8 28 Brūni melns matains Tarantula

Liela šādu individuālu zirnekļdatu datu kolekcija tiks izmantota algoritma "apmācībai", un cita līdzīga datu kopa tiks izmantota algoritma pārbaudei, lai redzētu, cik labi tas darbojas pret jaunu informāciju, ar kuru tā nekad nav saskārusies, bet kuru mēs jau zinām atbilde uz.

Algoritms sāks darboties nejaušināti. Tas nozīmē, ka katrs zirneklis neatkarīgi no tā pazīmēm tiktu klasificēts kā jebkurš no sugām. Ja mūsu datu kopā ir 10 dažādas sugas, tad tīra veiksmes dēļ šim naivajam algoritmam pareiza klasifikācija tiktu piešķirta aptuveni 1/10 laika.

Bet tad mašīnmācīšanās aspekts sāktu pārņemt. Tas sāktu saistīt noteiktas iezīmes ar noteiktu rezultātu. Piemēram, matainie zirnekļi, visticamāk, ir tarantulas, tāpat arī lielākie zirnekļi. Tātad, kad parādās jauns zirneklis, kas ir liels un matains, tam tiks piešķirta lielāka varbūtība būt tarantulam. Ievērojiet, ka mēs joprojām strādājam ar varbūtībām, tas ir tāpēc, ka mēs pēc būtības strādājam ar varbūtības algoritmu.

Mācību daļa darbojas, mainot varbūtības. Sākotnēji algoritms sākas, nejauši piešķirot “sugas” etiķetes indivīdiem, veicot nejaušas korelācijas, piemēram, “matains” un “tēta garas kājas”. Kad tas veic šādu korelāciju un šķiet, ka apmācību datu kopa tam nepiekrīt, šis pieņēmums tiek atcelts.

Līdzīgi, ja korelācija labi darbojas, izmantojot vairākus piemērus, tā katru reizi kļūst stiprāka. Šī klupšanas pa patiesību metode ir ļoti efektīva, pateicoties daudziem matemātiskiem smalkumiem, par kuriem jūs kā iesācējs nevēlaties uztraukties.

TensorFlow un apmāciet savu ziedu klasifikatoru

TensorFlow vēl vairāk aizrauj mašīnmācīšanās ideju. Iepriekš minētajā piemērā jūs bijāt atbildīgs par tādu pazīmju noteikšanu, kas atšķir vienu zirnekļa sugu no citas. Mums bija rūpīgi jāizmēra atsevišķi zirnekļi un jāizveido simtiem šādu ierakstu.

Bet mēs varam darīt labāk, ja algoritmam sniedzam tikai neapstrādātus attēla datus, mēs varam ļaut algoritmam atrast modeļus un saprast dažādas lietas par attēlu, piemēram, atpazīt attēlā redzamās formas, pēc tam saprast, kāda ir dažādu virsmu faktūra, krāsa , tā tālāk un tā tālāk. Šis ir datora redzējuma sākuma jēdziens, un jūs to varat izmantot arī cita veida ievadiem, piemēram, audio signāliem un balss atpazīšanas algoritma apmācībai. Tas viss ietilpst jumta apzīmējumā “dziļa mācīšanās”, kur mašīnmācīšanās tiek novirzīta līdz loģiskajam galam.

Pēc tam šo vispārināto jēdzienu kopumu var specializēties, strādājot ar daudziem ziedu attēliem un tos kategorizējot.

Tālāk sniegtajā piemērā mēs izmantosim Python2.7 saskarne ar TensorFlow, un mēs izmantosim pip (nevis pip3), lai instalētu TensorFlow. Python 3 atbalsts joprojām ir nedaudz kļūdains.

Lai izveidotu pats savu attēlu klasifikatoru, vispirms, izmantojot TensorFlow, instalēsim to, izmantojot pip:

$ pip instalējiet tensorflow

Tālāk mums ir jāklonē dzejnieku tensorflow-2 git krātuve. Šī ir ļoti laba vieta, kur sākt divu iemeslu dēļ:

  1. Tas ir vienkārši un ērti lietojams
  2. Tas nāk iepriekš apmācīts līdz zināmai pakāpei. Piemēram, ziedu klasifikators jau ir apmācīts, lai saprastu, kādu faktūru tas meklē un kādas formas tas izskatās, tāpēc tas ir skaitļošanas ziņā mazāk intensīvs.

Iegūsim repozitoriju:

$ git klons https: // github.com / googlecodelabs / tensorflow-for-poets-2
$ cd tensorflow-dzejniekiem-2

Šis būs mūsu darba katalogs, tāpēc visas komandas no šī brīža būtu jāizdod no tā iekšpuses.

Mums joprojām ir jāapmāca ziedu atpazīšanas īpašās problēmas algoritms, tāpēc mums ir nepieciešami apmācības dati, tāpēc ņemsim to:

$ čokurošanās http: // lejupielādēt.tensorflow.org / example_images / flower_photos.tgz
| darva xz -C tf_files

Katalogs… ./tensorflow-for-poets-2 / tf_files satur tonnu šo attēlu, kas ir pareizi marķēti un gatavi lietošanai. Attēli būs paredzēti diviem dažādiem mērķiem:

  1. ML programmas apmācība
  2. ML programmas pārbaude

Jūs varat pārbaudīt mapes saturu tf_files un šeit jūs atradīsit, ka mēs sašaurināmies tikai līdz 5 ziedu kategorijām, proti, margrietiņām, tulpēm, saulespuķēm, pienenēm un rozēm.

Modeļa apmācība

Apmācības procesu varat sākt, vispirms izveidojot šādas konstantes visu ievades attēlu izmēru maiņai standarta izmērā un izmantojot vieglu mobilenet arhitektūru:

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

Pēc tam izsauciet pitona skriptu, palaižot komandu:

$ python -m skripti.pārkvalificēties \
--bottleneck_dir = tf_files / bottlenecks \
--how_many_training_steps = 500 \
--model_dir = tf_files / models / \
--summaries_dir = tf_files / training_summaries / "$ ARCHITECTURE" \
--output_graph = tf_files / pārkvalificēta_graph.pb \
--output_labels = tf_files / pārkvalificētas_labels.txt \
--arhitektūra = "$ ARCHITECTURE" \
--image_dir = tf_files / flower_photos

Lai gan šeit ir norādītas daudzas opcijas, lielākā daļa no tām norāda jūsu ievades datu direktorijus un atkārtojumu skaitu, kā arī izejas failus, kuros tiktu saglabāta informācija par jauno modeli. Lai to palaistu viduvējā klēpjdatorā, nevajadzētu ilgāk par 20 minūtēm.

Kad skripts būs pabeidzis gan apmācību, gan testēšanu, tas sniegs apmācītā modeļa precizitāti, kas mūsu gadījumā bija nedaudz augstāka par 90%.

Apmācītā modeļa izmantošana

Tagad esat gatavs izmantot šo modeli jebkura jauna zieda attēla atpazīšanai. Mēs izmantosim šo attēlu:

Saulespuķes seja ir tikko redzama, un tas ir liels izaicinājums mūsu modelim:

Lai iegūtu šo attēlu no Wikimedia commons, izmantojiet wget:

$ wget https: // augšupielādēt.wikimedia.org / wikipedia / commons / 2/28 / Saulespuķu_galva_2011_G1.jpg
$ mv Saulespuķu_galva_2011_G1.jpg tf_files / nezināms.jpg

Tas tiek saglabāts kā nezināms.jpg saskaņā tf_files apakšdirektorijs.

Patiesības brīdī mēs redzēsim, ko mūsu modelis saka par šo tēlu.Lai to izdarītu, mēs izmantojam label_image skripts:

$ python -m skripti.label_image --graph = tf_files / pārkvalificēta_graph.pb --
image = tf_files / nezināms.jpg

Jūs saņemsiet līdzīgu produkciju:

Skaitļi blakus ziedu veidam norāda varbūtību, ka mūsu nezināmais attēls pieder šai kategorijai. Piemēram, tas ir 98.04% ir pārliecināti, ka attēls ir saulespuķe un tas ir tikai 1.37% varbūtība, ka tā būs roze.

Secinājums

Pat ar ļoti viduvējiem skaitļošanas resursiem mēs redzam satriecošu precizitāti attēlu identificēšanā. Tas skaidri parāda TensorFlow jaudu un elastību.

Turpmāk jūs varat sākt eksperimentēt ar cita veida ievadiem vai mēģināt sākt rakstīt savu atšķirīgo lietojumprogrammu, izmantojot Python un TensorFlow. Ja vēlaties mazliet labāk uzzināt mašīnmācīšanās iekšējo darbību, šeit tas ir interaktīvs veids, kā to izdarīt.

Instalējiet jaunāko OpenRA stratēģijas spēli Ubuntu Linux
OpenRA ir bezmaksas / bezmaksas reāllaika stratēģijas spēļu dzinējs, kas atjauno agrīnās Vestvudas spēles, piemēram, klasisko Command & Conquer: Red A...
Instalējiet jaunāko Dolphin emulatoru Gamecube un Wii operētājsistēmai Linux
Delfīnu emulators ļauj jums spēlēt izvēlētās Gamecube un Wii spēles Linux personālajos datoros (PC). Tā kā Dolphin Emulator ir brīvi pieejams un atvē...
Kā lietot GameConqueror Cheat Engine Linux
Rakstā ir sniegts ceļvedis par GameConqueror apkrāptu dzinēja izmantošanu Linux. Daudzi lietotāji, kas spēlē spēles operētājsistēmā Windows, bieži izm...