Odpowiedz

8

Wystarczy dodać do listy, są tam jeszcze kilka sposobów zrobienia wsadowy-normę w tensorflow:

  • tf.nn.batch_normalization JEST op niskim poziomie. Osoba dzwoniąca jest odpowiedzialna za obsługę samych tensorów mean i variance.
  • tf.nn.fused_batch_norm jest kolejnym opcją niskiego poziomu, podobną do poprzedniej. Różnica polega na tym, że jest zoptymalizowany pod kątem tensorów wejściowych 4D, co ma zwykle miejsce w splotowych sieciach neuronowych. tf.nn.batch_normalization akceptuje tensory o dowolnym stopniu wyższym niż 1.
  • tf.layers.batch_normalization to opakowanie o wyższym poziomie nad poprzednimi opcjami. Największą różnicą jest to, że zajmuje się tworzeniem i zarządzaniem działającymi tensorami średniej i wariancji oraz wywołuje szybkie fused op, kiedy to możliwe. Zwykle powinien to być domyślny wybór dla użytkownika .
  • jest wczesną implementacją normy wsadowej, zanim przejdzie ona do podstawowego interfejsu API (tj. tf.layers). Korzystanie z niego nie jest zalecane, ponieważ może zostać usunięte w przyszłych wydaniach.
  • tf.nn.batch_norm_with_global_normalization to kolejny przestarzały op. Obecnie deleguje połączenie pod numer tf.nn.batch_normalization, ale prawdopodobnie zostanie ono zerwane w przyszłości.
  • Wreszcie istnieje również warstwa Keras keras.layers.BatchNormalization, która w przypadku backendu tensorflow wywołuje tf.nn.batch_normalization.
+0

Dzięki. Akceptuję to. Chcę tylko zapytać o średnią i wariancję. Jak mogę zarządzać średnią i wariancją, o której wspomniałeś? po prostu ustaw flagę is_training na False? – KimHee

+0

Zarządzając mam na myśli następujące: utworzyć zmienną o odpowiednim kształcie i kumulować średnią/wariancję z partii. To trochę żmudne, dlatego łatwiej jest wywołać funkcję wysokiego poziomu. W takim przypadku wystarczy ustawić atrybut "training". – Maxim

2

Jak pokazano w doc, tf.contrib to moduł składający się z kodu niestabilnego lub eksperymentalnego. Po zakończeniu function zostanie on usunięty z tego modułu. Teraz są dwa, aby być kompatybilnym z wersją historyczną.

Zalecane jest wcześniejsze tf.layers.batch_normalization.