Co to jest TensorFlow? Jak to działa? Wprowadzenie i Architektura

Spisie treści:

Anonim

Zacznijmy ten samouczek od wprowadzenia do TensorFlow:

Co to jest TensorFlow?

TensorFlow to kompleksowa platforma typu open source do tworzenia aplikacji do uczenia maszynowego. Jest to symboliczna biblioteka matematyczna, która wykorzystuje przepływ danych i programowanie zróżnicowane do wykonywania różnych zadań skoncentrowanych na uczeniu i wnioskowaniu z głębokich sieci neuronowych. Umożliwia programistom tworzenie aplikacji do uczenia maszynowego przy użyciu różnych narzędzi, bibliotek i zasobów społeczności.

Obecnie najbardziej znaną biblioteką głębokiego uczenia się na świecie jest Google TensorFlow. Produkt Google wykorzystuje systemy uczące się we wszystkich swoich produktach, aby ulepszyć wyszukiwarkę, tłumaczenie, podpisy do zdjęć lub rekomendacje.

Aby dać konkretny przykład, użytkownicy Google mogą doświadczyć szybszego i bardziej precyzyjnego wyszukiwania za pomocą sztucznej inteligencji. Jeśli użytkownik wpisze słowo kluczowe w pasku wyszukiwania, Google podpowie, jakie może być następne słowo.

Google chce korzystać z systemów uczących się, aby wykorzystać swoje ogromne zbiory danych, aby zapewnić użytkownikom jak najlepsze wrażenia. Trzy różne grupy używają uczenia maszynowego:

  • Badacze
  • Naukowcy zajmujący się danymi
  • Programiści.

Wszyscy mogą używać tego samego zestawu narzędzi do współpracy i zwiększania swojej wydajności.

Google nie tylko dysponuje danymi; mają najbardziej masywny komputer na świecie, więc Tensor Flow został zbudowany na dużą skalę. TensorFlow to biblioteka opracowana przez zespół Google Brain w celu przyspieszenia uczenia maszynowego i głębokich badań sieci neuronowych.

Został zbudowany do działania na wielu procesorach lub procesorach graficznych, a nawet na mobilnych systemach operacyjnych, i ma kilka opakowań w kilku językach, takich jak Python, C ++ lub Java.

Dowiesz się z tego samouczka TensorFlow

  • Co to jest TensorFlow?
  • Historia TensorFlow
  • Jak działa TensorFlow
  • Architektura TensorFlow
  • Gdzie może działać Tensorflow?
  • Wprowadzenie do składników TensorFlow
  • Dlaczego TensorFlow jest popularny?
  • Lista znanych algorytmów obsługiwanych przez TensorFlow
  • Prosty przykład TensorFlow
  • Opcje ładowania danych do TensorFlow
  • Utwórz potok Tensorflow

Historia TensorFlow

Kilka lat temu uczenie głębokie zaczęło przewyższać wszystkie inne algorytmy uczenia maszynowego, podając ogromne ilości danych. Google zauważył, że może wykorzystać te głębokie sieci neuronowe do ulepszenia swoich usług:

  • Gmail
  • Zdjęcie
  • Wyszukiwarka Google

Tworzą platformę o nazwie Tensorflow, aby umożliwić naukowcom i programistom współpracę nad modelem sztucznej inteligencji. Raz opracowany i skalowany, pozwala na korzystanie z niego wielu osobom.

Po raz pierwszy został upubliczniony pod koniec 2015 r., Natomiast pierwsza stabilna wersja pojawiła się w 2017 r. Jest to oprogramowanie typu open source na licencji Apache Open Source. Możesz go używać, modyfikować i redystrybuować zmodyfikowaną wersję za opłatą, nie płacąc nic Google.

Następnie w tym samouczku TensorFlow Deep learning dowiemy się o architekturze TensorFlow i o tym, jak działa TensorFlow.

Jak działa TensorFlow

