Pierwotne pytanie dotyczyło konkretnie implementacji TensorFlow. Jednak odpowiedzi dotyczą ogólnie wdrożeń. Ta ogólna odpowiedź jest również poprawną odpowiedzią dla TensorFlow.
Czy podczas korzystania z normalizacji wsadowej i rezygnacji z TensorFlow (w szczególności z plików contrib.layers) muszę się martwić o zamówienie?
Wydaje się możliwe, że jeśli użyję dropout, po którym natychmiast nastąpi normalizacja partii, mogą wystąpić problemy. Na przykład, jeśli przesunięcie w ciągach normalizacji wsadowej prowadzi do większej liczby danych wyjściowych treningu, ale wtedy ta sama zmiana jest stosowana do mniejszych (z powodu kompensacji za posiadanie większej liczby wyników) numerów skal bez przerywania podczas testowania, to zmiana może być wyłączona. Czy warstwa normalizacji wsadowej TensorFlow automatycznie to kompensuje? A może to się nie dzieje z jakiegoś powodu, którego mi brakuje?
Czy są też inne pułapki, na które należy zwrócić uwagę podczas używania tych dwóch razem? Na przykład zakładając, że używam ich we właściwej kolejności w odniesieniu do powyższego (zakładając, że jest prawidłowa kolejność), czy może być kłopot z wykorzystaniem zarówno normalizację partii i porzucaniu na wielu kolejnych warstw? Nie widzę od razu problemu z tym, ale może coś mi umknęło.
Dziękuję bardzo!
AKTUALIZACJA:
Test eksperymentalny wydaje się sugerować, że kolejność ma znaczenie. Uruchomiłem tę samą sieć dwa razy z tylko normą wsadową i odwrotną przerwą. Gdy spadek jest przed normą wsadową, utrata walidacji wydaje się wzrastać wraz ze spadkiem strat podczas treningu. W drugim przypadku oboje upadają. Ale w moim przypadku ruchy są powolne, więc po kolejnych treningach sytuacja może się zmienić i to tylko jeden test. Wciąż doceniona byłaby bardziej ostateczna i świadoma odpowiedź.