Mikä on TensorFlow? Kuinka se toimii? Esittely & Archirakenne
Aloitetaan tämä opetusohjelma TensorFlow-esittelyllä:
Mikä on TensorFlow?
TensorFlow on avoimen lähdekoodin päästä päähän -alusta koneoppimissovellusten luomiseen. Se on symbolinen matemaattinen kirjasto, joka käyttää tietovirtaa ja differentioituvaa ohjelmointia suorittaakseen erilaisia tehtäviä, jotka keskittyvät syvien hermoverkkojen koulutukseen ja päättelemiseen. Sen avulla kehittäjät voivat luoda koneoppimissovelluksia käyttämällä erilaisia työkaluja, kirjastoja ja yhteisön resursseja.
Tällä hetkellä maailman tunnetuin syväoppimisen kirjasto on Google's TensorFlow. Google tuote käyttää koneoppimista kaikissa tuotteissaan hakukoneen, käännösten, kuvatekstien tai suositusten parantamiseen.
TensorFlow esimerkki
Antaakseni konkreettisen esimerkin, Google käyttäjät voivat kokea nopeamman ja tarkemman hakukokemuksen tekoälyn avulla. Jos käyttäjä kirjoittaa avainsanan hakukenttään, Google antaa suosituksen siitä, mikä voisi olla seuraava sana.