TensorFlow umożliwia tworzenie wykresów i struktur przepływu danych w celu definiowania sposobu, w jaki dane przechodzą przez wykres, przyjmując dane wejściowe jako wielowymiarową tablicę o nazwie Tensor. Pozwala na skonstruowanie schematu blokowego operacji, które można wykonać na tych wejściach, które są umieszczane na jednym końcu i na drugim końcu jako dane wyjściowe.

Architektura TensorFlow

Architektura Tensorflow działa w trzech częściach:

  • Wstępne przetwarzanie danych
  • Zbuduj model
  • Wytrenuj i oszacuj model

Nazywa się Tensorflow, ponieważ pobiera dane wejściowe jako tablicę wielowymiarową, znaną również jako tensory . Możesz skonstruować rodzaj schematu blokowego operacji (zwanego wykresem), który chcesz wykonać na tym wejściu. Wejście wchodzi na jednym końcu, a następnie przepływa przez ten system wielu operacji i wychodzi na drugim końcu jako wyjście.

Dlatego nazywa się TensorFlow, ponieważ tensor przechodzi przez listę operacji, a następnie wychodzi z drugiej strony.

Gdzie może działać Tensorflow?

Wymagania sprzętowe i programowe TensorFlow można podzielić na

Faza rozwoju: To jest, kiedy trenujesz tryb. Szkolenie zwykle odbywa się na komputerze stacjonarnym lub laptopie.

Faza uruchamiania lub faza wnioskowania: Po zakończeniu treningu Tensorflow można uruchomić na wielu różnych platformach. Możesz to uruchomić

  • Komputer stacjonarny z systemem Windows, macOS lub Linux
  • Chmura jako usługa internetowa
  • Urządzenia mobilne, takie jak iOS i Android

Możesz go trenować na wielu maszynach, a następnie możesz uruchomić go na innym komputerze, gdy masz już wytrenowany model.

Model można trenować i używać zarówno na procesorach graficznych, jak i procesorach. Układy GPU były początkowo przeznaczone do gier wideo. Pod koniec 2010 roku naukowcy ze Stanford odkryli, że GPU jest również bardzo dobry w operacjach macierzowych i algebrze, dzięki czemu są bardzo szybcy przy wykonywaniu tego rodzaju obliczeń. Głębokie uczenie polega na mnożeniu wielu macierzy. TensorFlow bardzo szybko oblicza mnożenie macierzy, ponieważ jest napisany w języku C ++. Chociaż jest zaimplementowany w C ++, TensorFlow może być dostępny i kontrolowany przez inne języki, głównie Python.

Wreszcie istotną cechą TensorFlow jest TensorBoard. TensorBoard umożliwia graficzne i wizualne monitorowanie tego, co robi TensorFlow.

Wprowadzenie do składników TensorFlow

Napinacz

Nazwa Tensorflow wywodzi się bezpośrednio z jego podstawowego szkieletu: Tensor . W Tensorflow wszystkie obliczenia obejmują tensory. Tensor to wektor lub macierz n-wymiarów, która reprezentuje wszystkie typy danych. Wszystkie wartości w tensorze mają identyczny typ danych o znanym (lub częściowo znanym) kształcie . Kształt danych to wymiarowość macierzy lub tablicy.

Tensor może pochodzić z danych wejściowych lub z wyniku obliczenia. W TensorFlow wszystkie operacje są przeprowadzane wewnątrz wykresu . Wykres jest zbiorem obliczeń, które odbywają się sukcesywnie. Każda operacja nazywana jest węzłem operacyjnym i jest ze sobą połączona.

Wykres przedstawia operacje i połączenia między węzłami. Jednak nie wyświetla wartości. Krawędź węzłów to tensor, czyli sposób na wypełnienie operacji danymi.

Wykresy

