Andmeteadus

Pythoni Tensorflow juhendaja

Pythoni Tensorflow juhendaja
Selles õppetükis vaatleme TensorFlow'i, mis on avatud lähtekoodiga masinõppekogu, mida kasutatakse sügavate õppemudelite kujundamiseks, ehitamiseks ja koolitamiseks. TensorFlow teegiga on võimalik arvuliselt arvutada, millised andmevoo graafikud, milles matemaatilised toimingud on kujutatud sõlmedena ja andmed servadena nende sõlmede vahel.

Üldiselt käsitleme selles tunnis kolme peamist teemat:

  1. Mis on Tensorid ja TensorFlow
  2. ML-algoritmide rakendamine TensorFlow abil
  3. TensorFlow kasutamise juhtumid

TensorFlow on Google'i suurepärane Pythoni pakett, mis kasutab hästi optimeeritud matemaatiliste arvutuste jaoks andmevoo programmeerimise paradigmat. Mõned TensorFlow funktsioonid on:

Kõigi nende funktsioonide ja masinõppealgoritmide valiku tõttu muudab TensorFlow selle tootmistoodanguks. Sukeldume TensorFlow mõistetes, et saaksime oma käed kohe koodiga määrduda.

TensorFlow installimine

Kuna kasutame TensorFlow jaoks Pythoni API-d, on hea teada, et see töötab mõlema Python 2-ga.7 ja 3.3+ versiooni. Installime TensorFlow teegi, enne kui läheme tegelike näidete ja mõistete juurde. Selle paketi installimiseks on kaks võimalust. Esimene hõlmab Pythoni paketihalduri pip kasutamist:

pip installige tensorflow

Teine viis on seotud Anacondaga, saame paketi installida järgmiselt:

conda install -c conda-forge tensorflow

Otsige julgelt öiseid järkusid ja GPU versioone TensorFlow ametlikelt installimislehtedelt.

Selle õppetunni kõigi näidete jaoks kasutan Anaconda haldurit. Käivitan sama jaoks Jupyteri märkmiku:

Nüüd, kui kõik impordilaused on valmis koodi kirjutama, alustame SciPy paketiga sukeldumist mõne praktilise näite abil.

Mis on tenorid?

Tensorid on Tensorflowis kasutatavad põhiandmete struktuurid. Jah, need on lihtsalt viis andmete esitamiseks sügavas õppes. Kujutleme neid siin:

Nagu pildil kirjeldatud, tenoreid võib nimetada n-mõõtmeliseks massiiviks mis võimaldab meil andmeid esitada keerulistes mõõtmetes. Võime mõelda igast dimensioonist kui andmete erinevast tunnusest süvaõppimisel. See tähendab, et Tensorid võivad paljude funktsioonidega keerukatest andmekogumitest üsna keerukaks kasvada.

Kui teame, mis on Tensors, on minu arvates TensorFlow'is toimuva tuletamine üsna lihtne. Need terminid tähendavad seda, kuidas tenorid või funktsioonid saavad andmekogumites voolata, et toota väärtuslikku väljundit, kui me sellega erinevaid toiminguid teeme.

TensorFlow konstantidega mõistmine

Täpselt nii, nagu me eespool lugesime, võimaldab TensorFlow meil väärtuslike väljundite saamiseks Tensoritel masinõppe algoritme täita. TensorFlow abil on Deep Learning mudelite kujundamine ja koolitamine otsekohene.

TensorFlow on varustatud ehitamisega Arvutusgraafikud. Arvutusgraafikud on andmevoo graafikud, kus matemaatilised toimingud on kujutatud sõlmedena ja andmed servadena nende sõlmede vahel. Kirjutage konkreetse visualiseerimise pakkumiseks väga lihtne koodijupp:

impordi tensorflow tf-na
x = tf.konstant (5)
y = tf.konstant (6)
z = x * y
trükk (z)

Selle näite käivitamisel näeme järgmist väljundit:

Miks korrutamine on vale? Seda me ei oodanud. See juhtus seetõttu, et nii ei saa me TensorFlow'ga toiminguid teha. Esiteks peame alustama a seanss arvutusgraafiku tööle saamiseks,