Google haluaa hyödyntää koneoppimistaan hyödyntääkseen massiivisia tietojoukkojaan tarjotakseen käyttäjille parhaan mahdollisen käyttökokemuksen. Kolme eri ryhmää käyttää koneoppimista:
- Tutkijat
- Tietotieteilijät
- Ohjelmoijat
He voivat kaikki käyttää samaa työkalusarjaa tehdäkseen yhteistyötä keskenään ja parantaakseen tehokkuuttaan.
Google ei ainoastaan omaa dataa; heillä on maailman massiivisin tietokone, joten Tensor Flow rakennettiin skaalautuvaksi. TensorFlow on kirjasto, jonka on kehittänyt Google Brain Team kiihdyttää koneoppimista ja syväneuroverkkotutkimusta.
Se on rakennettu toimimaan useilla prosessoreilla tai grafiikkasuorittimilla ja jopa mobiilikäyttöjärjestelmillä, ja siinä on useita kääreitä useilla kielillä, kuten Python, C++ or Java.
TensorFlown historia
Pari vuotta sitten syväoppiminen alkoi suoriutua paremmin kuin muut koneoppimisalgoritmit valtavan datamäärän käsittelyssä. Google näki voivansa käyttää näitä syviä neuroverkkoja palveluidensa parantamiseen:
- Gmail
- Kuva
- Google hakukone
He rakentavat kehyksen nimeltä Tensorflow jotta tutkijat ja kehittäjät voivat työskennellä yhdessä tekoälymallin parissa. Kun se on kehitetty ja skaalattu, monet ihmiset voivat käyttää sitä.
Se julkaistiin ensimmäisen kerran vuoden 2015 lopulla, kun taas ensimmäinen vakaa versio ilmestyi vuonna 2017. Se on avoimen lähdekoodin Apache Open Source -lisenssin alaisuudessa. Voit käyttää sitä, muokata sitä ja jakaa muokattua versiota maksua vastaan maksamatta mitään. Google.
Seuraavaksi tässä TensorFlow Deep -oppimisoppaassa opimme TensorFlow-arkkitehtuurista ja miten TensorFlow toimii.
Miten TensorFlow toimii
TensorFlow antaa sinun rakentaa tietovirtakaavioita ja rakenteita, joilla voit määrittää, kuinka tiedot liikkuvat kaaviossa ottamalla syötteet moniulotteisena Tensor-nimisenä taulukkona. Sen avulla voit rakentaa vuokaavion toiminnoista, jotka voidaan suorittaa näille tuloille, jotka kulkevat toisessa päässä ja tulevat toisessa päässä ulostulona.
TensorFlow Archirakenne
Tensorflow-arkkitehtuuri toimii kolmessa osassa:
- Tietojen esikäsittely
- Rakenna malli
- Harjoittele ja arvioi malli
Sitä kutsutaan Tensorflowiksi, koska se ottaa syötteen moniulotteisena taulukkona, joka tunnetaan myös nimellä tensorit. Voit rakentaa eräänlaisen vuokaavio operaatioista (kutsutaan kuvaajaksi), jotka haluat suorittaa kyseiselle syötteelle. Tulo menee sisään toisesta päästä, sitten se virtaa tämän monitoimijärjestelmän läpi ja tulee ulos toisesta päästä ulostulona.
Tästä syystä sitä kutsutaan TensorFlowiksi, koska tensori menee sisään, virtaa operaatioluettelon läpi ja sitten se tulee ulos toiselta puolelta.
Missä Tensorflow voi juosta?
TensorFlow-laitteisto ja ohjelmistovaatimukset voidaan luokitella
Kehitysvaihe: Tämä on, kun harjoittelet tilaa. Koulutus suoritetaan yleensä pöytäkoneella tai kannettavalla tietokoneella.
Suoritusvaihe tai päättelyvaihe: Kun harjoitus on suoritettu, Tensorflowa voidaan ajaa useilla eri alustoilla. Voit ajaa sen päälle
- Työpöytä käynnissä Windows, macOS tai Linux
- Pilvi verkkopalveluna
- Mobiililaitteet, kuten iOS ja Android
Voit harjoitella sitä useilla koneilla ja sitten käyttää sitä toisella koneella, kun sinulla on koulutettu malli.
Mallia voidaan kouluttaa ja käyttää sekä GPU:illa että CPU:illa. GPU:t suunniteltiin alun perin videopeleihin. Vuoden 2010 lopulla Stanfordin tutkijat havaitsivat, että GPU oli myös erittäin hyvä matriisioperaatioissa ja algebrassa, joten se tekee niistä erittäin nopeita tällaisten laskelmien tekemiseen. Syväoppiminen perustuu suureen osaan matriisin kertolaskua. TensorFlow on erittäin nopea matriisin kertolaskussa, koska se on kirjoitettu sisään C++. Vaikka se on otettu käyttöön C++, TensorFlow'ta voidaan käyttää ja hallita pääasiassa muilla kielillä, Python.
Lopuksi, merkittävä TensorFlow-ominaisuus on TensorBoard. The Tensorboard mahdollistaa TensorFlow'n toiminnan graafisen ja visuaalisen seurannan.
TensorFlow-komponentit
tensor
Tensorflown nimi on suoraan johdettu sen ydinkehyksestä: tensor. Tensorflow:ssa kaikki laskelmat sisältävät tensoreita. Tensori on a vektori or matriisi n-ulottuvuus, joka edustaa kaikentyyppisiä tietoja. Kaikilla tensorin arvoilla on identtinen tietotyyppi tunnetun (tai osittain tunnetun) kanssa muoto. Tiedon muoto on matriisin tai taulukon ulottuvuus.
Tensori voidaan saada syöttötiedoista tai laskennan tuloksesta. TensorFlow:ssa kaikki toiminnot suoritetaan sisällä a kaavio. Kaavio on joukko laskentaa, joka tapahtuu peräkkäin. Jokaista operaatiota kutsutaan an op solmu ja ovat yhteydessä toisiinsa.
Kaavio esittää toiminnot ja solmujen väliset yhteydet. Se ei kuitenkaan näytä arvoja. Solmujen reuna on tensori, eli tapa täyttää operaatio datalla.
Kuvaajat
TensorFlow käyttää kaaviokehystä. Kaavio kerää ja kuvaa kaikki harjoituksen aikana tehdyt sarjalaskut. Kaaviolla on monia etuja:
- Se tehtiin toimimaan useilla prosessoreilla tai GPU:illa ja jopa mobiilikäyttöjärjestelmällä
- Kaavion siirrettävyys mahdollistaa laskelmien säilyttämisen välitöntä tai myöhempää käyttöä varten. Kaavio voidaan tallentaa suoritettavaksi myöhemmin.
- Kaikki kaavion laskelmat tehdään yhdistämällä tensorit yhteen
- Tensorilla on solmu ja reuna. Solmu suorittaa matemaattisen toiminnon ja tuottaa päätepisteiden ulostulot. Reunat reunat selittävät solmujen väliset tulo/lähtösuhteet.
Miksi TensorFlow on suosittu?
TensorFlow on kaikkien paras kirjasto, koska se on suunniteltu kaikkien käytettäväksi. Tensorflow-kirjasto sisältää erilaisia sovellusliittymiä, jotka on rakennettu mittakaavassa syväoppimisarkkitehtuuriin, kuten CNN tai RNN. TensorFlow perustuu graafin laskemiseen; sen avulla kehittäjä voi visualisoida neuroverkon rakentamisen Tensorboadilla. Tämä työkalu on hyödyllinen ohjelman virheenkorjauksessa. Lopuksi Tensorflow on suunniteltu käytettäväksi mittakaavassa. Se toimii CPU:lla ja GPU:lla.
Tensorflow osoitteessatracon GitHubissa suosituin verrattuna muihin syväoppimiskehyksiin.
TensorFlow Algorithms
Alla ovat TensorFlown tukemat algoritmit:
Tällä hetkellä TensorFlow 1.10:ssä on sisäänrakennettu API:
- Lineaarinen regressio: tf.estimator.LinearRegressor
- Luokitus:tf.estimator.LinearClassifier
- Syväoppimisluokitus: tf.estimator.DNNClassifier
- Deep learning wipe ja syvä: tf.estimator.DNNLinearCombinedClassifier
- Tehostepuun regressio: tf.estimator.BoostedTreesRegressor
- Tehostettu puuluokitus: tf.estimator.BoostedTreesClassifier
Kuinka laskelmat toimivat TensorFlowissa
import numpy as np import tensorflow as tf
Kahdella ensimmäisellä koodirivillä olemme tuoneet tensorflow: n muodossa tf. Kanssa Python, on yleinen käytäntö käyttää lyhyttä nimeä kirjastolle. Etuna on välttää kirjoittamasta kirjaston koko nimeä, kun meidän on käytettävä sitä. Voimme esimerkiksi tuoda tensorflow-muodon tf:nä ja kutsua tf:ää, kun haluamme käyttää tensorflow-funktiota
Harjoitellaan Tensorflow-työnkulkua yksinkertaisilla TensorFlow-esimerkeillä. Luodaan laskennallinen graafi, joka kertoo kaksi lukua yhdessä.
Esimerkin aikana kerromme X_1 ja X_2 yhdessä. Tensorflow luo solmun toiminnon yhdistämiseksi. Esimerkissämme sitä kutsutaan kertomiseksi. Kun kaavio on määritetty, Tensorflow-laskentakoneet kertovat yhteen X_1 ja X_2.