TensorFlow wykorzystuje strukturę grafów. Wykres gromadzi i opisuje wszystkie obliczenia serii wykonane podczas szkolenia. Wykres ma wiele zalet:

  • Zrobiono to, aby działać na wielu procesorach lub procesorach graficznych, a nawet na mobilnym systemie operacyjnym
  • Przenośność wykresu pozwala zachować obliczenia do natychmiastowego lub późniejszego wykorzystania. Wykres można zapisać w celu wykonania w przyszłości.
  • Wszystkie obliczenia na wykresie są wykonywane przez połączenie razem tensorów
    • Tensor ma węzeł i krawędź. Węzeł wykonuje operacje matematyczne i generuje dane wyjściowe punktów końcowych. Krawędzie krawędzi wyjaśniają relacje wejścia / wyjścia między węzłami.

Dlaczego TensorFlow jest popularny?

TensorFlow to najlepsza biblioteka ze wszystkich, ponieważ została zbudowana tak, aby była dostępna dla każdego. Biblioteka Tensorflow zawiera różne API do tworzenia architektury głębokiego uczenia na dużą skalę, takiej jak CNN czy RNN. TensorFlow opiera się na obliczeniach wykresów; pozwala deweloperowi na wizualizację budowy sieci neuronowej za pomocą Tensorboad. To narzędzie jest pomocne w debugowaniu programu. Wreszcie, Tensorflow jest przystosowany do wdrażania na dużą skalę. Działa na CPU i GPU.

Tensorflow cieszy się największą popularnością na GitHub w porównaniu do innych frameworków głębokiego uczenia.

Lista znanych algorytmów obsługiwanych przez TensorFlow

Poniżej znajduje się lista obsługiwanych algorytmów TensorFlow:

Obecnie TensorFlow 1.10 ma wbudowany interfejs API dla:

  • Regresja liniowa: tf.estimator.LinearRegressor
  • Klasyfikacja: tf.estimator.LinearClassifier
  • Klasyfikacja uczenia głębokiego: tf.estimator.DNNClassifier
  • Głębokie uczenie wipe and deep: tf.estimator.DNNLinearCombinedClassifier
  • Regresja drzewa wspomagającego: tf.estimator.BoostedTreesRegressor
  • Zwiększona klasyfikacja drzew: tf.estimator.BoostedTreesClassifier

Prosty przykład TensorFlow

import numpy as npimport tensorflow as tf

W pierwszych dwóch wierszach kodu zaimportowaliśmy tensorflow jako tf. W Pythonie powszechną praktyką jest używanie krótkiej nazwy dla biblioteki. Zaletą jest uniknięcie wpisywania pełnej nazwy biblioteki, gdy musimy z niej skorzystać. Na przykład możemy zaimportować tensorflow jako tf i wywołać tf, gdy chcemy użyć funkcji tensorflow

Przećwiczmy podstawowy przepływ pracy Tensorflow z prostymi przykładami TensorFlow. Utwórzmy wykres obliczeniowy, który mnoży razem dwie liczby.

W tym przykładzie pomnożymy X_1 i X_2 razem. Tensorflow utworzy węzeł do połączenia operacji. W naszym przykładzie nazywa się to mnożeniem. Po wyznaczeniu wykresu silniki obliczeniowe Tensorflow pomnożą się razem X_1 i X_2.

Przykład TensorFlow

Na koniec uruchomimy sesję TensorFlow, która uruchomi wykres obliczeniowy z wartościami X_1 i X_2 i wydrukuje wynik mnożenia.

Zdefiniujmy węzły wejściowe X_1 i X_2. Kiedy tworzymy węzeł w Tensorflow, musimy wybrać rodzaj węzła do utworzenia. Węzły X1 i X2 będą węzłami zastępczymi. Symbol zastępczy przypisuje nową wartość za każdym razem, gdy wykonujemy obliczenia. Utworzymy je jako węzeł zastępczy TF kropki.

Krok 1: Zdefiniuj zmienną

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

