2016-05-18 38 views
14

Przeprowadziłem kilka sesji szkoleniowych z różnymi wykresami w TensorFlow. Przygotowane przeze mnie zestawienia przedstawiają interesujące wyniki w zakresie szkolenia i sprawdzania poprawności. Teraz chciałbym zapisać dane, które zapisałem w dziennikach podsumowań, przeprowadzić analizę statystyczną i ogólnie spisek, a następnie przyjrzeć się zbiorczym danym na różne sposoby. Czy istnieje jakiś sposób na łatwy dostęp do tych danych?TensorFlow - Importowanie danych z pliku TFEvent TensorBoard?

Czy istnieją jakieś wbudowane funkcje do odczytu rekordu TFEvent z powrotem do Pythona?

Jeśli nie ma prostego sposobu, aby to zrobić, TensorFlow states that all its file formats are protobuf files. Z mojego zrozumienia protobufs (który jest ograniczony), myślę, że byłbym w stanie wyodrębnić te dane, jeśli mam specyfikację protokołu TFEvent. Czy istnieje prosty sposób na uzyskanie tego? Dziękuję bardzo.

Odpowiedz

12

Jako Fabrizio says, TensorBoard jest doskonałym narzędziem do wizualizacji zawartości twoich logów podsumowania. Jednakże, jeśli chcesz wykonać analizę niestandardową, można użyć tf.train.summary_iterator() funkcję pętli nad wszystkie tf.Event i tf.Summary buforów protokołu w dzienniku:

for summary in tf.train.summary_iterator("/path/to/log/file"): 
    # Perform custom processing in here. 
+0

To miejsce ma kilka ciekawych funkcji pomocniczych https://programtalk.com/python-examples/tensorflow.train.summary_iterator/ –

9

można po prostu użyć:

tensorboard --inspect --event_file=myevents.out 

lub jeśli chcesz filtrować konkretny podzbiór wydarzeniach z wykresu:

tensorboard --inspect --event_file=myevents.out --tag=loss 

Jeśli chcesz stworzyć coś więcej zwyczaj można kopać Aby zrozumieć, jak analizować pliki zdarzeń, należy zapoznać się z instrukcją.

+0

Która wersja TensorFlow to działa z? Używam '0.8'. Dla mnie '--logdir' jest zawsze wymagany i pomimo przekazania tych innych parametrów wydaje się, że TensorBoard działa tak jak zwykle ignorując te parametry. Ponadto '--help' nie pokazuje żadnego z tych parametrów. Ponadto, aby upewnić się, że czegoś mi nie brakuje, czy to ma być wydrukowane coś na ekranie terminala? Lub zmienić to, co jest pokazane na stronie TensorBoard? Albo coś innego? Dzięki! – golmschenk

+0

Idąc dalej tropem, znalazłem klasę 'EventAccumulator'. Które po załadowaniu pliku może podać wszystkie szczegóły wartości podsumowania. Zaktualizuję twoją odpowiedź bardziej szczegółowo. – golmschenk

+0

Rzeczywiście te parametry są dostępne w końcówce tensorflow. – fabrizioM

5

Można użyć skryptu serialize_tensorboard, która odbędzie się w sposób logdir i zapisz wszystkie dane w formacie json.

Możesz także użyć EventAccumulator dla wygodnego API Pythona (jest to ten sam interfejs API, którego używa TensorBoard).

+3

Od wersji Tensorboard 1.1 skrypt serialize_tensorboard nie jest już dostępny. – shark8me

10

Aby odczytać TFEvent można uzyskać iterator Pythona, który zapewnia bufory protokołu zdarzeń.

# This example supposes that the events file contains summaries with a 
# summary value tag 'loss'. These could have been added by calling 
# `add_summary()`, passing the output of a scalar summary op created with 
# with: `tf.scalar_summary(['loss'], loss_tensor)`. 
for e in tf.train.summary_iterator(path_to_events_file): 
    for v in e.summary.value: 
     if v.tag == 'loss' or v.tag == 'accuracy': 
      print(v.simple_value) 

więcej info: summary_iterator