Mikä on TensorFlow? Kuinka se toimii? Johdanto & Arkkitehtuuri

Aloitetaan tämä opetusohjelma TensorFlow-johdannolla:

Mikä on TensorFlow?

TensorFlow on avoimen lähdekoodin päästä päähän -alusta koneoppimissovellusten luomiseen. Se on symbolinen matematiikkakirjasto, joka käyttää datavirtaa ja erilaistuvaa ohjelmointia suorittamaan erilaisia ​​tehtäviä, jotka keskittyvät syvien hermoverkkojen koulutukseen ja päätelmiin. 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äoppimiskirjasto on Googlen TensorFlow. Google-tuote käyttää koneoppimista kaikissa tuotteissaan hakukoneiden, käännösten, kuvatekstien tai suositusten parantamiseksi.

Konkreettisen esimerkin antamiseksi Google-käyttäjät voivat kokea nopeamman ja tarkemman haun tekoälyn avulla. Jos käyttäjä kirjoittaa avainsanan hakupalkkiin, Google antaa suosituksen siitä, mikä voisi olla seuraava sana.

Google haluaa käyttää koneoppimista hyödyntääkseen heidän massiiviset tietojoukot, jotta käyttäjät saisivat parhaan kokemuksen. Kolme eri ryhmää käyttää koneoppimista:

  • Tutkijat
  • Data-tutkijat
  • Ohjelmoijat.

He kaikki voivat käyttää samaa työkalupakettia yhteistyöhön keskenään ja parantaa niiden tehokkuutta.

Googlella ei ole vain tietoja; heillä on maailman massiivisin tietokone, joten Tensor Flow rakennettiin mittakaavassa. TensorFlow on kirjasto, jonka Google Brain Team on kehittänyt nopeuttamaan koneoppimista ja syvällistä hermoverkkotutkimusta.

Se on rakennettu toimimaan useilla suorittimilla tai näytönohjaimilla ja jopa mobiilikäyttöjärjestelmillä, ja sillä on useita kääreitä useilla kielillä, kuten Python, C ++ tai Java.

Tässä TensorFlow-opetusohjelmassa opit

  • Mikä on TensorFlow?
  • TensorFlow-historian historia
  • Kuinka TensorFlow toimii
  • TensorFlow-arkkitehtuuri
  • Missä Tensorflow voi juosta?
  • Johdanto TensorFlow-komponentteihin
  • Miksi TensorFlow on suosittu?
  • Luettelo merkittävistä algoritmeista, joita TensorFlow tukee
  • Yksinkertainen TensorFlow-esimerkki
  • Vaihtoehdot tietojen lataamiseksi TensorFlow-palveluun
  • Luo Tensorflow-putki

TensorFlow-historian historia

Pari vuotta sitten syvä oppiminen alkoi ylittää kaikki muut koneoppimisalgoritmit, kun se antoi valtavan määrän tietoa. Google näki voivansa käyttää näitä syviä neuroverkkoja palvelujensa parantamiseen:

  • Gmail
  • Kuva
  • Google-hakukone

He rakentavat Tensorflow- nimisen kehyksen , jonka avulla tutkijat ja kehittäjät voivat työskennellä yhdessä tekoälymallin parissa. Kun se on kehitetty ja skaalattu, se antaa monille ihmisille mahdollisuuden käyttää sitä.

Se julkaistiin ensimmäisen kerran vuoden 2015 lopulla, kun taas ensimmäinen vakaa versio ilmestyi vuonna 2017. Se on avoin lähdekoodi Apache Open Source -lisenssillä. Voit käyttää sitä, muokata sitä ja jakaa muokatun version maksua vastaan ​​maksamatta mitään Googlelle.

Seuraavaksi tässä TensorFlow Deep -opetusoppaassa opitaan TensorFlow-arkkitehtuurista ja miten TensorFlow toimii.

Kuinka TensorFlow toimii

