2015-11-27 16 views
8

Chciałbym zbadać umieszczenie urządzenia w tensorboard stosując następujący kod do generowania wykresu w podsumowaniuurządzenia montującego nieznane w Tensorboard

# Build the summary operation based on the TF collection of Summaries. 
summary_op = tf.merge_all_summaries() 
saver = tf.train.Saver(tf.all_variables()) 
summary_writer = tf.train.SummaryWriter(log_directory, graph_def=sess.graph_def) 

Działa to na wyświetlanie wykresu i podsumowania określony w wykres. Ale po wybraniu "umiejscowienia urządzenia" w tensorporcie wszystkie węzły są przypisane do "nieznanego urządzenia". Czy muszę zrzucić rozmieszczenie urządzeń w jakiś inny sposób?

Odpowiedz

10

TensorBoard wykres wizualizer widzi tylko bezpośrednimi przypisania urządzeń, które zostały wprowadzone w programie (czyli te wykonane przy użyciu with tf.Device("..."): bloki).

Powodem tego jest fakt, że węzły na wykresie TensorFlow są przypisywane do urządzeń w wielu etapach. Pierwszy etap w kliencie (np. W programie Python) umożliwia jawne i opcjonalne przypisanie urządzeń do każdego węzła i jest to wynik tego etapu zapisywany w dziennikach TensorBoard. Późniejszy etap umieszczenia działa wewnątrz backendu TensorFlow i przypisuje każdy węzeł do urządzenia.

Podejrzewam, że chcesz przeanalizować wyniki późniejszego etapu umieszczania. Obecnie nie ma wsparcia dla tego w TensorBoard, ale można wyodrębnić pewne informacje o tworzeniu tf.Session następująco:

sess = tf.Session(config=tf.ConfigProto(
    log_device_placement=True)) 

... a potem decyzje pośrednictwa urządzeń będą rejestrowane na stderr.

+0

Widzę, właśnie tego używam teraz. Szkoda, że ​​nie jest jeszcze zaimplementowany! – panmari