Data Science

Výukový program pre Python Tensorflow

Výukový program pre Python Tensorflow
V tejto lekcii sa pozrieme na TensorFlow, čo je open-source knižnica strojového učenia používaná na navrhovanie, vytváranie a výcvik modelov hlbokého učenia. S knižnicou TensorFlow je možné vykonávať numerické výpočty, ktoré grafy toku dát, v ktorých sú matematické operácie reprezentované ako uzly a dáta ako hrany medzi týmito uzlami.

Celkovo sa v tejto lekcii budeme venovať trom hlavným témam:

  1. Čo sú Tensors a TensorFlow
  2. Aplikácia algoritmov ML s TensorFlow
  3. Prípady použitia TensorFlow

TensorFlow je vynikajúci balík Pythonu od spoločnosti Google, ktorý dobre využíva paradigmu programovania toku dát pre vysoko optimalizované matematické výpočty. Niektoré z funkcií TensorFlow sú:

Vďaka všetkým týmto funkciám a širokej škále algoritmov strojového učenia sa z TensorFlow stáva knižnica produkčného rozsahu. Poďme sa ponoriť do konceptov v TensorFlow, aby sme si mohli hneď potom znečistiť ruky kódom.

Inštaluje sa TensorFlow

Pretože budeme využívať Python API pre TensorFlow, je dobré vedieť, že funguje s oboma Python 2.7 a 3.3+ verzie. Pred prechodom na skutočné príklady a koncepty si nainštalujme knižnicu TensorFlow. Existujú dva spôsoby inštalácie tohto balíka. Prvý zahŕňa použitie správcu balíkov Python, pip:

pip nainštalovať tensorflow

Druhý spôsob sa týka Anacondy, balíček môžeme nainštalovať ako:

conda install -c conda-forge tensorflow

Neváhajte a hľadajte nočné verzie a verzie GPU na oficiálnych inštalačných stránkach TensorFlow.

Pre všetky príklady v tejto lekcii budem používať manažéra Anacondy. Rovnaké spustím aj notebook Jupyter:

Teraz, keď sme pripravení spolu so všetkými príkazmi na import napísať nejaký kód, začnime sa ponoriť do balíka SciPy s niekoľkými praktickými príkladmi.

Čo sú to tenzory?

Tenzory sú základné dátové štruktúry používané v Tensorflowe. Áno, sú to iba spôsoby, ako reprezentovať údaje v hlbokom učení. Poďme si ich predstaviť tu:

Ako je to popísané na obrázku, tenzory možno označiť ako n-rozmerné pole čo nám umožňuje reprezentovať údaje v zložitých dimenziách. Každú dimenziu si môžeme v hlbokom učení predstaviť ako inú vlastnosť údajov. To znamená, že Tensors môžu vyrásť ako pomerne zložité, pokiaľ ide o komplexné súbory údajov s mnohými funkciami.

Keď vieme, čo sú Tensors, myslím si, že je celkom ľahké odvodiť, čo sa stane v TensorFlow. Tieto výrazy znamenajú, ako môžu tenzory alebo funkcie prúdiť v množinách údajov, aby produkovali hodnotný výstup, keď na ňom vykonávame rôzne operácie.

Pochopenie funkcie TensorFlow s konštantami

Ako sme si prečítali vyššie, TensorFlow nám umožňuje vykonávať algoritmy strojového učenia na Tensoroch a produkovať hodnotný výstup. S TensorFlow je navrhovanie a školenie modelov Deep Learning priamočiare.

TensorFlow sa dodáva s budovou Výpočtové grafy. Výpočtové grafy sú grafy toku údajov, v ktorých sú matematické operácie reprezentované ako uzly a dáta ako hrany medzi týmito uzlami. Napíšme veľmi jednoduchý útržok kódu, ktorý poskytuje konkrétnu vizualizáciu:

import tensorflow ako tf
x = tf.konštantný (5)
y = tf.konštantný (6)
z = x * y
tlač (z)

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Prečo je násobenie nesprávne? To nebolo to, čo sme očakávali. Stalo sa to, pretože takto nemôžeme vykonávať operácie s TensorFlow. Najprv musíme začať a zasadanie aby výpočtový graf fungoval,