Lopuksi suoritamme TensorFlow-istunnon, joka suorittaa laskennallisen kaavion arvoilla X_1 ja X_2 ja tulostaa kertolaskutuloksen.
Määritetään tulosolmut X_1 ja X_2. Kun luomme solmun Tensorflow:ssa, meidän on valittava, millainen solmu luodaan. X1- ja X2-solmut ovat paikkamerkkisolmuja. Paikkamerkki antaa uuden arvon joka kerta, kun teemme laskelman. Luomme ne TF-pisteen paikkamerkkisolmuksi.
Vaihe 1: Määritä muuttuja
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
Kun luomme paikkamerkkisolmun, meidän on välitettävä tietotyyppi, joka lisää tähän numeroita, jotta voimme käyttää liukulukutietotyyppiä, käytetään tf.float32:ta. Meidän on myös annettava tälle solmulle nimi. Tämä nimi tulee näkyviin, kun katsomme mallimme graafisia visualisointeja. Nimetään tämä solmu X_1 antamalla parametri nimeltä name arvolla X_1 ja nyt määritellään X_2 samalla tavalla. X_2.
Vaihe 2: Määritä laskenta
multiply = tf.multiply(X_1, X_2, name = "multiply")
Nyt voimme määrittää solmun, joka tekee kertolaskutoiminnon. Tensorflow:ssa voimme tehdä sen luomalla tf.multiply-solmun.
Välitämme solmut X_1 ja X_2 kertolaskusolmuun. Se käskee tensorflowa linkittämään nämä solmut laskennallisessa kaaviossa, joten pyydämme sitä ottamaan arvot x:stä ja y:stä ja kertomaan tuloksen. Annetaan kertolaskusolmulle myös nimi kertoa. Se on yksinkertaisen laskennallisen graafimme koko määritelmä.
Vaihe 3: Suorita toimenpide
Suorittaaksemme toimintoja kaaviossa meidän on luotava istunto. Tensorflow:ssa sen tekee tf.Session(). Nyt kun meillä on istunto, voimme pyytää istuntoa suorittamaan operaatioita laskennalliselle kaaviollemme kutsumalla istuntoa. Laskennan suorittamiseksi meidän on käytettävä run-komentoa.
Kun summausoperaatio suoritetaan, se näkee, että sen on tartuttava X_1- ja X_2-solmujen arvoihin, joten meidän on syötettävä myös arvot X_1- ja X_2-solmuille. Voimme tehdä sen syöttämällä parametrin feed_dict. Välitämme arvon 1,2,3 arvolle X_1 ja 4,5,6 arvolle X_2.
Tulostamme tulokset printillä (tulos). Meidän pitäisi nähdä 4, 10 ja 18 kohdissa 1×4, 2×5 ja 3×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.]
Vaihtoehdot tietojen lataamiseen TensorFlow'hun
Ensimmäinen askel ennen harjoittelua a koneoppimisalgoritmi on ladata tiedot. On kaksi yleistä tapaa ladata tietoja:
1. Lataa tiedot muistiin: Se on yksinkertaisin tapa. Lataat kaikki tietosi muistiin yhtenä taulukkona. Voit kirjoittaa a Python koodi. Nämä koodirivit eivät liity Tensorflowiin.
2. Tensorflow-dataputki: Tensorflow:ssa on sisäänrakennettu API, joka auttaa sinua lataamaan tietoja, suorittamaan toiminnon ja syöttämään koneoppimisalgoritmia helposti. Tämä menetelmä toimii erittäin hyvin varsinkin, kun sinulla on suuri tietojoukko. Esimerkiksi kuvatallenteiden tiedetään olevan valtavia eivätkä mahdu muistiin. Tietoputki hallitsee muistia itse
Mitä ratkaisua käyttää?
Lataa tiedot muistiin
Jos tietojoukkosi ei ole liian suuri, eli alle 10 gigatavua, voit käyttää ensimmäistä menetelmää. Tiedot mahtuvat muistiin. Voit tuoda CSV-tiedostoja käyttämällä kuuluisaa Pandas-kirjastoa. Saat lisätietoja pandoista seuraavassa opetusohjelmassa.
Lataa tiedot Tensorflow-putkilinjalla
Toinen menetelmä toimii parhaiten, jos sinulla on suuri tietojoukko. Jos sinulla on esimerkiksi 50 gigatavun tietojoukko ja tietokoneessasi on vain 16 gigatavua muistia, laite kaatuu.
Tässä tilanteessa sinun on rakennettava Tensorflow-putki. Liukulinja lataa tiedot erässä tai pienessä osassa. Jokainen erä työnnetään putkilinjaan ja on valmis koulutukseen. Liukulinjan rakentaminen on erinomainen ratkaisu, koska sen avulla voit käyttää rinnakkaislaskentaa. Se tarkoittaa, että Tensorflow harjoittaa mallia useiden prosessorien kesken. Se edistää laskentaa ja mahdollistaa tehokkaan hermoverkon harjoittamisen.
Näet seuraavissa opetusohjelmissa kuinka rakentaa merkittävä putkisto hermoverkkosi syöttämiseksi.
Lyhyesti sanottuna, jos sinulla on pieni tietojoukko, voit ladata tiedot muistiin Pandas-kirjaston avulla.
Jos sinulla on suuri tietojoukko ja haluat käyttää useita suorittimia, sinun on mukavampaa työskennellä Tensorflow-putkilinjan kanssa.
TensorFlow-putkilinjan luominen
Tässä ovat vaiheet TensorFlow-putkilinjan luomiseksi:
Edellisessä esimerkissä lisäsimme manuaalisesti kolme arvoa X_1:lle ja X_2:lle. Nyt näemme kuinka ladata tietoja Tensorflow: hen:
Vaihe 1) Luo tiedot
Ensinnäkin käytetään numpy-kirjastoa kahden satunnaisarvon luomiseen.
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
[[0.8835775 0.23766977]]
Vaihe 2) Luo paikkamerkki
Kuten edellisessä esimerkissä, luomme paikkamerkin, jonka nimi on X. Meidän on määritettävä tensorin muoto eksplisiittisesti. Siinä tapauksessa lataamme taulukon, jossa on vain kaksi arvoa. Voimme kirjoittaa muodon muodossa shape=[1,2]
# using a placeholder x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Vaihe 3) Määritä tietojoukon menetelmä
Seuraavaksi meidän on määritettävä tietojoukko, johon voimme täyttää paikkamerkin x arvon. Meidän on käytettävä menetelmää tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Vaihe 4) Luo putki
Vaiheessa neljä meidän on alustettava putki, jossa data virtaa. Meidän on luotava iteraattori, jossa on make_initializable_iterator. Nimeämme sen iteraattoriksi. Sitten meidän on kutsuttava tämä iteraattori syöttämään seuraava tietoerä, get_next. Nimeämme tämän vaiheen get_next. Huomaa, että esimerkissämme on vain yksi tietoerä, jolla on vain kaksi arvoa.
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
Vaihe 5) Suorita toimenpide
Viimeinen vaihe on samanlainen kuin edellinen esimerkki. Aloitamme istunnon ja suoritamme operaatioiteraattorin. Syötämme syötteen feed_dict arvolla, jonka on luonut numpy. Nämä kaksi arvoa täyttävät paikkamerkin x. Sitten suoritamme get_next tulostaaksemme tuloksen.
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]
Yhteenveto
- TensorFlow merkitys: TensorFlow on viime vuosien tunnetuin syväoppimiskirjasto. TensorFlow'ta käyttävä lääkäri voi rakentaa minkä tahansa syvän oppimisrakenteen, kuten CNN:n, RNN:n tai yksinkertaisen keinotekoisen hermoverkon.
- TensorFlow'ta käyttävät enimmäkseen akateemikot, startupit ja suuryritykset. Google käyttää TensorFlow'ta lähes kaikissa Google päivittäiset tuotteet, mukaan lukien Gmail, Valokuva ja Google Hakukone.
- Google Brain-tiimi kehitti TensorFlow'n täyttämään tutkijoiden ja tuotekehittäjien välisen kuilun. Vuonna 2015 he julkaisivat TensorFlow'n; sen suosio kasvaa nopeasti. Nykyään TensorFlow on syväoppimisen kirjasto, jolla on eniten repositorioita GitHubissa.
- Ammatinharjoittajat käyttävät Tensorflowa, koska se on helppo ottaa käyttöön suuressa mittakaavassa. Se on rakennettu toimimaan pilvessä tai mobiililaitteissa, kuten iOs ja Android.
Tensorflow toimii istunnossa. Jokainen istunto määritellään kaaviolla, jossa on erilaisia laskelmia. Yksinkertainen esimerkki voi olla kertominen numeroon. Tensorflow:ssa vaaditaan kolme vaihetta:
- Määrittele muuttuja
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
- Määritä laskenta
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Suorita toimenpide
with tf.Session() as session:
result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})
print(result)
Yksi yleinen Tensorflow-käytäntö on luoda putki tietojen lataamista varten. Jos noudatat näitä viittä vaihetta, voit ladata tietoja TensorFLow'hun:
- Luo tiedot
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
- Luo paikkamerkki
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Määritä tietojoukon menetelmä
dataset = tf.data.Dataset.from_tensor_slices(x)
- Luo putki
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Suorita ohjelma
with tf.Session() as sess:
sess.run(iterator.initializer, feed_dict={ x: x_input })
print(sess.run(get_next))