TensorFlow antaa sinun rakentaa datavuokaavioita ja -rakenteita määrittelemään, kuinka data liikkuu kaavion läpi ottamalla syötteet Tensor-nimiseksi moniulotteiseksi taulukoksi. Sen avulla voit luoda näille tuloille suoritettavien toimintojen vuokaavion, joka kulkee toisesta päästä ja tulee toisesta päästä lähtöön.

TensorFlow-arkkitehtuuri

Tensorflow-arkkitehtuuri toimii kolmessa osassa:

  • Tietojen esikäsittely
  • Rakenna malli
  • Harjoittele ja arvioi malli

Sitä kutsutaan Tensorflowiksi, koska se vie tuloa moniulotteiseksi taulukoksi, joka tunnetaan myös nimellä tensorit . Voit luoda jonkinlaisen vuokaavion toiminnoista (kutsutaan kaavioksi), jotka haluat suorittaa kyseiselle syötteelle. Tulo menee sisään toisesta päästä, ja sitten se virtaa tämän monitoimisen järjestelmän läpi ja tulee toisesta päästä lähtöön.

Siksi sitä kutsutaan TensorFlow, koska tensori menee sisään virtaa luettelon operaatioista, ja sitten se tulee ulos toiselle puolelle.

Missä Tensorflow voi juosta?

TensorFlow-laitteisto- ja -ohjelmistovaatimukset voidaan luokitella

Kehitysvaihe: Tällöin harjoitat tilaa. Harjoittelu tapahtuu yleensä työpöydällä tai kannettavalla tietokoneella.

Suoritusvaihe tai päättelyvaihe: Kun harjoittelu on suoritettu, Tensorflow voidaan ajaa monilla eri alustoilla. Voit käyttää sitä

  • Työpöytä, jossa on Windows, macOS tai Linux
  • Pilvi verkkopalveluna
  • Mobiililaitteet, kuten iOS ja Android

Voit kouluttaa sitä useilla koneilla ja sitten ajaa eri koneilla, kun sinulla on koulutettu malli.

Mallia voidaan kouluttaa ja käyttää sekä näytönohjaimissa että suorittimissa. GPU: t suunniteltiin alun perin videopelejä varten. Loppuvuodesta 2010 Stanfordin tutkijat havaitsivat, että GPU oli myös erittäin hyvä matriisitoiminnoissa ja algebrassa, joten se tekee niistä erittäin nopeita tällaisten laskelmien suorittamisessa. Syvä oppiminen perustuu moniin matriisikertomuksiin. TensorFlow on erittäin nopea laskemaan matriisikertomuksen, koska se on kirjoitettu C ++: lla. Vaikka TensorFlow on toteutettu C ++ -sovelluksessa, sitä voidaan käyttää ja ohjata muilla kielillä, pääasiassa Pythonilla.

Lopuksi TensorFlow'n merkittävä piirre on TensorBoard. TensorBoard mahdollistaa graafisen ja visuaalisen seurannan, mitä TensorFlow tekee.

Johdanto TensorFlow-komponentteihin

Tensori

Tensorflow-nimi on johdettu suoraan sen ydinkehyksestä: Tensor . Tensorflow-ohjelmassa kaikki laskelmat sisältävät tensoreita. Tensori on n-ulottuvuuksien vektori tai matriisi , joka edustaa kaiken tyyppisiä tietoja. Kaikilla tensorin arvoilla on sama tietotyyppi tunnetulla (tai osittain tunnetulla) muodolla . Datan muoto on matriisin tai matriisin ulottuvuus.

Tensori voi olla peräisin syötetiedoista tai laskennan tuloksesta. TensorFlow-ohjelmassa kaikki toiminnot suoritetaan kaavion sisällä . Kaavio on joukko laskutoimituksia, jotka suoritetaan peräkkäin. Kutakin operaatiota kutsutaan op-solmuksi ja ne on kytketty toisiinsa.

Kaavio kuvaa solmujen väliset toiminnot ja yhteydet. Arvoja ei kuitenkaan näytetä. Solmujen reuna on tensori, eli tapa täyttää operaatio tiedoilla.

Kaaviot

TensorFlow käyttää graafikehystä. Kaavio kerää ja kuvaa kaikki harjoituksen aikana tehdyt sarjalaskelmat. Kaaviossa on paljon etuja:

  • Se tehtiin toimimaan useilla suorittimilla tai GPU: lla ja jopa mobiilikäyttöjärjestelmällä
  • Kaavion siirrettävyys antaa mahdollisuuden säilyttää laskelmat välitöntä tai myöhempää käyttöä varten. Kaavio voidaan tallentaa suoritettavaksi tulevaisuudessa.
  • Kaikki kaavion laskelmat tehdään kytkemällä tensorit yhteen
    • Tensorilla on solmu ja reuna. Solmu suorittaa matemaattisen operaation ja tuottaa päätepisteiden lähdöt. Reunat reunat selittävät solmujen väliset syöttö / lähtö-suhteet.

Miksi TensorFlow on suosittu?

TensorFlow on kaikkien paras kirjasto, koska se on rakennettu kaikkien saataville. Tensorflow-kirjasto sisältää erilaisen sovellusliittymän, joka on rakennettu mittakaavassa syvään oppimiseen, kuten CNN tai RNN. TensorFlow perustuu graafin laskemiseen; sen avulla kehittäjä voi visualisoida hermoverkon rakentamisen Tensorboadilla. Tämä työkalu on hyödyllinen ohjelman virheenkorjauksessa. Lopuksi Tensorflow on rakennettu käytettäväksi mittakaavassa. Se toimii CPU: lla ja GPU: lla.

Tensorflow saa suurimman suosion GitHubissa verrattuna muihin syvällisen oppimisen puitteisiin.

Luettelo merkittävistä algoritmeista, joita TensorFlow tukee

Alla on tuettu TensorFlow-algoritmiluettelo:

Tällä hetkellä TensorFlow 1.10: ssä on sisäänrakennettu sovellusliittymä seuraaville:

  • Lineaarinen regressio: tf.estimator.LinearRegressor
  • Luokitus: tf.estimator.LinearClassifier
  • Syvä oppimisen luokitus: tf.implifier.DNNClassifier
  • Syvä oppimispyyhe ja syvä: tf.estimator.DNNLinearCombinedClassifier
  • Tehostepuun regressio: tf.estimator.BoostedTreesRegressor
  • Tehostettu puuluokitus: tf.estimator.BoostedTreesClassifier

Yksinkertainen TensorFlow-esimerkki

import numpy as npimport tensorflow as tf

Kaksi ensimmäistä koodiriviä, olemme tuoneet tensorflow tf: nä. Pythonissa on yleistä käytäntöä käyttää lyhyttä nimeä kirjastoon. Etuna on välttää kirjaston koko nimen kirjoittamista, kun meidän on käytettävä sitä. Voimme esimerkiksi tuoda tensorflow: n tf: nä ja kutsua tf: n, kun haluamme käyttää tensorflow-toimintoa

Harjoittellaan Tensorflow: n perustyönkulku yksinkertaisilla TensorFlow-esimerkeillä. Luodaan laskennallinen kaavio, joka kertoo kaksi lukua yhdessä.

Esimerkin aikana kerrotaan X_1 ja X_2 yhdessä. Tensorflow luo solmun toiminnan yhdistämiseksi. Esimerkissämme sitä kutsutaan moninkertaistumiseksi. Kun kaavio on määritetty, Tensorflow-laskennalliset moottorit kertovat X_1 ja X_2 yhdessä.

TensorFlow-esimerkki

Lopuksi suoritamme TensorFlow-istunnon, joka suorittaa laskennallisen kaavion arvoilla X_1 ja X_2 ja tulostaa kertolaskun tuloksen.

Määritetään X_1- ja X_2-tulosolmut. Kun luot solmun Tensorflow'ssa, meidän on valittava, millainen solmu luodaan. X1- ja X2-solmut ovat paikkamerkkisolmu. Paikkamerkki antaa uuden arvon joka kerta, kun teemme laskutoimituksen. Luomme ne TF-pisteiden paikkamerkkisolmuiksi.

Vaihe 1: Määritä muuttuja

X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")

