Data Science

Výukový program Python Tensorflow

Výukový program Python Tensorflow
V této lekci se podíváme na TensorFlow, což je knihovna strojového učení s otevřeným zdrojovým kódem používaná k navrhování, vytváření a trénování modelů hlubokého učení. Je možné provádět numerické výpočty s knihovnou TensorFlow, které grafy toku dat, ve kterých jsou matematické operace reprezentovány jako uzly a data jsou reprezentována jako hrany mezi těmito uzly.

Celkově se v této lekci budeme zabývat třemi hlavními tématy:

  1. Co jsou Tensors a TensorFlow
  2. Aplikování ML algoritmů s TensorFlow
  3. Případy použití TensorFlow

TensorFlow je vynikající balíček Pythonu od společnosti Google, který dobře využívá paradigma programování toku dat pro vysoce optimalizované matematické výpočty. Některé z funkcí TensorFlow jsou:

Díky všem těmto funkcím a řadě algoritmů strojového učení je TensorFlow implementací, což z ní dělá knihovnu produkčního měřítka. Pojďme se ponořit do konceptů v TensorFlow, abychom si mohli hned zašpinit ruce kódem.

Instalace TensorFlow

Protože budeme využívat Python API pro TensorFlow, je dobré vědět, že funguje s oběma Python 2.7 a 3.3+ verze. Pojďme si nainstalovat knihovnu TensorFlow, než přejdeme ke skutečným příkladům a konceptům. Existují dva způsoby instalace tohoto balíčku. První zahrnuje použití správce balíčků Pythonu, pip:

pip nainstalujte tensorflow

Druhý způsob se týká Anacondy, balíček můžeme nainstalovat jako:

conda install -c conda-forge tensorflow

Neváhejte hledat noční verze a verze GPU na oficiálních instalačních stránkách TensorFlow.

U všech příkladů v této lekci budu používat správce Anaconda. Stejným způsobem spustím notebook Jupyter:

Nyní, když jsme připraveni se všemi dovozními příkazy napsat nějaký kód, pojďme se ponořit do balíčku SciPy s několika praktickými příklady.

Co jsou tenzory?

Tenzory jsou základní datové struktury používané v Tensorflow. Ano, jsou to jen způsob, jak reprezentovat data v hlubokém učení. Pojďme si je zde představit:

Jak je popsáno na obrázku, tenzory lze označit jako n-rozměrné pole což nám umožňuje reprezentovat data ve složitých dimenzích. Každou dimenzi můžeme v hlubokém učení považovat za jinou vlastnost dat. To znamená, že Tensors mohou vyrůst jako poměrně složité, pokud jde o složité datové sady s mnoha funkcemi.

Jakmile víme, co jsou Tensors, myslím, že je docela snadné odvodit, co se stane v TensorFlow. Tyto pojmy znamenají, jak v datových sadách mohou proudit tenzory nebo funkce, které produkují hodnotný výstup, když na něm provádíme různé operace.

Porozumění TensorFlow s konstantami

Jak jsme si přečetli výše, TensorFlow nám umožňuje provádět algoritmy strojového učení na Tensorech a vytvářet hodnotný výstup. S TensorFlow je návrh a trénink modelů Deep Learning přímočarý.

TensorFlow je dodáván s budovou Výpočetní grafy. Výpočtové grafy jsou grafy toku dat, ve kterých jsou matematické operace reprezentovány jako uzly a data jsou reprezentována jako hrany mezi těmito uzly. Napíšeme velmi jednoduchý fragment kódu, který poskytne konkrétní vizualizaci:

importovat tensorflow jako tf
x = tf.konstantní (5)
y = tf.konstantní (6)
z = x * y
tisk (z)

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Proč je násobení špatné? To nebylo to, co jsme očekávali. Stalo se to proto, že takto nemůžeme provádět operace s TensorFlow. Nejprve musíme začít a zasedání aby výpočetní graf fungoval,

U relací můžeme zapouzdřit řízení provozu a stavu tenzorů. To znamená, že relace může také uložit výsledek výpočtového grafu, aby mohl tento výsledek předat další operaci v pořadí provedení potrubí. Vytvořme nyní relaci, abychom získali správný výsledek:

# Začněte s objektem relace
relace = tf.Zasedání()
# Poskytněte výpočet relaci a uložte ji
výsledek = relace.běh (z)
# Vytiskněte výsledek výpočtu
tisk (výsledek)
# Uzavřít relaci
zasedání.zavřít()

Tentokrát jsme relaci získali a poskytli jí výpočet, který potřebuje k běhu na uzlech. Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Přestože jsme obdrželi varování od TensorFlow, stále jsme dostali správný výstup z výpočtu.

Jednoprvkové tenzorové operace

Stejně jako to, co jsme v posledním příkladu znásobili dva konstantní Tensory, máme v TensorFlow mnoho dalších operací, které lze provést na jednotlivých prvcích:

Single-element operations means that even when you provide an array, the operations will be done on each of the element of that array. Například:

importovat tensorflow jako tf
importovat numpy jako np
tenzor = np.pole ([2, 5, 8])
tenzor = tf.convert_to_tensor (tensor, dtype = tf.float64)
s tf.Session () jako relace:
tisk (relace.běh (tf.cos (tenzor)))

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Pochopili jsme zde dva důležité pojmy:

  1. Libovolné pole NumPy lze snadno převést na Tensor pomocí funkce convert_to_tensor
  2. Operace byla provedena u každého z prvků pole NumPy

Zástupné symboly a proměnné

V jedné z předchozích částí jsme se podívali na to, jak můžeme použít konstanty Tensorflow k vytváření výpočetních grafů. Ale TensorFlow nám také umožňuje přijímat vstupy za běhu, takže výpočetní graf může mít dynamickou povahu. To je možné pomocí zástupných symbolů a proměnných.

