2016-01-02 12 views
5

Şu anda tensorflow'un tensorboard is not compatible with python3. Bu nedenle ve genellikle, 100 kez bir kez özet okumaları yazdırmak için bir yol arıyorum.Ayrıştırma 'summary_str` bayt dizesi tensorflow özet nesnesinde değerlendirildi

Aşağıdaki satırlarda üretilen summary_str bayt dizgisini bir float sözlüğüne ayırmak için bir işlev var mı? aşağıdaki gibi

summary_op = tf.merge_all_summaries() 
summary_str = sess.run(summary_op, feed_dict=feed_dict) 

cevap

9

Bir tf.Summary protokol tampon içine ayrıştırma yoluyla summary_str metinden bir temsilini alabilirsiniz:

summary_proto = tf.Summary() 
summary_proto.ParseFromString(summary_str) 
print(summary_proto) 

Daha sonra yüzen bir sözlük haritalama içine dize etiketleri biçimine dönüştürebilirsiniz:

summaries = {} 
for val in summary_proto.value: 
    # Assuming all summaries are scalars. 
    summaries[val.tag] = val.simple_value 
+0

Üçüncü satırı "yazdır (summary_str, summary_proto, sep =": \ t ")' olarak değiştirmeyi denedim. Aldığım şey "b" \ n \ x0e \ n \ x07L2_loss \ x15 \ xd4J \ xcdA \ n \ x11 \ n \ nL1_penalty \ x15 \ xef \ xab \ xa6A \ n \ x0b \ n \ x04loss \ x15j \ xa0 \ xeeA \ n \ t \ n \ x02R2 \ x15 @ \ xd8Y \ xbf ': \t Yok'. Ve bu nedenle: Hiçbiri "value" özelliğine sahip değildir. –

+1

Ah, 'ParseFromString() 'ile satırdaki orijinal yanıtımda bir hata oluştu. Şimdi düzeltilmelidir. – mrry

+0

Ayrıştırmadan sonra summary_proto düzenlemek için bir seçenek var mı? Örneğin etiketi değiştirmek ve dizeye geri serileşmek ister misiniz? – aarbelle