Vďaka reláciám môžeme zapuzdriť kontrolu prevádzky a stavu tenzorov. To znamená, že relácia môže tiež uložiť výsledok výpočtového grafu, aby mohla odovzdať tento výsledok ďalšej operácii v poradí vykonania potrubí. Vytvorme teraz reláciu, aby sme dosiahli správny výsledok:

# Začnite s objektom relácie
relácia = tf.Relácia ()
# Poskytnite výpočet relácii a uložte ju
výsledok = relácia.beh (z)
# Vytlačte výsledok výpočtu
tlač (výsledok)
# Uzavretie relácie
zasadanie.Zavrieť()

Tentokrát sme získali reláciu a poskytli jej výpočet, ktorý je potrebný na spustenie na uzloch. Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Aj keď sme dostali varovanie od TensorFlow, z výpočtu sme stále dostali správny výstup.

Jednoprvkové tenzorové operácie

Rovnako ako to, čo sme v poslednom príklade znásobili dva konštantné tenzory, máme v TensorFlow mnoho ďalších operácií, ktoré je možné vykonať na jednotlivých prvkoch:

Operácie s jedným prvkom znamenajú, že aj keď poskytnete pole, operácie sa vykonajú s každým z prvkov tohto poľa. Napríklad:

import tensorflow ako tf
importovať numpy ako np
tenzor = np.pole ([2, 5, 8])
tenzor = tf.convert_to_tensor (tensor, dtype = tf.float64)
s tf.Relácia () ako relácia:
tlač (relácia.beh (tf.cos (tenzor)))

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Pochopili sme tu dva dôležité pojmy:

  1. Akékoľvek pole NumPy možno ľahko konvertovať na Tensor pomocou funkcie convert_to_tensor
  2. Operácia sa uskutočnila s každým z prvkov poľa NumPy

Zástupné symboly a premenné

V jednej z predchádzajúcich častí sme sa pozreli na to, ako môžeme pomocou konštánt Tensorflow vytvárať výpočtové grafy. Ale TensorFlow nám tiež umožňuje brať vstupy za behu, aby výpočtový graf mohol mať dynamickú povahu. To je možné pomocou zástupných symbolov a premenných.

Zástupné symboly v skutočnosti neobsahujú žiadne údaje a musia byť za behu modulu poskytnuté platné vstupy a podľa očakávania bez zadania budú bez chyby generovať chybu.

Zástupný symbol možno v grafe označiť ako dohodu, že za behu bude určite poskytnutý vstup. Tu je príklad zástupných symbolov:

import tensorflow ako tf
# Dva zástupné symboly
x = tf. zástupný symbol (tf.float32)
y = tf. zástupný symbol (tf.float32)
# Priradenie operácie násobenia w.r.t. a & b na uzol mul
z = x * y
# Vytvorte reláciu
relácia = tf.Relácia ()
# Odovzdajte hodnoty placehollders
výsledok = relácia.beh (z, x: [2, 5], y: [3, 7])
print ('Výsledok vynásobením x a y:')

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Teraz, keď máme vedomosti o zástupných symboloch, obráťme pozornosť na Premenné. Vieme, že výstup rovnice sa môže v priebehu času meniť pre rovnakú množinu vstupov. Keď teda trénujeme našu premennú modelu, môže časom meniť svoje správanie. V tomto scenári nám premenná umožňuje pridať tieto trénovateľné parametre do nášho výpočtového grafu. Premennú je možné definovať takto:

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

Vo vyššie uvedenej rovnici je x premenná, ktorej je poskytnutá počiatočná hodnota a dátový typ. Ak neposkytneme údajový typ, odvodí ho TensorFlow s jeho počiatočnou hodnotou. Tu nájdete dátové typy TensorFlow.

Na rozdiel od konštanty musíme zavolať funkciu Python, aby sme inicializovali všetky premenné grafu:

init = tf.global_variables_initializer ()
zasadanie.spustiť (init)

Skôr ako použijeme náš graf, nezabudnite spustiť vyššie uvedenú funkciu TensorFlow.

