Mis on TensorFlow? Kuidas see töötab? Sissejuhatus & Architektuur
Alustame seda õpetust TensorFlow tutvustusega:
Mis on TensorFlow?
TensorFlow on avatud lähtekoodiga täielik platvorm masinõppe rakenduste loomiseks. See on sümboolne matemaatika raamatukogu, mis kasutab andmevoogu ja diferentseeritavat programmeerimist erinevate ülesannete täitmiseks, mis on keskendunud sügavate närvivõrkude treenimisele ja järeldustele. See võimaldab arendajatel luua masinõpperakendusi, kasutades erinevaid tööriistu, teeke ja kogukonna ressursse.
Praegu on maailma kuulsaim süvaõppe raamatukogu Google's TensorFlow. Google Toode kasutab masinõpet kõigis oma toodetes otsingumootori, tõlke, piltide subtiitrite või soovituste täiustamiseks.
TensorFlow näide
Konkreetse näite toomiseks, Google Tehisintellekti abil saavad kasutajad kogeda kiiremat ja täpsemat otsingukogemust. Kui kasutaja sisestab otsinguribale märksõna, Google annab soovituse, mis võiks olla järgmine sõna.

Google soovib kasutada masinõpet, et oma tohutuid andmekogumeid ära kasutada ja pakkuda kasutajatele parimat kogemust. Masinõpet kasutavad kolm erinevat gruppi:
- Uurijad
- Andmeteadlased
- Programmeerijad
Nad kõik saavad kasutada sama tööriistakomplekti, et teha koostööd ja parandada oma tõhusust.
Google mitte ainult ei oma andmeid; neil on maailma kõige massiivsem arvuti, seega ehitati Tensor Flow skaleerimiseks. TensorFlow on teek, mille on välja töötanud Google Brain Team kiirendab masinõpet ja süvaneuraalvõrkude uurimist.
See loodi töötama mitme CPU või GPU ja isegi mobiilse operatsioonisüsteemiga ning sellel on mitu ümbrist mitmes keeles, näiteks Python, C++ or Java.
TensorFlow ajalugu
Paar aastat tagasi hakkas süvaõpe tohutu hulga andmete töötlemisel kõiki teisi masinõppe algoritme edestama. Google nägi, et saab neid sügavaid närvivõrke oma teenuste täiustamiseks kasutada:
- Gmail
- Foto
- Google otsingumootor
Nad loovad raamistiku nimega Tensorivoog võimaldada teadlastel ja arendajatel AI mudeli kallal koostööd teha. Kui see on välja töötatud ja skaleeritud, saavad paljud inimesed seda kasutada.
See avalikustati esmakordselt 2015. aasta lõpus, esimene stabiilne versioon aga ilmus 2017. aastal. See on avatud lähtekoodiga Apache avatud lähtekoodi litsentsi alusel. Saate seda kasutada, muuta ja muudetud versiooni tasu eest levitada ilma midagi maksmata. Google.
Järgmisena selles TensorFlow süvaõppe õpetuses õpime tundma TensorFlow arhitektuuri ja kuidas TensorFlow töötab.
Kuidas TensorFlow töötab
TensorFlow võimaldab teil koostada andmevoo graafikuid ja struktuure, et määratleda, kuidas andmed graafikus liiguvad, võttes sisendid mitmemõõtmelise massiivina, mida nimetatakse Tensoriks. See võimaldab teil koostada nende sisenditega tehtavate toimingute vooskeemi, mis läheb ühes otsas ja teises otsas väljundina.
TensorFlow Architektuur
Tensorflow arhitektuur koosneb kolmest osast:
- Andmete eeltöötlemine
- Ehitage mudel
- Treenige ja hinnake mudelit
Seda nimetatakse Tensorflowks, kuna see võtab sisendi mitmemõõtmelise massiivina, tuntud ka kui tenorid. Saate ehitada omamoodi vooskeem toimingutest (nimetatakse graafikuks), mida soovite selle sisendiga teha. Sisend läheb ühest otsast sisse ja seejärel voolab see läbi mitme toimingu süsteemi ja väljub teisest otsast väljundina.
Seetõttu nimetatakse seda TensorFlow, kuna sellesse sisenev tensor voolab läbi operatsioonide loendi ja seejärel väljub see teiselt poolt.
Kus saab Tensorflow joosta?
TensorFlow riistvara ja tarkvara nõuded saab liigitada
Arendusfaas: see on siis, kui treenite režiimi. Koolitus toimub tavaliselt lauaarvutis või sülearvutis.
Käitusfaas või järeldusfaas: kui treening on lõpetatud, saab Tensorflow'i käivitada paljudel erinevatel platvormidel. Saate seda käivitada
- Töölaual töötamine Windows, macOS või Linux
- Pilv kui veebiteenus
- Mobiilseadmed nagu iOS ja Android
Saate seda treenida mitmel masinal ja seejärel kasutada seda teisel masinal, kui teil on väljaõpetatud mudel.
Mudelit saab koolitada ja kasutada nii GPU-del kui ka CPU-del. GPU-d olid algselt mõeldud videomängude jaoks. 2010. aasta lõpus leidsid Stanfordi teadlased, et GPU oli ka maatriksoperatsioonides ja algebras väga hea, nii et see muudab need selliste arvutuste tegemiseks väga kiireks. Süvaõpe põhineb suurel osal maatriksikorrutamisest. TensorFlow on maatriksi korrutamise arvutamisel väga kiire, kuna see on sisse kirjutatud C++. Kuigi seda rakendatakse aastal C++, TensorFlow'le pääseb juurde ja seda saab juhtida peamiselt teistes keeltes, Python.
Lõpuks on TensorFlow oluline omadus TensorBoard. The Tensorboard võimaldab graafiliselt ja visuaalselt jälgida TensorFlow tegemist.
TensorFlow komponendid
pinguti
Tensorflow nimi on otseselt tuletatud selle põhiraamistikust: pinguti. Tensorflow'is hõlmavad kõik arvutused tensoreid. Tensor on a vektor or maatriks n-mõõtmeline, mis esindab igat tüüpi andmeid. Kõik tensori väärtused sisaldavad identset andmetüüpi teadaoleva (või osaliselt teadaoleva) andmetüübiga kujundada. Andmete kuju on maatriksi või massiivi mõõtmed.
Tensor võib tuleneda sisendandmetest või arvutuse tulemusest. TensorFlow's tehakse kõik toimingud sees a graafik. Graafik on arvutuste kogum, mis toimub järjestikku. Iga toimingut nimetatakse an op sõlm ja on omavahel ühendatud.
Graafik kirjeldab toimingud ja sõlmedevahelised ühendused. Väärtusi see aga ei kuva. Sõlmede serv on tensor, st viis operatsiooni andmetega täitmiseks.
Graafikud
TensorFlow kasutab graafiku raamistikku. Graafik koondab ja kirjeldab kõiki koolituse käigus tehtud seeriaarvutusi. Graafikul on palju eeliseid:
- Seda tehti mitme CPU või GPU ja isegi mobiilse operatsioonisüsteemiga töötamiseks
- Graafiku kaasaskantavus võimaldab säilitada arvutusi koheseks või hilisemaks kasutamiseks. Graafiku saab salvestada, et seda tulevikus täita.
- Kõik graafikul olevad arvutused tehakse tensorite ühendamise teel
- Tensoril on sõlm ja serv. Sõlm kannab matemaatilist operatsiooni ja toodab lõpp-punktide väljundeid. Servad ja servad selgitavad sõlmede vahelisi sisend- ja väljundsuhteid.
Miks on TensorFlow populaarne?
TensorFlow on kõigist parim raamatukogu, kuna see on loodud kõigile juurdepääsetavaks. Tensorflow teek sisaldab erinevat API-d, mis on ehitatud laiaulatuslikule süvaõppe arhitektuurile, nagu CNN või RNN. TensorFlow põhineb graafiku arvutamisel; see võimaldab arendajal visualiseerida närvivõrgu ehitamist Tensorboadiga. See tööriist on abiks programmi silumisel. Lõpuks on Tensorflow loodud laiaulatuslikuks kasutuselevõtuks. See töötab CPU-l ja GPU-l.
Tensorflow kelltracVõrreldes teiste süvaõppe raamistikega on see GitHubis kõige populaarsem.
TensorFlow Algorithms
Allpool on toodud TensorFlow toetatud algoritmid:
Praegu on TensorFlow 1.10-l sisseehitatud API:
- Lineaarne regressioon: tf.estimator.LinearRegressor
- Klassifikatsioon:tf.estimator.LinearClassifier
- Süvaõppe klassifikatsioon: tf.estimator.DNNClassifier
- Sügav õppimise kustutamine ja sügav: tf.estimator.DNNLinearCombinedClassifier
- Booster tree regressioon: tf.estimator.BoostedTreesRegressor
- Tõhustatud puude klassifikatsioon: tf.estimator.BoostedTreesClassifier
Kuidas TensorFlow arvutused töötavad
import numpy as np import tensorflow as tf
Kahel esimesel koodireal oleme importinud tensorflow kui tf. Koos Python, on levinud tava kasutada raamatukogu lühinime. Eeliseks on vältida teegi täisnime tippimist, kui me seda kasutama peame. Näiteks saame importida tensorflow kui tf ja kutsuda tf, kui tahame kasutada tensorflow funktsiooni
Harjutame Tensorflow elementaarset töövoogu lihtsate TensorFlow näidetega. Koostame arvutusgraafiku, mis korrutab kaks arvu kokku.
Näites korrutame X_1 ja X_2 koos. Tensorflow loob toimingu ühendamiseks sõlme. Meie näites nimetatakse seda korrutamiseks. Kui graafik on kindlaks määratud, korrutavad Tensorflow arvutusmootorid X_1 ja X_2.