Sessionsi abil saame kapselduma tensorite tegevuse ja seisundi kontroll. See tähendab, et seanss saab salvestada ka arvutusgraafiku tulemuse, nii et see saaks selle tulemuse edasi anda torujuhtmete täitmise järjekorras. Õige tulemuse saamiseks loome nüüd seansi:

# Alustage seansiobjektist
seanss = tf.Seanss ()
# Esitage arvutus seansile ja salvestage see
tulemus = seanss.jooks (z)
# Prindi arvutamise tulemus
print (tulemus)
# Sule seanss
seanss.Sulge()

Seekord saime seansi ja andsime talle arvutuse, mida see vajab sõlmedes töötamiseks. Selle näite käivitamisel näeme järgmist väljundit:

Kuigi saime TensorFlow'lt hoiatuse, saime arvutusest siiski õige väljundi.

Üheelemendilised tensoritoimingud

Nii nagu viimases näites korrutasime kaks konstantset tensorit, on meil ka TensorFlow'is palju muid toiminguid, mida saab teha üksikute elementidega:

Ühe elemendiga toimingud tähendavad, et isegi massiivi pakkumisel tehakse toimingud selle massiivi iga elemendiga. Näiteks:

impordi tensorflow tf-na
impordi numpy kui np
tensor = np.massiiv ([2, 5, 8])
tensor = tf.convert_to_tensor (tensor, dtype = tf.float64)
koos tf-ga.Seanss () seansina:
print (seanss.jooksma (tf.cos (tensor)))

Selle näite käivitamisel näeme järgmist väljundit:

Mõistsime siin kahte olulist mõistet:

  1. Iga NumPy massiivi saab funktsiooni convert_to_tensor abil hõlpsasti teisendada Tensoriks
  2. Toiming viidi läbi iga massiivi NumPy elemendiga

Kohahoidjad ja muutujad

Ühes eelmises jaotises vaatasime, kuidas saaksime Tensorflow konstantide abil arvutuslikke graafikuid teha. Kuid TensorFlow võimaldab meil ka sisendeid jooksu pealt võtta, et arvutusgraafik oleks oma olemuselt dünaamiline. See on võimalik kohahoidjate ja muutujate abil.

Tegelikult ei sisalda kohatäited andmeid ja neile tuleb esitada käitamise ajal kehtivad sisendid ning ootuspäraselt, ilma sisendita, tekitavad need vea.

Kohatäitjat võib graafikus nimetada kokkuleppeks, et sisend antakse kindlasti käitusajal. Siin on näide kohatäitjatest:

impordi tensorflow tf-na
# Kaks kohatäidet
x = tf. kohahoidja (tf.float32)
y = tf. kohahoidja (tf.float32)
# Korrutamisoperatsiooni määramine w.r.t. a & b sõlme mul
z = x * y
# Loo seanss
seanss = tf.Seanss ()
# Edastage paigutuste väärtused
tulemus = seanss.jooks (z, x: [2, 5], y: [3, 7])
print ('x ja y korrutamine:', tulemus)

Selle näite käivitamisel näeme järgmist väljundit:

Nüüd, kui meil on teadmisi kohahoidjate kohta, pöörame pilgu muutujate poole. Me teame, et võrrandi väljund võib sama sisendite komplekti puhul aja jooksul muutuda. Nii et kui me koolitame oma mudeli muutujat, võib see aja jooksul oma käitumist muuta. Selle stsenaariumi korral võimaldab muutuja meil lisada need treenitavad parameetrid meie arvutusgraafikusse. Muutuja saab määratleda järgmiselt:

x = tf.Muutuja ([5.2], dtype = tf.float32)

Ülaltoodud võrrandis on x muutuja, mis esitab selle algväärtuse ja andmetüübi. Kui me ei esita andmetüüpi, järeldab TensorFlow selle algväärtusega. Siit leiate TensorFlow andmetüübid.

Erinevalt konstandist peame graafiku kõigi muutujate lähtestamiseks kutsuma Pythoni funktsiooni:

init = tf.global_variables_initializer ()
seanss.käima (init)

Enne oma graafiku kasutamist käivitage kindlasti ülaltoodud funktsioon TensorFlow.

Lineaarne regressioon TensorFlow abil

