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.

TensorFlow näide
TensorFlow näide

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.

Arvutused töötavad TensorFlow's
TensorFlow näide

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:

  1. Määratlege muutuja
X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Määratlege arvutus
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. 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.

  1. Looge andmed
import numpy as np
x_input = np.random.sample((1,2))
print(x_input)
  1. Looge kohatäide
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Määratlege andmestiku meetod
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Loo torujuhe
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Käivitage programm
with tf.Session() as sess:  
sess.run(iterator.initializer, feed_dict={ x: x_input })  
print(sess.run(get_next))

Võta see postitus kokku järgmiselt: