Biblioteki i frameworki
W tym rozdziale będziemy odnosić głębokie uczenie się do różnych bibliotek i frameworków.
Uczenie głębokie i Theano
Jeśli chcemy zacząć kodować głęboką sieć neuronową, lepiej mieć pojęcie, jak działają różne frameworki, takie jak Theano, TensorFlow, Keras, PyTorch itp.
Theano to biblioteka Pythona, która zapewnia zestaw funkcji do budowania głębokich sieci, które szybko trenują na naszej maszynie.
Theano zostało opracowane na Uniwersytecie w Montrealu w Kanadzie pod kierownictwem Yoshua Bengio, pioniera głębokiej sieci.
Theano pozwala nam definiować i oceniać wyrażenia matematyczne za pomocą wektorów i macierzy, które są prostokątnymi tablicami liczb.
Z technicznego punktu widzenia zarówno sieci neuronowe, jak i dane wejściowe można przedstawić jako macierze, a wszystkie standardowe operacje sieciowe można przedefiniować jako operacje na macierzach. Jest to ważne, ponieważ komputery mogą bardzo szybko wykonywać operacje na macierzach.
Możemy równolegle przetwarzać wiele wartości macierzy, a jeśli zbudujemy sieć neuronową z tą podstawową strukturą, możemy użyć jednej maszyny z procesorem graficznym do trenowania ogromnych sieci w rozsądnym oknie czasowym.
Jeśli jednak używamy Theano, musimy zbudować głęboką sieć od podstaw. Biblioteka nie zapewnia pełnej funkcjonalności do tworzenia określonego typu głębokiej sieci.
Zamiast tego musimy zakodować każdy aspekt głębokiej sieci, taki jak model, warstwy, aktywacja, metoda szkolenia i wszelkie specjalne metody, aby zatrzymać nadmierne dopasowanie.
Dobrą wiadomością jest jednak to, że Theano umożliwia budowanie naszej implementacji na podstawie wektoryzowanych funkcji, zapewniając nam wysoce zoptymalizowane rozwiązanie.
Istnieje wiele innych bibliotek, które rozszerzają funkcjonalność Theano. TensorFlow i Keras mogą być używane z Theano jako zapleczem.
Głębokie uczenie z TensorFlow
Googles TensorFlow to biblioteka Pythona. Ta biblioteka to doskonały wybór do tworzenia komercyjnych aplikacji do głębokiego uczenia się.
TensorFlow wyrósł z innej biblioteki DistBelief V2, która była częścią Google Brain Project. Ta biblioteka ma na celu rozszerzenie przenośności uczenia maszynowego, tak aby modele badawcze mogły być stosowane w zastosowaniach komercyjnych.
Podobnie jak biblioteka Theano, TensorFlow opiera się na wykresach obliczeniowych, w których węzeł reprezentuje trwałe dane lub operacje matematyczne, a krawędzie reprezentują przepływ danych między węzłami, co jest wielowymiarową tablicą lub tensorem; stąd nazwa TensorFlow
Dane wyjściowe z operacji lub zestawu operacji są przekazywane jako dane wejściowe do następnej.
Mimo że TensorFlow został zaprojektowany dla sieci neuronowych, działa dobrze w innych sieciach, w których obliczenia można modelować jako wykres przepływu danych.
TensorFlow korzysta również z kilku funkcji firmy Theano, takich jak eliminacja wspólnych i podwyrażeń, automatyczne różnicowanie, zmienne współdzielone i symboliczne.
Za pomocą TensorFlow można budować różne typy sieci głębokich, takie jak sieci konwolucyjne, Autoenkodery, RNTN, RNN, RBM, DBM / MLP i tak dalej.
Jednak w TensorFlow nie ma wsparcia dla konfiguracji hiperparametrów, w tym celu możemy użyć Keras.
Deep Learning i Keras
Keras to potężna, łatwa w użyciu biblioteka Pythona do tworzenia i oceny modeli uczenia głębokiego.
Ma minimalistyczny design, który pozwala nam budować siatkę warstwa po warstwie; wytrenuj i uruchom.
Obejmuje wydajne biblioteki obliczeń numerycznych Theano i TensorFlow i pozwala nam definiować i trenować modele sieci neuronowych w kilku krótkich liniach kodu.
Jest to interfejs API sieci neuronowej wysokiego poziomu, pomagający w szerokim wykorzystaniu głębokiego uczenia i sztucznej inteligencji. Działa na wielu bibliotekach niższego poziomu, w tym TensorFlow, Theano i tak dalej. Kod Keras jest przenośny; możemy zaimplementować sieć neuronową w Kerasie używając Theano lub TensorFlow jako back-end bez żadnych zmian w kodzie.