Kiedy tworzymy węzeł zastępczy, musimy podać typ danych będzie tutaj dodawany liczby, abyśmy mogli użyć zmiennoprzecinkowego typu danych, użyjmy tf.float32. Musimy również nadać temu węzłowi nazwę. Ta nazwa pojawi się, gdy spojrzymy na graficzne wizualizacje naszego modelu. Nazwijmy ten węzeł X_1, przekazując parametr o nazwie name o wartości X_1, a teraz zdefiniujmy X_2 w ten sam sposób. X_2.

Krok 2: Zdefiniuj obliczenia

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

Teraz możemy zdefiniować węzeł, który wykonuje operację mnożenia. W Tensorflow możemy to zrobić, tworząc węzeł tf.multiply.

Przekażemy węzły X_1 i X_2 do węzła mnożenia. Mówi tensorflow, aby połączyć te węzły w grafie obliczeniowym, więc prosimy go o pobranie wartości z xiy i pomnożenie wyniku. Nadajmy również węzłowi mnożenia nazwę multiply. To jest cała definicja naszego prostego wykresu obliczeniowego.

Krok 3: Wykonaj operację

Aby wykonać operacje na wykresie, musimy stworzyć sesję. W Tensorflow jest to wykonywane przez tf.Session (). Teraz, gdy mamy sesję, możemy poprosić sesję o wykonanie operacji na naszym wykresie obliczeniowym, wywołując sesję. Aby uruchomić obliczenia, musimy użyć polecenia run.

Kiedy operacja dodawania zostanie uruchomiona, zobaczy, że musi pobrać wartości węzłów X_1 i X_2, więc musimy również wprowadzić wartości dla X_1 i X_2. Możemy to zrobić, podając parametr o nazwie feed_dict. Przekazujemy wartość 1,2,3 dla X_1 i 4,5,6 dla X_2.

Wyniki drukujemy za pomocą print (result). Powinniśmy zobaczyć 4, 10 i 18 dla 1x4, 2x5 i 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.]

Opcje ładowania danych do TensorFlow

Pierwszym krokiem przed wytrenowaniem algorytmu uczenia maszynowego jest załadowanie danych. Istnieją dwa popularne sposoby ładowania danych:

1. Załaduj dane do pamięci: jest to najprostsza metoda. Ładujesz wszystkie dane do pamięci jako pojedynczą tablicę. Możesz napisać kod w Pythonie. Te wiersze kodu nie są związane z Tensorflow.

2. Potok danych Tensorflow. Tensorflow ma wbudowane API, które pomaga w ładowaniu danych, wykonywaniu operacji i łatwym zasilaniu algorytmu uczenia maszynowego. Ta metoda działa bardzo dobrze, zwłaszcza gdy masz duży zbiór danych. Na przykład wiadomo, że rekordy obrazów są ogromne i nie mieszczą się w pamięci. Potok danych sam zarządza pamięcią

Jakiego rozwiązania użyć?

Załaduj dane do pamięci

Jeśli Twój zbiór danych nie jest zbyt duży, tj. Mniej niż 10 gigabajtów, możesz użyć pierwszej metody. Dane mogą zmieścić się w pamięci. Możesz użyć słynnej biblioteki o nazwie Pandas do importowania plików CSV. Dowiesz się więcej o pandach w następnym samouczku.

Załaduj dane za pomocą potoku Tensorflow

Druga metoda działa najlepiej, jeśli masz duży zbiór danych. Na przykład, jeśli masz zestaw danych o wielkości 50 gigabajtów, a twój komputer ma tylko 16 gigabajtów pamięci, maszyna ulegnie awarii.

W takiej sytuacji musisz zbudować potok Tensorflow. Potok załaduje dane wsadowo lub w małych porcjach. Każda partia zostanie zepchnięta do rurociągu i będzie gotowa do szkolenia. Budowanie potoku jest doskonałym rozwiązaniem, ponieważ pozwala na korzystanie z obliczeń równoległych. Oznacza to, że Tensorflow wyszkoli model na wielu procesorach. Wspiera obliczenia i pozwala na trenowanie potężnej sieci neuronowej.

W następnych samouczkach zobaczysz, jak zbudować znaczący potok zasilający sieć neuronową.

