Zastanawiam się, czy istnieją jakieś poważne wady (np. Dotyczące wydajności obliczeniowej, pamięci ...) w tworzeniu elementów zastępczych TensorFlow dla zmiennych wielkości wejściowych (w przeciwieństwie do stałych wielkości wejściowych)?Czy są jakieś minusy tworzenia symboli zastępczych TensorFlow dla zmiennych o rozmiarze zmiennym a o stałych rozmiarach?
Say, robie uczenia mini wsadowy i zainicjować wykres z zastępczego, gdzie zakładamy stałą batch_size antycypowania:
tf.placeholder(..., shape=[batch_size, ...])
Alternatywnie, można zainicjować zmienną zastępczy tak, że przyjmuje zmienne wejściowe wielkości :
tf.placeholder(..., shape=[None, ...])
nie jestem zaznajomiony z niskim poziomem tensorflow implementacje pod maską, ale nie ten ostatni musiał sprawdzić wymiary, przydzielić pamięci, a także tworzyć nowe tablice w każdej iteracji w celu uwzględnienia przypadku, gdy m y zmiany wielkości minibagusa podczas treningu? Tak więc, w zależności od implementacji, czy nie byłoby to obliczeniowo marnotrawstwem, jeśli pracuję ze stałym wymiarem wsadowym?
dzięki za to miłe i wyczerpujące wyjaśnienie! Tak więc, w przypadku dużych (długich do pociągu) modeli prawdopodobnie byłoby bardziej wydajne niż ustalenie wielkości partii. Jednak w przypadku walidacji i oceny (testy walidacyjne i zestawy testowe) konieczne byłoby posiadanie równoległego wykresu, który byłby zasilany zmiennymi z wykresu treningowego, które mogłyby przeważyć korzyści. – Sebastian
To chyba prawda. Trudność jest ostateczna w odniesieniu do względnej wydajności, ale zauważyliśmy poprawę w zakresie czasu działania o 5% dzięki wykorzystaniu statycznych informacji o kształcie, więc jeśli masz długotrwały program, prawdopodobnie warto użyć osobnych programów do treningu/eval z możliwie największą ilością informacji statycznych. – mrry