Co jeszcze oferuje TensorFlow kamerom?

16

Wiem, że keras służy jako interfejs wysokiego poziomu dla TensorFlow.

Wydaje mi się jednak, że keras może samodzielnie wykonywać wiele funkcji (wprowadzanie danych, tworzenie modeli, szkolenie, ocena).

Co więcej, niektóre funkcje TensorFlow mogą być przeniesione bezpośrednio do keras (np. W keras można użyć funkcji metrycznej tf lub utraty).

Moje pytanie brzmi: co oferuje TensorFlow, którego nie można odtworzyć w kamerach?

Javier
źródło

Odpowiedzi:

15

Struktury głębokiego uczenia działają na 2 poziomach abstrakcji:

  • Niższy poziom : tutaj znajdują się frameworki takie jak Tensorflow, MXNet, Theano i PyTorch. Jest to poziom, na którym realizowane są operacje matematyczne, takie jak generalizacja mnożenia macierzy-macierzy oraz operacje podstawowe sieci neuronowej, takie jak operacje splotowe.
  • Wyższy poziom : tutaj siedzą frameworki takie jak Keras. Na tym poziomie prymitywy niższego poziomu są używane do implementacji abstrakcji sieci neuronowej, takiej jak warstwy i modele. Ogólnie na tym poziomie wdrażane są również inne pomocne interfejsy API, takie jak zapisywanie modeli i szkolenie modeli.

Nie można porównywać Keras i TensorFlow, ponieważ znajdują się one na różnych poziomach abstrakcji. Chcę również skorzystać z okazji, aby podzielić się swoim doświadczeniem związanym z używaniem Keras:

  • Nie zgadzam się, że Keras przydaje się tylko do podstawowej pracy w ramach głębokiego uczenia. Keras to pięknie napisany interfejs API. Funkcjonalny charakter API pomaga Ci całkowicie i przeszkadza w bardziej egzotycznych aplikacjach. Keras nie blokuje dostępu do ram niższego poziomu.
  • Keras zapewnia znacznie bardziej czytelny i zwięzły kod.
  • Modele Keras Interfejsy API serializacji / deserializacji, wywołania zwrotne i przesyłanie danych przy użyciu generatorów Python są bardzo dojrzałe.
  • Keras został ogłoszony oficjalną abstrakcją wysokiego poziomu dla TensorFlow.
koteczek
źródło
9

Jeśli używasz TensorFlow jako backendu w keras, mniej więcej mają one tę samą funkcjonalność. Poprzez keras.backendciebie masz dostęp do funkcji TensorFlow, podczas gdy przez tf.kerasciebie masz dostęp do całego API keras poprzez TensorFlow.

Ponieważ tak jest, proponuję trzymać się kamer, a jeśli znajdziesz coś, czego brakuje (np. Metryka lub funkcja utraty), możesz zaimportować to przez TensorFlow.

TmBrdy
źródło
5

Keras, jak mówisz, zawiera wszystkie funkcje, ale od razu działa tylko na procesorze. Podłączając backend, taki jak TensorFlow lub CNTK (co ja osobiście wolę), odblokowujesz moc GPU, która może znacznie przyspieszyć niektóre obciążenia ML, szczególnie DL. Jeśli nie masz osobnego procesora graficznego, korzyści są minimalne.

Przez większość czasu w praktyce możesz po prostu ustawić backend i zapomnieć o nim, i pracować całkowicie w Keras, a nawet zamienić backend na inny i porównać wydajność. Nie ma więc potrzeby uczenia się specyfiki TF, chyba że chcesz kodować bezpośrednio na niższym poziomie.

Gajusz
źródło
5

Biorąc pod uwagę, że TensorFlow jest biblioteką niższego poziomu niż Keras ogólnie, zobaczysz, że oferuje to dodatkową elastyczność i lepszą wydajność (choć stosunkowo niewielka, zależy głównie od tego, jak piszesz kod). Powiedziałbym, że jeśli poszukujesz lub rozwijasz nowe typy sieci neuronowych, znajomość TensorFlow byłaby bardzo przydatna. Poza tym powinieneś być w porządku z Keras, chociaż zrozumienie, jak działa TensorFlow, może być nadal pomocne, jeśli używasz go jako backendu.

Jednak jakiś czas temu czytałem, że Keras i TensorFlow staną się bardziej zintegrowane, co znacznie ułatwi ci życie.

Oczywiście jest to tylko mój osobisty pogląd, dlatego chciałbym wskazać ci kilka dodatkowych artykułów, abyś mógł samodzielnie przeczytać. Ta dyskusja na temat Kaggle daje doskonały przegląd argumentów i kiedy ich użyć. Średni post na ten temat.

Felix van Doorn
źródło
5

Każdy początkujący ma to zapytanie. Zawsze wydaje się, że Keras rozwiązuje podstawowe funkcje, takie jak wprowadzanie danych, tworzenie modelu, szkolenie, ocena w mniejszej liczbie wierszy kodu.

Ale kiedy zaczynasz opracowywać model ML od zera, zdajesz sobie sprawę, że możesz zaprogramować wiele matematyki w NN, a biblioteka tensorflow zapewnia wiele funkcji i kontroli, dzięki czemu te koncepcje są praktyczne. Matematyczne aspekty uczenia się można łatwo wizualizować i tworzyć za pomocą NN wykonanych za pomocą tf.

abunickabhi
źródło