Krótko mówiąc, jeśli masz mały zestaw danych, możesz załadować dane do pamięci za pomocą biblioteki Pandas.

Jeśli masz duży zbiór danych i chcesz korzystać z wielu procesorów, wygodniej będzie Ci pracować z potokiem Tensorflow.

Utwórz potok Tensorflow

W powyższym przykładzie ręcznie dodajemy trzy wartości dla X_1 i X_2. Teraz zobaczymy, jak załadować dane do Tensorflow.

Krok 1) Utwórz dane

Przede wszystkim użyjmy biblioteki numpy do wygenerowania dwóch losowych wartości.

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

[[0,8835775 0,23766977]]

Krok 2) Utwórz symbol zastępczy

Podobnie jak w poprzednim przykładzie, tworzymy symbol zastępczy o nazwie X. Musimy jawnie określić kształt tensora. W przypadku załadowania tablicy zawierającej tylko dwie wartości. Możemy zapisać kształt jako kształt = [1,2]

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

Krok 3) Zdefiniuj metodę zbioru danych

Następnie musimy zdefiniować zestaw danych, w którym możemy wypełnić wartość symbolu zastępczego x. Musimy użyć metody tf.data.Dataset.from_tensor_slices

dataset = tf.data.Dataset.from_tensor_slices(x)

Krok 4) Utwórz potok

W kroku czwartym musimy zainicjować potok, w którym będą przepływać dane. Musimy stworzyć iterator z make_initializable_iterator. Nazywamy go iteratorem. Następnie musimy wywołać ten iterator, aby dostarczyć kolejną porcję danych, get_next. Nazywamy ten krok get_next. Zwróć uwagę, że w naszym przykładzie jest tylko jedna partia danych zawierająca tylko dwie wartości.

iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()

Krok 5) Wykonaj operację

Ostatni krok jest podobny do poprzedniego przykładu. Inicjujemy sesję i uruchamiamy iterator operacji. Podajemy feed_dict wartością wygenerowaną przez numpy. Te dwie wartości wypełnią symbol zastępczy x. Następnie uruchamiamy get_next, aby wydrukować wynik.

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]

Podsumowanie

Znaczenie TensorFlow: TensorFlow to najsłynniejsza biblioteka głębokiego uczenia ostatnich lat. Praktyk korzystający z TensorFlow może zbudować dowolną strukturę uczenia głębokiego, taką jak CNN, RNN lub prostą sztuczną sieć neuronową.

TensorFlow jest używany głównie przez naukowców, startupy i duże firmy. Google używa TensorFlow w prawie wszystkich codziennych produktach Google, w tym w Gmailu, Zdjęciach i wyszukiwarce Google.

Zespół Google Brain opracował TensorFlow, aby wypełnić lukę między badaczami a twórcami produktów. W 2015 roku upublicznili TensorFlow; szybko zyskuje na popularności. Obecnie TensorFlow to biblioteka do głębokiego uczenia się z największą liczbą repozytoriów w serwisie GitHub.

Praktycy używają Tensorflow, ponieważ jest łatwy do wdrożenia na dużą skalę. Jest zbudowany do pracy w chmurze lub na urządzeniach mobilnych, takich jak iOS i Android.

Tensorflow działa w sesji. Każda sesja jest definiowana przez wykres z różnymi obliczeniami. Prostym przykładem może być pomnożenie przez liczbę. W Tensorflow wymagane są trzy kroki:

  1. Zdefiniuj zmienną
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Zdefiniuj obliczenia
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Wykonaj operację
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)

Jedną z powszechnych praktyk w Tensorflow jest tworzenie potoku do ładowania danych. Jeśli wykonasz te pięć kroków, będziesz mógł załadować dane do TensorFLow

  1. Utwórz dane
import numpy as npx_input = np.random.sample((1,2))print(x_input)
  1. Utwórz symbol zastępczy
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Zdefiniuj metodę zbioru danych
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Utwórz potok
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Uruchom program
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))