W tensorflow 1.4, znalazłem dwie funkcje, które wykonują normalizacja partii i wyglądają tak samo:Co to jest właściwa funkcja normalizacji partii w Tensorflow?
Która funkcja powinienem użyć? Który z nich jest bardziej stabilny?
W tensorflow 1.4, znalazłem dwie funkcje, które wykonują normalizacja partii i wyglądają tak samo:Co to jest właściwa funkcja normalizacji partii w Tensorflow?
Która funkcja powinienem użyć? Który z nich jest bardziej stabilny?
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 .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.keras.layers.BatchNormalization
, która w przypadku backendu tensorflow wywołuje tf.nn.batch_normalization
.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
.
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
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