Kun luot paikkamerkki solmun, meidän on välitettävä tietotyyppi lisää numeroita tähän, jotta voimme käyttää liukuluku tietotyyppiä, käytetään tf.float32. Meidän on myös annettava tälle solmulle nimi. Tämä nimi näkyy, kun tarkastelemme mallimme graafisia visualisointeja. Nimetään tämä solmu X_1 välittämällä parametri nimeltä nimi arvolla X_1 ja määritellään nyt X_2 samalla tavalla. X_2.

Vaihe 2: Määritä laskenta

multiply = tf.multiply(X_1, X_2, name = "multiply")

Nyt voimme määritellä solmun, joka suorittaa kertotoiminnon. Tensorflow-sovelluksessa voimme tehdä sen luomalla tf.multiply-solmun.

Siirrämme X_1- ja X_2-solmut kertolasolmuun. Se käskee tensorflow'n linkittämään nuo solmut laskentakaaviossa, joten pyydämme sitä vetämään arvot x: stä ja y: stä ja kertomaan tulos. Annetaan myös kertolasolmulle nimi kerrotaan. Se on yksinkertaisen laskennallisen kaavion koko määritelmä.

Vaihe 3: Suorita toimenpide

Toimintojen suorittamiseksi kaaviossa meidän on luotava istunto. Tensorflow'ssa sen tekee tf.Session (). Nyt kun meillä on istunto, voimme pyytää istuntoa suorittamaan operaatiot laskentakaaviossamme kutsumalla istuntoa. Laskennan suorittamiseksi meidän on käytettävä ajaa.

Kun lisäysoperaatio suoritetaan, sen on havaittava, että sen on napattava X_1- ja X_2-solmujen arvot, joten meidän on syötettävä myös arvoja X_1 ja X_2. Voimme tehdä sen toimittamalla parametrin nimeltä feed_dict. Välitämme arvon 1,2,3 arvolle X_1 ja 4,5,6 arvolle X_2.

Tulostamme tulokset tulostuksella (tulos). Meidän pitäisi nähdä 4, 10 ja 18 1x4, 2x5 ja 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.]

Vaihtoehdot tietojen lataamiseksi TensorFlow-palveluun

Ensimmäinen vaihe ennen koneoppimisalgoritmin kouluttamista on tietojen lataaminen. Tietojen lataamiseen on kaksi yleistä tapaa:

1. Lataa tiedot muistiin: Se on yksinkertaisin tapa. Ladaat kaikki tiedot muistiin yhtenä ryhmänä. Voit kirjoittaa Python-koodin. Nämä koodirivit eivät liity Tensorflow-järjestelmään.

2. Tensorflow-dataputki. Tensorflow'ssa on sisäänrakennettu sovellusliittymä, jonka avulla voit ladata tiedot, suorittaa toiminnon ja syöttää koneoppimisalgoritmia helposti. Tämä menetelmä toimii erittäin hyvin varsinkin kun sinulla on suuri tietojoukko. Esimerkiksi kuvatietueiden tiedetään olevan valtavia eikä sovi muistiin. Dataputki hallitsee muistia itse

Mitä ratkaisua käyttää?

Lataa tiedot muistiin

Jos tietojoukko ei ole liian suuri eli alle 10 gigatavua, voit käyttää ensimmäistä menetelmää. Tiedot mahtuvat muistiin. Voit tuoda CSV-tiedostoja tunnetulla Pandas-kirjastolla. Opit lisää pandoista seuraavasta opetusohjelmasta.

Lataa tiedot Tensorflow-putkistolla

Toinen menetelmä toimii parhaiten, jos sinulla on suuri tietojoukko. Esimerkiksi, jos sinulla on 50 gigatavun tietojoukko ja tietokoneellasi on vain 16 gigatavua muistia, kone kaatuu.

Tässä tilanteessa sinun on rakennettava Tensorflow-putki. Putki lataa tiedot erässä tai pieninä paloina. Jokainen erä työnnetään putkistoon ja on valmis koulutukseen. Putkilinjan rakentaminen on erinomainen ratkaisu, koska sen avulla voit käyttää rinnakkaista laskentaa. Se tarkoittaa, että Tensorflow kouluttaa mallia useille suorittimille. Se edistää laskentaa ja sallii voimakkaan hermoverkon harjoittamisen.