Ve skutečnosti zástupné symboly neobsahují žádná data a musí být za běhu poskytnuty platné vstupy a podle očekávání bez zadání vygenerují chybu.

Zástupný symbol lze v grafu označit jako dohodu, že za běhu bude jistě poskytnut vstup. Zde je příklad zástupných symbolů:

importovat tensorflow jako tf
# Dva zástupné symboly
x = tf. zástupný symbol (tf.float32)
y = tf. zástupný symbol (tf.float32)
# Přiřazení operace násobení w.r.t. A & b do uzlu mul
z = x * y
# Vytvořte relaci
relace = tf.Zasedání()
# Předejte hodnoty pro placehollders
výsledek = relace.běh (z, x: [2, 5], y: [3, 7])
print ('Násobení x a y:', výsledek)

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Nyní, když máme znalosti o zástupných symbolech, se zaměřme na Variables. Víme, že výstup rovnice se může v průběhu času měnit pro stejnou sadu vstupů. Když tedy trénujeme naši proměnnou modelu, může časem změnit své chování. V tomto scénáři nám proměnná umožňuje přidat tyto trénovatelné parametry do našeho výpočetního grafu. Proměnnou lze definovat takto:

x = tf.Proměnná ([5.2], dtype = tf.float32)

Ve výše uvedené rovnici je x proměnná, která poskytuje svoji počáteční hodnotu a datový typ. Pokud neposkytneme datový typ, odvodí jej TensorFlow s jeho počáteční hodnotou. Zde se podívejte na datové typy TensorFlow.

Na rozdíl od konstanty musíme pro inicializaci všech proměnných grafu zavolat funkci Pythonu:

init = tf.global_variables_initializer ()
zasedání.spustit (init)

Než použijeme náš graf, nezapomeňte spustit výše uvedenou funkci TensorFlow.

Lineární regrese s TensorFlow

Lineární regrese je jedním z nejběžnějších algoritmů používaných k navázání vztahu v daných kontinuálních datech. Tento vztah mezi souřadnými body, řekněme xay, se nazývá a hypotéza. Když mluvíme o lineární regrese, hypotéza je přímka:

y = mx + c

Zde m je sklon přímky a zde je to vektor představující závaží. c je konstantní koeficient (průsečík y) a zde představuje Zaujatost. Hmotnost a předpětí se nazývají parametry modelu.

Lineární regrese nám umožňuje odhadnout hodnoty hmotnosti a zkreslení tak, že máme minimum nákladová funkce. Nakonec x je nezávislá proměnná v rovnici a y je závislá proměnná. Nyní pojďme začít stavět lineární model v TensorFlow pomocí jednoduchého fragmentu kódu, který vysvětlíme:

importovat tensorflow jako tf
# Proměnné pro sklon parametru (W) s počáteční hodnotou 1.1
W = tf.Proměnná ([1.1], srov.float32)
# Proměnná pro zkreslení (b) s počáteční hodnotou -1.1
b = tf.Proměnná ([- 1.1], srov.float32)
# Zástupné symboly pro zadání vstupu nebo nezávislé proměnné, označené x
x = tf.zástupný symbol (tf.float32)
# Rovnice přímky nebo lineární regrese
linear_model = W * x + b
# Inicializace všech proměnných
relace = tf.Zasedání()
init = tf.global_variables_initializer ()
zasedání.spustit (init)
# Proveďte regresní model
tisk (relace.běh (linear_model x: [2, 5, 7, 9]))

Zde jsme udělali přesně to, co jsme vysvětlili dříve, pojďme to shrnout zde:

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Jednoduchý fragment kódu poskytuje pouze základní představu o tom, jak můžeme vytvořit regresní model. K dokončení modelu, který jsme postavili, však musíme udělat ještě několik kroků:

Ztráta funkce a ověření modelu

K ověření modelu potřebujeme mít míru míry odchylky aktuálního výstupu od očekávaného výstupu. Existují různé funkce ztráty, které lze zde použít k ověření, ale podíváme se na jednu z nejběžnějších metod, Součet čtvercových chyb nebo SSE.

Rovnice pro SSE je uvedena jako:

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

Tady:

Nyní napíšeme fragment kódu v návaznosti na poslední fragment, aby odrážel hodnotu ztráty:

y = tf.zástupný symbol (tf.float32)
chyba = linear_model - r
squared_errors = tf.čtverec (chyba)
ztráta = tf.redukovat_součet (čtvercové chyby)
tisk (relace.běh (ztráta, x: [2, 5, 7, 9], y: [2, 4, 6, 8]))

Když spustíme tento příklad, uvidíme následující výstup: When we run this example, we will see the following output:

Je zřejmé, že hodnota ztráty je pro daný model lineární regrese velmi nízká.

Závěr

V této lekci jsme se podívali na jeden z nejpopulárnějších balíčků Deep Learning and Machine Learning, TensorFlow. Také jsme vytvořili lineární regresní model, který měl velmi vysokou přesnost.

Má ethernetový kabel význam?
Při nastavování zařízení připojených k internetu v našich domácnostech nebo kancelářích je kabeláž jednou věcí, které nevěnujeme velkou pozornost, pok...
Nejlepší prodlužovače ethernetového kabelu
Vzhledem k tomu, že svět bude bezdrátový, zdá se být triviální dokonce uvažovat o nákupu kabelů pro lepší připojení. Ale když signály selžou a rychlos...
Nejlepší případy Raspberry Pi 4 pro nadšence
Ačkoli ke spuštění Pi nepotřebujete pouzdro Raspberry Pi, mnoho uživatelů chce robustní pouzdro na ochranu svého jednodeskového počítače. Poskytuje ne...