Lineárna regresia s TensorFlow

Lineárna regresia je jedným z najbežnejších algoritmov používaných na vytvorenie vzťahu v daných nepretržitých dátach. Tento vzťah medzi súradnicovými bodmi, napríklad x a y, sa nazýva a hypotéza. Keď hovoríme o lineárnej regresii, hypotéza je priamka:

y = mx + c

Tu m je sklon priamky a tu predstavuje vektor závažia. c je konštantný koeficient (priesečník y) a tu predstavuje Zaujatosť. Váha a predpätie sa nazývajú parametre modelu.

Lineárne regresie nám umožňujú odhadnúť hodnoty hmotnosti a predpätia tak, aby sme mali minimum nákladová funkcia. Nakoniec je x nezávislá premenná v rovnici a y je závislá premenná. Teraz začnime vytvárať lineárny model v TensorFlow pomocou jednoduchého útržku kódu, ktorý vysvetlíme:

import tensorflow ako tf
# Premenné pre sklon parametra (W) s počiatočnou hodnotou ako 1.1
W = tf.Premenná ([1.1], tf.float32)
# Premenná pre skreslenie (b) s počiatočnou hodnotou ako -1.1
b = tf.Premenná ([- 1.1], tf.float32)
# Zástupné symboly na zadanie vstupu alebo nezávislej premennej, označené x
x = tf.zástupný symbol (tf.float32)
# Rovnica priamky alebo lineárna regresia
linear_model = W * x + b
# Inicializácia všetkých premenných
relácia = tf.Relácia ()
init = tf.global_variables_initializer ()
zasadanie.spustiť (init)
# Vykonajte regresný model
tlač (relácia.beh (linear_model x: [2, 5, 7, 9]))

Tu sme urobili to, čo sme už vysvetlili, zhrňme to tu:

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Jednoduchý úryvok kódu poskytuje iba základnú predstavu o tom, ako môžeme zostaviť regresný model. Na dokončenie modelu, ktorý sme vytvorili, však musíme urobiť ešte niekoľko krokov:

Strata funkcie a validácia modelu

Na overenie modelu potrebujeme mať mieru odchýlky aktuálneho výstupu od očakávaného. Existuje niekoľko stratových funkcií, ktoré sa tu dajú použiť na validáciu, ale pozrieme sa na jednu z najbežnejších metód, Súčet štvorcových chýb alebo SSE.

Rovnica pre SSE je uvedená ako:

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

Tu:

Teraz napíšeme úryvok kódu nadväzne na posledný úryvok, aby odrážal hodnotu straty:

y = tf.zástupný symbol (tf.float32)
chyba = linear_model - r
squared_errors = tf.štvorec (chyba)
strata = tf.redukovať_sum (štvorcové_ chyby)
tlač (relácia.beh (strata, x: [2, 5, 7, 9], y: [2, 4, 6, 8]))

Keď spustíme tento príklad, uvidíme nasledujúci výstup:

Je zrejmé, že hodnota straty je pre daný model lineárnej regresie veľmi nízka.

Záver

V tejto lekcii sme sa pozreli na jeden z najpopulárnejších balíkov Hlboké učenie a strojové učenie, TensorFlow. Tiež sme vytvorili lineárny regresný model, ktorý mal veľmi vysokú presnosť.

Recenzia bezdrôtovej myši Microsoft Sculpt Touch
Nedávno som čítal o Microsoft Sculpt Touch bezdrôtová myš a rozhodol sa ju kúpiť. Po chvíli používania som sa rozhodol s ním podeliť o svoje skúsenost...
Trackpad a ukazovateľ myši AppyMouse na obrazovke pre tablety so systémom Windows
Používateľom tabletov často chýba ukazovateľ myši, najmä keď notebooky bežne používajú. Dotykové smartphony a tablety majú veľa výhod a jediným obmedz...
Stredné tlačidlo myši nefunguje v systéme Windows 10
The stredné tlačidlo myši pomáha vám prechádzať dlhé webové stránky a obrazovky s množstvom údajov. Ak sa to zastaví, budete nakoniec používať klávesn...