Z tego, co do tej pory zebrałem, istnieje kilka różnych sposobów zrzucenia wykresu TensorFlow do pliku, a następnie załadowania go do innego programu, ale nie udało mi się znaleźć jasnych przykładów / informacji na temat ich działania. To, co już wiem, to:
- Zapisz zmienne modelu w pliku punktu kontrolnego (.ckpt) za pomocą a
tf.train.Saver()
i przywróć je później ( źródło ) - Zapisz model do pliku .pb i załaduj go z powrotem za pomocą
tf.train.write_graph()
itf.import_graph_def()
( źródło ) - Załaduj model z pliku .pb, przetrenuj go i wrzuć do nowego pliku .pb za pomocą Bazel ( źródło )
- Zablokuj wykres, aby zapisać wykres i wagi razem ( źródło )
- Służy
as_graph_def()
do zapisywania modelu, a dla wag / zmiennych mapowania ich na stałe ( źródło )
Nie udało mi się jednak wyjaśnić kilku pytań dotyczących tych różnych metod:
- Jeśli chodzi o pliki punktów kontrolnych, czy zapisują one tylko wyuczone wagi modelu? Czy pliki punktów kontrolnych mogą zostać załadowane do nowego programu i użyte do uruchomienia modelu, czy mogą po prostu służyć jako sposób na zapisanie wag w modelu w określonym czasie / etapie?
- W związku z tym
tf.train.write_graph()
, czy wagi / zmienne również są zapisane? - Jeśli chodzi o Bazel, czy może on zapisywać do / ładować z plików .pb tylko w celu ponownego przeszkolenia? Czy istnieje proste polecenie Bazel, które służy tylko do zrzucenia wykresu do pliku .pb?
- Jeśli chodzi o zamrażanie, czy zamrożony wykres można załadować za pomocą
tf.import_graph_def()
? - Wersja demonstracyjna systemu Android dla TensorFlow ładuje się w modelu Inception Google z pliku .pb. Gdybym chciał zastąpić własny plik .pb, jak bym to zrobił? Czy musiałbym zmienić kod / metody natywne?
- Jaka jest właściwie różnica między wszystkimi tymi metodami? Albo szerzej, jaka jest różnica między
as_graph_def()
/.ckpt/.pb?
Krótko mówiąc, szukam metody zapisywania zarówno wykresu (jak w przypadku różnych operacji itp.), Jak i jego wag / zmiennych do pliku, którego można następnie użyć do załadowania wykresu i wag do innego programu do użytku (niekoniecznie kontynuowanie / przekwalifikowanie).
Dokumentacja na ten temat nie jest prosta, więc wszelkie odpowiedzi / informacje byłyby bardzo mile widziane.