Lineaarne regressioon on üks levinumaid algoritme, mida kasutatakse seose loomiseks antud pidevates andmetes. Seda suhet koordinaatpunktide, näiteks x ja y vahel nimetatakse a-ks hüpotees. Kui räägime lineaarsest regressioonist, on hüpotees sirge:

y = mx + c

Siin m on sirge kalle ja siin vektor, mis esindab kaalud. c on konstantkoefitsient (y-lõikepunkt) ja siin tähistab see Eelarvamus. Kaalu ja eelarvamusi nimetatakse mudeli parameetrid.

Lineaarsed regressioonid võimaldavad meil hinnata kaalu ja kallutatuse väärtusi nii, et meil oleks miinimum kulude funktsioon. Lõpuks on x võrrandi sõltumatu muutuja ja y sõltuv muutuja. Alustame nüüd lineaarset mudelit TensorFlow'is lihtsa koodijupiga, mida me selgitame:

impordi tensorflow tf-na
# Parameetri kalle (W) muutujad algväärtusega 1.1
W = tf.Muutuja ([1.1], tf.float32)
# Muutuja eelarvamuse (b) jaoks algväärtusega -1.1
b = tf.Muutuja ([- 1.1], tf.float32)
# Sisendi või sõltumatu muutuja esitamise kohatäited, tähistatud tähega x
x = tf.kohahoidja (tf.float32)
# Joone võrrand või lineaarne regressioon
lineaarne_mudel = W * x + b
# Kõigi muutujate lähtestamine
seanss = tf.Seanss ()
init = tf.global_variables_initializer ()
seanss.käima (init)
# Käivita regressioonimudel
print (seanss.run (linear_model x: [2, 5, 7, 9]))

Siin tegime just seda, mida me varem selgitasime, võtame siin kokku:

Selle näite käivitamisel näeme järgmist väljundit:

Lihtne koodilõik annab lihtsalt põhiidee selle kohta, kuidas me saame regressioonimudeli üles ehitada. Ehitatud mudeli lõpuleviimiseks peame siiski veel mõned toimingud tegema:

Kaotuse funktsioon ja mudeli kinnitamine

Mudeli kinnitamiseks peab meil olema mõõt, kuidas praegune väljund on eeldatavast väljundist kõrvale kaldunud. Siin on valideerimiseks erinevaid kadumisfunktsioone, kuid vaatame ühte levinumat meetodit, Ruutvea või SSE summa.

SSE võrrand on esitatud järgmiselt:

E = 1/2 * (t - y) 2

Siin:

Kirjutagem nüüd koodilõik jätkuks viimasele koodilõigule, et kajastada kaotuse väärtust:

y = tf.kohahoidja (tf.float32)
viga = lineaarne_mudel - y
ruudulised vead = tf.ruut (viga)
kaotus = tf.reduc_sum (ruudu_vead)
print (seanss.jooks (kaotus, x: [2, 5, 7, 9], y: [2, 4, 6, 8])

Selle näite käivitamisel näeme järgmist väljundit:

On selge, et kaotuse väärtus on antud lineaarse regressioonimudeli puhul väga madal.

Järeldus

Selles tunnis vaatasime ühte kõige populaarsemat süvaõppe ja masinõppe paketti TensorFlow. Tegime ka lineaarse regressioonimudeli, millel oli väga suur täpsus.

Kuidas kasutada AutoKeyt Linuxi mängude automatiseerimiseks
AutoKey on Linuxi ja X11 töölaua automatiseerimise utiliit, mis on programmeeritud Python 3, GTK ja Qt. Selle skriptimise ja MACRO funktsionaalsuse ab...
Kuidas näidata FPS-loendurit Linuxi mängudes
Linuxi mängimine sai suure tõuke, kui Valve teatas Steam-kliendi ja nende mängude Linuxi toest 2012. aastal. Sellest ajast peale on paljud AAA- ja ind...
Sid Meieri Civilization VI allalaadimine ja mängimine Linuxis
Sissejuhatus mängu Civilization 6 on kaasaegne kontseptsioon, mis tutvustati Age of Empires mängude sarjas. Idee oli üsna lihtne; alustaksite kõige põ...