Lõpuks käivitame TensorFlow seansi, mis käivitab arvutusgraafiku väärtustega X_1 ja X_2 ning prindib korrutamise tulemuse.
Määratleme sisendsõlmed X_1 ja X_2. Kui loome Tensorflow's sõlme, peame valima, millist sõlme luua. X1 ja X2 sõlmed on kohatäite sõlm. Kohatäide määrab uue väärtuse iga kord, kui arvutame. Loome need TF-punkti kohatäitesõlmena.
1. samm: määrake muutuja
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
Kohatäitesõlme loomisel peame sisestama siia numbrite lisamise andmetüübi, et saaksime kasutada ujukoma andmetüüpi, kasutame tf.float32. Peame sellele sõlmele ka nime andma. See nimi kuvatakse, kui vaatame meie mudeli graafilisi visualiseerimisi. Nimetagem see sõlm X_1, sisestades parameetri nimega nimi väärtusega X_1 ja nüüd defineerime X_2 samamoodi. X_2.
2. samm: määrake arvutus
multiply = tf.multiply(X_1, X_2, name = "multiply")
Nüüd saame määratleda sõlme, mis teeb korrutamistoimingu. Tensorflow's saame seda teha, luues sõlme tf.multiply.
Me edastame sõlmed X_1 ja X_2 korrutamissõlmele. See käsib tensorflow'l need sõlmed arvutusgraafikus siduda, seega palume tal tõmmata väärtused x-ist ja y-st ning korrutada tulemus. Anname korrutamissõlmele ka nimetuse korrutamine. See on meie lihtsa arvutusgraafiku kogu määratlus.
3. samm: viige toiming läbi
Toimingute tegemiseks graafikus peame looma seansi. Tensorflow's teeb seda tf.Session(). Nüüd, kui meil on seanss, saame paluda seansil käivitada toiminguid meie arvutusgraafikus, kutsudes seansi. Arvutuse käivitamiseks peame kasutama käsku run.
Kui liitmise toiming käivitub, näeb see, et see peab haarama sõlmede X_1 ja X_2 väärtused, seega peame sisestama ka X_1 ja X_2 väärtused. Seda saame teha, esitades parameetri feed_dict. Anname X_1,2,3 jaoks edasi väärtuse 1 ja X_4,5,6 jaoks 2.
Tulemused trükime trükiga (tulemus). 4×10, 18×1 ja 4×2 puhul peaksime nägema 5, 3 ja 6
X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")
multiply = tf.multiply(X_1, X_2, name = "multiply")
with tf.Session() as session:
result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
print(result)
[ 4. 10. 18.]
Andmete TensorFlow'sse laadimise võimalused
Esimene samm enne treeningut a masinõppe algoritm on andmete laadimine. Andmete laadimiseks on kaks tavalist viisi:
1. Laadige andmed mällu: See on kõige lihtsam meetod. Laadite kõik oma andmed mällu ühe massiivina. Võite kirjutada a Python kood. Need koodiread pole Tensorflowga seotud.
2. Tensorflow andmekonveier: Tensorflow'l on sisseehitatud API, mis aitab teil andmeid laadida, toimingut sooritada ja masinõppe algoritmi hõlpsalt toita. See meetod töötab väga hästi, eriti kui teil on suur andmestik. Näiteks on teada, et pildikirjed on tohutud ja ei mahu mällu. Andmekonveier haldab mälu ise
Millist lahendust kasutada?
Laadige andmed mällu
Kui teie andmekogum pole liiga suur, st alla 10 gigabaidi, võite kasutada esimest meetodit. Andmed mahuvad mällu. CSV-failide importimiseks saate kasutada kuulsat Panda raamatukogu. Lisateavet pandade kohta leiate järgmisest õpetusest.
Andmete laadimine Tensorflow torujuhtmega
Teine meetod töötab kõige paremini, kui teil on suur andmestik. Näiteks kui teil on 50 gigabaidine andmekogum ja teie arvutil on ainult 16 gigabaiti mälu, jookseb masin kokku.
Sellises olukorras peate ehitama Tensorflow torujuhtme. Torujuhe laadib andmed partiidena või väikese osana. Iga partii lükatakse torujuhtmesse ja on koolituseks valmis. Torujuhtme ehitamine on suurepärane lahendus, kuna see võimaldab kasutada paralleelset andmetöötlust. See tähendab, et Tensorflow treenib mudelit mitme protsessori vahel. See soodustab arvutusi ja võimaldab treenida võimsat närvivõrku.
Järgmistes õpetustes näete, kuidas luua oma närvivõrgu toitmiseks märkimisväärne torujuhe.
Lühidalt, kui teil on väike andmestik, saate Pandase teegi abil andmed mällu laadida.
Kui teil on suur andmestik ja soovite kasutada mitut protsessorit, on teil Tensorflow torujuhtmega mugavam töötada.
Kuidas luua TensorFlow torujuhet
Siin on sammud TensorFlow torujuhtme loomiseks.
Eelmises näites lisasime käsitsi kolm väärtust X_1 ja X_2 jaoks. Nüüd näeme, kuidas andmeid Tensorflow'i laadida:
Samm 1) Looge andmed
Esiteks kasutame numpy raamatukogu kahe juhusliku väärtuse genereerimiseks.
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
[[0.8835775 0.23766977]]
2. samm) Looge kohatäide
Nagu eelmises näites, loome kohahoidja nimega X. Peame selgelt määrama tensori kuju. Juhul, kui laadime massiivi ainult kahe väärtusega. Kujundi saame kirjutada kujul shape=[1,2]
# using a placeholder x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
3. samm) Määratlege andmestiku meetod
Järgmiseks peame määratlema andmestiku, kuhu saame sisestada kohatäitja x väärtuse. Peame kasutama meetodit tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
4. samm) Looge torujuhe
Neljandas etapis peame lähtestama torujuhtme, kuhu andmed liiguvad. Peame looma iteraatori koos funktsiooniga make_initializable_iterator. Nimetame selle iteraatoriks. Seejärel peame kutsuma selle iteraatori, et anda järgmine andmekogum, get_next. Nimetame selle sammu get_next. Pange tähele, et meie näites on ainult üks andmepakett ainult kahe väärtusega.
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
Samm 5) Tehke toiming
Viimane samm on sarnane eelmisele näitele. Algatame seansi ja käivitame operatsiooni iteraatori. Toidame feed_dict väärtusega, mille genereerib tuim. Need kaks väärtust täidavad kohatäite x. Seejärel käivitame tulemuse printimiseks käsu get_next.
with tf.Session() as sess:
# feed the placeholder with data
sess.run(iterator.initializer, feed_dict={ x: x_input })
print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
kokkuvõte
- TensorFlow tähendus: TensorFlow on viimaste aastate kuulsaim süvaõppe raamatukogu. TensorFlow'd kasutav praktik saab luua mis tahes süvaõppestruktuuri, nagu CNN, RNN või lihtne tehisnärvivõrk.
- TensorFlow'i kasutavad enamasti akadeemikud, idufirmad ja suurettevõtted. Google kasutab peaaegu kõiges TensorFlow'i Google igapäevased tooted, sealhulgas Gmail, Foto ja Google Otsingumootor.
- Google Brain meeskond töötas välja TensorFlow'i, et täita lõhe teadlaste ja tootearendajate vahel. 2015. aastal tegid nad TensorFlow'i avalikuks; see on kiiresti populaarsust kogumas. Tänapäeval on TensorFlow süvaõppe teek, millel on GitHubis enim repositooriume.
- Praktikud kasutavad Tensorflow'i, kuna seda on lihtne laialdaselt kasutusele võtta. See on loodud töötama pilves või mobiilseadmetes, nagu iOS ja Android.
Tensorflow töötab seansi jooksul. Iga seanss on määratletud erinevate arvutustega graafikuga. Lihtne näide võib olla arvuga korrutamine. Tensorflow puhul on vaja kolme sammu:
- Määratlege muutuja
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
- Määratlege arvutus
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Tehke operatsioon
with tf.Session() as session:
result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
print(result)
Üks Tensorflow tavapärane praktika on andmete laadimiseks torujuhtme loomine. Kui järgite neid viit sammu, saate andmeid TensorFLow'sse laadida.
- Looge andmed
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
- Looge kohatäide
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Määratlege andmestiku meetod
dataset = tf.data.Dataset.from_tensor_slices(x)
- Loo torujuhe
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Käivitage programm
with tf.Session() as sess:
sess.run(iterator.initializer, feed_dict={ x: x_input })
print(sess.run(get_next))