Näet seuraavissa opetusohjelmissa, kuinka rakentaa merkittävä putki hermoverkon ruokkimiseksi.

Lyhyesti sanottuna, jos sinulla on pieni tietojoukko, voit ladata tiedot muistiin Pandas-kirjastolla.

Jos sinulla on suuri tietojoukko ja haluat käyttää useita suorittimia, sinulla on mukavampaa työskennellä Tensorflow-putkilinjan kanssa.

Luo Tensorflow-putki

Aiemmassa esimerkissä lisätään manuaalisesti kolme arvoa arvoille X_1 ja X_2. Nyt näemme, miten tiedot ladataan Tensorflow'lle.

Vaihe 1) Luo tiedot

Ensinnäkin, käytetään numpy-kirjastoa kahden satunnaisen arvon luomiseen.

import numpy as npx_input = np.random.sample((1,2))print(x_input)

[[0.8835775 0.23766977]]

Vaihe 2) Luo paikkamerkki

Kuten edellisessä esimerkissä, luomme paikkamerkin nimellä X. Meidän on määritettävä tensorin muoto nimenomaisesti. Siinä tapauksessa lataamme taulukon, jossa on vain kaksi arvoa. Voimme kirjoittaa muodon muotoon = [1,2]

# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')

Vaihe 3) Määritä tietojoukko-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, johon tiedot virtaavat. Meidän on luotava iteraattori mallilla make_initializable_iterator. Nimeämme sen iteraattoriksi. Sitten meidän on kutsuttava tätä iteraattoria syöttämään seuraava erä tietoja get_next. Nimeämme tämän vaiheen get_next. Huomaa, että esimerkissämme on vain yksi tietojoukko, 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 operaation iteraattorin. Syötämme feed_dictin numeron luomalla arvolla. Nämä kaksi arvoa täyttävät paikkamerkin x. Sitten suoritamme get_next tulostaaksesi tuloksen.

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]

Yhteenveto

TensorFlow-merkitys: TensorFlow on tunnetuin syvällisen oppimisen kirjasto viime vuosina. TensorFlow-tekniikkaa käyttävä lääkäri voi rakentaa minkä tahansa syvällisen oppimisrakenteen, kuten CNN, RNN tai yksinkertaisen keinotekoisen hermoverkon.

TensorFlowia käyttävät enimmäkseen tutkijat, startupit ja suuret yritykset. Google käyttää TensorFlow'ta lähes kaikissa Googlen päivittäistuotteissa, mukaan lukien Gmail, Photo ja Google-hakukone.

Google Brain -tiimin kehittämä TensorFlow täyttää aukon tutkijoiden ja tuotekehittäjien välillä. Vuonna 2015 he julkaisivat TensorFlow'n; sen suosio kasvaa nopeasti. Nykyään TensorFlow on syväoppimiskirjasto, jossa on eniten GitHub-arkistoja.

Harjoittajat käyttävät Tensorflowia, koska se on helppo ottaa käyttöön mittakaavassa. Se on rakennettu toimimaan pilvessä tai mobiililaitteissa, kuten iOs ja Android.

Tensorflow toimii istunnossa. Jokainen istunto määritetään kaaviona, jossa on erilaiset laskelmat. Yksinkertainen esimerkki voi olla kerrottaminen lukuun. Tensorflow-sovelluksessa vaaditaan kolme vaihetta:

  1. Määritä muuttuja
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Määritä laskenta
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. 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 käytäntö Tensorflow'ssa on luoda putki tietojen lataamista varten. Jos noudatat näitä viittä vaihetta, voit ladata tietoja TensorFLow-palveluun

  1. Luo tiedot
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Luo paikkamerkki
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Määritä tietojoukko-menetelmä
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Luo putki
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Suorita ohjelma
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) 

Mielenkiintoisia artikkeleita...