2016-01-06 17 views

Odpowiedz

2

W tej chwili najlepszą zewnętrzną metodą jest kompilacja z profilerem CPU/GPU, ale należy to zrobić ręcznie, zmieniając opcje w plikach BUILD i tensorflow.bzl (nie wiesz gdzie).

Można wówczas uzyskać profil informacji, o których funkcje biorą najwięcej czasu, itd To do ciebie, można uruchomić za pomocą gperftools i wizualizacji przez pprof

Ponieważ kod TensorFlow jest połączone poprzez swig, i” nie jestem w 100% pewny, jak łatwo będzie uzyskać symbole podczas czytania profilu przez pprof. Być może uda ci się wskazać plik, który został zbudowany.

Spróbuj i daj nam znać, czy to działa dla Ciebie!

2

Jeśli chcesz dowiedzieć się, ile czasu zostało poświęcone na każdą operację w TF, możesz to zrobić w tensorboard przy użyciu runtime statistics. Trzeba będzie zrobić coś takiego (sprawdź pełną przykład w wyżej wymienionych link):

run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) 
run_metadata = tf.RunMetadata() 
sess.run(<values_you_want_to_execute>, options=run_options, run_metadata=run_metadata) 
your_writer.add_run_metadata(run_metadata, 'step%d' % i) 

lepiej niż tylko drukowanie go można zobaczyć go w tensorboard:

Dodatkowo kliknięcie węzła wyświetli dokładną całkowitą pamięć, czas obliczeń i rozmiary wyjściowe tensora.

Również teraz tensorflow ma debugger. Oto samouczek, jak z niego korzystać.

[1]: https://www.tensorflow.org/get_started/graph_viz#

+0

Aktualny (koniec 2017 r., TensorFlow 1.4) sposób uzyskiwania oś czasu używa [ProfilerHook] (https://www.tensorflow.org/api_docs/python/tf/train/ProfilerHook). Działa to z MonitoredSessions w tf.Estimator, gdzie tf.RunOptions nie są dostępne. – Urs

1

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler

Główne cechy: parametry modelu

środka, operacje pływak, kształty tensor.

Czas wykonania operacji, żądany rozmiar pamięci i rozmieszczenie urządzenia.

Sprawdź kształty tensorów w punktach kontrolnych i ich wartości.

Selektywnie grupuj, filtruj, księguj i porządkuj operacje.

+0

Pytanie brzmi: "Czy istnieje sposób na obliczenie kosztu czasu dla każdego węzła w sieci TensorFlow?" * Czy możesz poprawić swoją odpowiedź, pokazując, jak używać tego narzędzia, aby "obliczyć koszt czasu"? – Pang

+0

Szkoda, link nie został znaleziony –