Začnimo to vadnico z uvodom TensorFlow:
Kaj je TensorFlow?
TensorFlow je odprtokodna celovita platforma za ustvarjanje aplikacij strojnega učenja. Je simbolična matematična knjižnica, ki uporablja pretok podatkov in različno programiranje za izvajanje različnih nalog, osredotočenih na usposabljanje in sklepanje globokih nevronskih mrež. Razvijalcem omogoča ustvarjanje aplikacij za strojno učenje z uporabo različnih orodij, knjižnic in virov skupnosti.
Trenutno je najbolj znana knjižnica globokega učenja na svetu Googlov TensorFlow. Googlov izdelek uporablja strojno učenje v vseh svojih izdelkih za izboljšanje iskalnika, prevajanja, podnapisov slik ali priporočil.
Kot konkreten primer lahko uporabniki Googla hitreje in bolj izpopolnijo iskanje z umetno inteligenco. Če uporabnik v iskalno vrstico vnese ključno besedo, Google poda priporočilo o tem, kaj bi lahko bila naslednja beseda.
Google želi s strojnim učenjem izkoristiti njihove množične nabore podatkov in uporabnikom zagotoviti najboljšo izkušnjo. Tri različne skupine uporabljajo strojno učenje:
- Raziskovalci
- Podatkovni znanstveniki
- Programerji.
Vsi lahko uporabljajo isti nabor orodij za medsebojno sodelovanje in izboljšanje njihove učinkovitosti.
Google nima samo podatkov; imajo najmasivnejši računalnik na svetu, zato je bil Tensor Flow narejen po meri. TensorFlow je knjižnica, ki jo je razvila skupina Google Brain Team za pospeševanje strojnega učenja in raziskav globokih nevronskih mrež.
Zasnovan je bil za delovanje na več CPU-jih ali GPU-jih in celo mobilnih operacijskih sistemih in ima več ovojev v več jezikih, kot so Python, C ++ ali Java.
V tej vadnici TensorFlow se boste naučili
- Kaj je TensorFlow?
- Zgodovina TensorFlowa
- Kako deluje TensorFlow
- Arhitektura TensorFlow
- Kje lahko deluje Tensorflow?
- Uvod v komponente TensorFlow
- Zakaj je TensorFlow priljubljen?
- Seznam vidnih algoritmov, ki jih podpira TensorFlow
- Preprost primer TensorFlow
- Možnosti za nalaganje podatkov v TensorFlow
- Ustvari cevovod Tensorflow
Zgodovina TensorFlowa
Pred nekaj leti je globoko učenje začelo prekašati vse druge algoritme strojnega učenja, ko je dalo ogromno podatkov. Google je videl, da lahko za izboljšanje svojih storitev uporablja te globoke nevronske mreže:
- Gmail
- Fotografija
- Googlov iskalnik
Izdelajo ogrodje, imenovano Tensorflow, ki raziskovalcem in razvijalcem omogoča, da sodelujejo na modelu umetne inteligence. Ko je enkrat razvit in razširjen, ga lahko uporablja veliko ljudi.
Prvič je bil objavljen konec leta 2015, prva stabilna različica pa se je pojavila leta 2017. Je odprtokodna pod licenco Apache Open Source. Uporabite ga lahko, spremenite in znova plačate spremenjeno različico, ne da bi kar koli plačali Googlu.
Nato v tej vadnici za globoko učenje TensorFlow bomo spoznali arhitekturo TensorFlow in kako deluje TensorFlow.
Kako deluje TensorFlow
TensorFlow vam omogoča, da zgradite grafe in strukture pretoka podatkov, da določite, kako se podatki premikajo skozi graf, tako da vhode jemljete kot večdimenzionalno matriko, imenovano Tensor. Omogoča vam, da sestavite diagram poteka, ki ga je mogoče izvesti na teh vhodih, ki je na enem koncu in na drugem koncu kot izhod.
Arhitektura TensorFlow
Arhitektura Tensorflow deluje v treh delih:
- Predobdelava podatkov
- Zgradite model
- Izurite in ocenite model
Imenuje se Tensorflow, ker vnos jemlje kot večdimenzionalno matriko, znano tudi kot tenzorji . Na tem vhodu lahko sestavite nekakšen diagram poteka (imenovan graf), ki ga želite izvesti. Vhod vstopi na enem koncu, nato pa teče skozi ta sistem več operacij in prikaže drugi konec kot izhod.
Zato se imenuje TensorFlow, ker tenzor gre vanj, teče skozi seznam operacij, nato pa pride ven na drugo stran.
Kje lahko deluje Tensorflow?
Zahteve po strojni opremi in programski opremi TensorFlow lahko razvrstimo med
Faza razvoja: Takrat trenirate način. Izobraževanje se običajno izvaja na namizju ali prenosnem računalniku.
Zaženi fazo ali fazo sklepanja: Ko je trening končan, lahko Tensorflow izvajamo na več različnih platformah. Lahko ga poganjate naprej
- Namizje s sistemom Windows, macOS ali Linux
- Oblak kot spletna storitev
- Mobilne naprave, kot sta iOS in Android
Lahko ga trenirate na več strojih, nato pa ga lahko izvajate na drugem stroju, ko imate usposobljen model.
Model je mogoče usposobiti in uporabljati tako na grafičnih procesorjih kot CPU-jih. GPU so bili prvotno zasnovani za video igre. Konec leta 2010 so raziskovalci iz Stanforda ugotovili, da je bil GPU zelo dober tudi pri delovanju z matricami in algebri, tako da so zelo hitri za tovrstne izračune. Poglobljeno učenje temelji na množenju matrik. TensorFlow zelo hitro izračuna množenje matric, ker je zapisano v jeziku C ++. Čeprav je implementiran v jeziku C ++, lahko TensorFlow dostopajo in nadzirajo predvsem drugi jeziki, Python.
Končno, pomembna značilnost TensorFlow-a je TensorBoard. TensorBoard omogoča grafično in vizualno spremljanje, kaj počne TensorFlow.
Uvod v komponente TensorFlow
Tensor
Ime Tensorflow neposredno izhaja iz njegovega osnovnega okvira: Tensor . V programu Tensorflow vsi izračuni vključujejo tenzorje. Tenzor je vektor ali matrika n-dimenzij, ki predstavlja vse vrste podatkov. Vse vrednosti v tenzorju imajo enak podatkovni tip z znano (ali delno znano) obliko . Oblika podatkov je dimenzionalnost matrike ali polja.
Tenzor lahko izvira iz vhodnih podatkov ali rezultata izračuna. V programu TensorFlow se vse operacije izvajajo znotraj grafa . Graf je niz izračuna, ki poteka zaporedoma. Vsaka operacija se imenuje op vozlišče in je med seboj povezana.
Graf prikazuje oris in povezave med vozlišči. Vendar vrednosti ne prikaže. Rob vozlišč je tenzor, tj. Način za zapolnitev operacije s podatki.
Grafi
TensorFlow uporablja grafsko ogrodje. Graf zbira in opisuje vse serijske izračune, opravljene med usposabljanjem. Graf ima veliko prednosti:
- To je bilo narejeno za delovanje na več CPU-jih ali GPU-jih in celo mobilnem operacijskem sistemu
- Prenosljivost grafa omogoča ohranitev izračunov za takojšnjo ali kasnejšo uporabo. Graf lahko shranite za izvajanje v prihodnosti.
- Vsi izračuni v grafu so narejeni s povezovanjem tenzorjev
- Tenzor ima vozlišče in rob. Vozlišče izvaja matematično operacijo in ustvarja izhode končnih točk. Robovi robovi pojasnjujejo vhodno / izhodna razmerja med vozlišči.
Zakaj je TensorFlow priljubljen?
TensorFlow je najboljša knjižnica, saj je zgrajena tako, da je dostopna vsem. Knjižnica Tensorflow vključuje različne API-je za vgrajeno arhitekturo globokega učenja, kot sta CNN ali RNN. TensorFlow temelji na izračunu grafov; omogoča razvijalcu, da vizualizira gradnjo nevronske mreže s Tensorboadom. To orodje je koristno za razhroščevanje programa. Nazadnje je Tensorflow zasnovan tako, da ga je mogoče razviti v velikem obsegu. Deluje na CPU in GPU.
Tensorflow privablja največjo priljubljenost na GitHubu v primerjavi z drugimi okviri za poglobljeno učenje.
Seznam vidnih algoritmov, ki jih podpira TensorFlow
Spodaj je seznam podprtih seznamov algoritmov TensorFlow:
Trenutno ima TensorFlow 1.10 vgrajen API za:
- Linearna regresija: tf.estimator.LinearRegressor
- Razvrstitev: tf.estimator.LinearClassifier
- Klasifikacija poglobljenega učenja: tf.estimator.DNNClassifier
- Poglobljeno učenje in globoko učenje: tf.estimator.DNNLinearCombinedClassifier
- Regresija pospeševalnega drevesa: tf.estimator.BoostedTreesRegressor
- Klasifikacija pospešenega drevesa: tf.estimator.BoostedTreesClassifier
Preprost primer TensorFlow
import numpy as npimport tensorflow as tf
V prvi dve vrstici kode smo uvozili tensorflow kot tf. Pri Pythonu je običajna praksa, da za knjižnico uporabljamo kratko ime. Prednost je, da se izognemo tipkanju polnega imena knjižnice, ko jo moramo uporabiti. Na primer, lahko uvozimo tensorflow kot tf in pokličemo tf, če želimo uporabiti funkcijo tensorflow
Vadimo osnovni potek dela Tensorflow s preprostimi primeri TensorFlow. Ustvarimo računski graf, ki pomnoži dve števili skupaj.
Med primerom bomo pomnožili X_1 in X_2 skupaj. Tensorflow bo ustvaril vozlišče za povezavo operacije. V našem primeru se imenuje množenje. Ko je graf določen, se računalniški mehanizmi Tensorflow pomnožijo skupaj X_1 in X_2.
Primer TensorFlow
Na koncu bomo izvedli sejo TensorFlow, ki bo zagnala računski graf z vrednostmi X_1 in X_2 in natisnila rezultat množenja.
Določimo vhodni vozlišči X_1 in X_2. Ko ustvarimo vozlišče v Tensorflowu, moramo izbrati, kakšno vozlišče bomo ustvarili. Vozlišča X1 in X2 bodo nadomestna vozlišča. Omejitelj dodeli novo vrednost vsakič, ko naredimo izračun. Ustvarili jih bomo kot nadomestno vozlišče s pikami TF.
1. korak: Določite spremenljivko
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Ko ustvarimo nadomestno vozlišče, moramo predati, da bo podatkovni tip tukaj dodal številke, da bomo lahko uporabili podatkovni tip s plavajočo vejico, uporabimo tf.float32. Temu vozlišču moramo dati tudi ime. To ime se bo pokazalo, ko si bomo ogledali grafične vizualizacije našega modela. Poimenujmo to vozlišče X_1 tako, da vnesemo parameter z imenom name z vrednostjo X_1, zdaj pa na enak način določimo X_2. X_2.
2. korak: Določite izračun
multiply = tf.multiply(X_1, X_2, name = "multiply")
Zdaj lahko definiramo vozlišče, ki izvaja množenje. V Tensorflowu lahko to naredimo tako, da ustvarimo vozlišče tf.multiply.
V vozliščih X_1 in X_2 bomo prešli na vozlišče množenja. Tensorflowu pove, da ta vozlišča poveže v računski graf, zato ga prosimo, da izvleče vrednosti iz x in y in pomnoži rezultat. Dajmo tudi množilnemu vozlišču ime pomnoži. To je celotna definicija našega preprostega računskega grafa.
3. korak: Izvedite operacijo
Za izvajanje operacij v grafu moramo ustvariti sejo. V programu Tensorflow to opravi tf.Session (). Zdaj, ko imamo sejo, lahko zahtevamo, da seja zažene operacije na našem računskem grafu s klicem seje. Za zagon izračuna moramo uporabiti run.
Ko se postopek dodajanja zažene, bo videl, da mora zajeti vrednosti vozlišč X_1 in X_2, zato moramo vnesti tudi vrednosti za X_1 in X_2. To lahko storimo z dobavo parametra, imenovanega feed_dict. Podajamo vrednost 1,2,3 za X_1 in 4,5,6 za X_2.
Rezultate natisnemo s print (rezultat). Videli bi 4, 10 in 18 za 1x4, 2x5 in 3x6
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.]
Možnosti za nalaganje podatkov v TensorFlow
Prvi korak pred usposabljanjem algoritma strojnega učenja je nalaganje podatkov. Obstajata dva skupna načina za nalaganje podatkov:
1. Nalaganje podatkov v pomnilnik: To je najpreprostejša metoda. Vse podatke naložite v pomnilnik kot eno matriko. Lahko napišete kodo Python. Te vrstice kode niso povezane s Tensorflow.
2. Podatkovni cevovod Tensorflow. Tensorflow ima vgrajen API, ki vam pomaga z lahkoto naložiti podatke, izvesti operacijo in napajati algoritem strojnega učenja. Ta metoda deluje zelo dobro, zlasti če imate velik nabor podatkov. Na primer, slikovni zapisi so znani kot ogromni in ne sodijo v spomin. Podatkovni trak sam upravlja s pomnilnikom
Kakšno rešitev uporabiti?
Naloži podatke v pomnilnik
Če nabor podatkov ni prevelik, tj. Manj kot 10 gigabajtov, lahko uporabite prvo metodo. Podatki se lahko prilegajo v pomnilnik. Za uvoz datotek CSV lahko uporabite znano knjižnico Pandas. Več o pandah boste izvedeli v naslednji vadnici.
Naložite podatke s cevovodom Tensorflow
Druga metoda deluje najbolje, če imate velik nabor podatkov. Če imate na primer nabor podatkov 50 gigabajtov in ima vaš računalnik samo 16 gigabajtov pomnilnika, bo naprava zrušila.
V tem primeru morate zgraditi cevovod Tensorflow. Cevovod bo podatke naložil v paketu ali v majhnem delu. Vsaka serija bo potisnjena v cevovod in bo pripravljena na usposabljanje. Gradnja cevovoda je odlična rešitev, saj vam omogoča uporabo vzporednega računalništva. To pomeni, da bo Tensorflow model usposobil za več procesorjev. Spodbuja računanje in dovoljuje usposabljanje zmogljive nevronske mreže.
V naslednjih vajah boste videli, kako zgraditi pomemben cevovod za napajanje nevronske mreže.
Na kratko, če imate majhen nabor podatkov, lahko podatke naložite v pomnilnik s knjižnico Pandas.
Če imate velik nabor podatkov in želite uporabiti več procesorjev, boste lažje delali s cevovodom Tensorflow.
Ustvari cevovod Tensorflow
V prejšnjem primeru ročno dodamo tri vrednosti za X_1 in X_2. Zdaj bomo videli, kako naložiti podatke v Tensorflow.
Korak 1) Ustvarite podatke
Najprej uporabimo knjižnico numpy za generiranje dveh naključnih vrednosti.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0,8835775 0,23766977]]
Korak 2) Ustvarite rezervirano mesto
Tako kot v prejšnjem primeru ustvarimo nadomestni znak z imenom X. Izrecno moramo določiti obliko tenzorja. V primeru, da bomo matriko naložili samo z dvema vrednostma. Obliko lahko zapišemo kot shape = [1,2]
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Korak 3) Določite metodo nabora podatkov
Nato moramo definirati nabor podatkov, kamor lahko vnesemo vrednost nadomestnega znaka x. Uporabiti moramo metodo tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Korak 4) Ustvarite cevovod
V četrtem koraku moramo inicializirati cevovod, kamor bodo prehajali podatki. Ustvariti moramo iterator z make_initializable_iterator. Poimenujemo ga iterator. Nato moramo poklicati ta iterator za vnos naslednje serije podatkov get_next. Ta korak imenujemo get_next. Upoštevajte, da je v našem primeru samo en paket podatkov z le dvema vrednostma.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Korak 5) Izvedite operacijo
Zadnji korak je podoben prejšnjemu primeru. Začnemo sejo in zaženemo iterator operacije. Feed_dict hranimo z vrednostjo, ki jo ustvari numpy. Ti dve vrednosti bosta zapolnili nadomestni znak x. Nato zaženemo get_next, da natisnemo rezultat.
with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Povzetek
Pomen TensorFlow: TensorFlow je najbolj znana knjižnica globokega učenja v zadnjih letih. Izvajalec, ki uporablja TensorFlow, lahko zgradi katero koli globoko učno strukturo, na primer CNN, RNN ali preprosto umetno nevronsko mrežo.
TensorFlow večinoma uporabljajo akademiki, zagonska podjetja in velika podjetja. Google uporablja TensorFlow v skoraj vseh Googlovih dnevnih izdelkih, vključno z Gmailom, Foto in Google Iskalnikom.
Skupina Google Brain je razvila TensorFlow, da bi zapolnila vrzel med raziskovalci in razvijalci izdelkov. Leta 2015 so javno objavili TensorFlow; priljubljenost hitro narašča. Danes je TensorFlow knjižnica globokega učenja z največ skladišči na GitHubu.
Izvajalci uporabljajo Tensorflow, ker ga je enostavno razširiti v velikem obsegu. Zasnovan je za delo v oblaku ali na mobilnih napravah, kot sta iOs in Android.
Tensorflow deluje v seji. Vsako sejo definira graf z različnimi izračuni. Preprost primer je lahko množenje na število. V programu Tensorflow so potrebni trije koraki:
- Določite spremenljivko
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Določite izračun
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Izvedite operacijo
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Ena pogostih praks v programu Tensorflow je ustvariti cevovod za nalaganje podatkov. Če sledite tem petim korakom, boste lahko podatke naložili v TensorFLow
- Ustvari podatke
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Ustvari rezervirano mesto
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Določite metodo nabora podatkov
dataset = tf.data.Dataset.from_tensor_slices(x)
- Ustvari plinovod
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Izvedite program
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))