2016-06-19 22 views
24

Tôi thường muốn ghi nhật ký các biến số python - ngược với tf tensors.Cách tạo thủ công một tf.Summary()

Trong tài liệu nói rằng "bạn có thể vượt qua bộ đệm giao thức tf.Summary mà bạn điền bằng dữ liệu của riêng mình" nhưng không có tài liệu nào cho tf.Summary và tôi không thể tìm ra cách sử dụng nó.

Bất kỳ ai cũng biết cách tạo bản tóm tắt Scalar theo cách này?

+2

Bản sao có thể có của [Làm cách nào để thêm giá trị tùy ý vào bản tóm tắt TensorFlow?] (Http://stackoverflow.com/questions/37530228/how-do-i-add-an-arbitrary-value-to-a -tensorflow-summary) – orome

Trả lời

40

Bạn có thể tạo một đối tượng tf.Summary trong chương trình Python của bạn và ghi nó vào cùng một đối tượng tf.train.SummaryWriter mà sẽ đưa tóm tắt TensorFlow sản xuất của bạn bằng cách sử dụng phương pháp SummaryWriter.add_summary().

Lớp tf.SummaryPython protocol buffer wrapper cho the Summary protocol buffer. Mỗi Summary chứa danh sách các bộ đệm giao thức tf.Summary.Value, mỗi thẻ có một thẻ và giá trị "đơn giản" (dấu phẩy động), image, một histogram hoặc audio snippet. Ví dụ, bạn có thể tạo ra một bản tóm tắt vô hướng từ một đối tượng Python như sau:

writer = tf.train.SummaryWriter(...) 
value = 37.0 
summary = tf.Summary(value=[ 
    tf.Summary.Value(tag="summary_tag", simple_value=value), 
]) 
writer.add_summary(summary) 
+0

Làm cách nào để tạo Tóm tắt hình ảnh? – Marco

+1

Tôi đã tạo một ý chính cho thấy cách tạo tóm tắt hình ảnh: https://gist.github.com/gyglim/1f8dfb1b5c82627ae3efcfbbadb9f514#file-tensorboard_logging-py-L41 –

+0

Ba dòng cuối cùng có được thực hiện mọi thời đại không? (Tôi đang làm điều này từ keras và cố gắng tìm ra nơi để đặt những gì - Tôi đoán dòng 1 trên gọi lại của tôi '__init__' và phần còn lại' on_epoch_end() '?) –

4

Nếu bạn muốn đăng nhập giá trị python, bạn phải tạo một trình giữ chỗ phải được nạp khi chạy các tf.Summary op.

Dưới đây là một mã snipped

value_ = tf.placeholder(tf.float32, []) 
summary_op = tf.scalar_summary("value_log", value_) 
my_python_variable = 10 
# define everything else you need... 
# ... 
with tf.Session() as sess: 
    for i in range(0, 10): 
     sess.run(summary_op, feed_dict={value_: my_python_variable*i}) 
+1

Cảm ơn nhưng tôi đã yêu cầu một cách rõ ràng cho một cách để trực tiếp tạo ra một protobuf Tóm tắt để tôi có thể tránh phương pháp rườm rà này. –

1

tôi cần phải làm nhiều bản cập nhật vào biến tóm tắt tùy chỉnh trong đào tạo vì vậy tôi thực hiện tôi như vậy:

Trước loop:

writer = tf.summary.FileWriter(log_folder) 
accuracy = None 
accuracy_summary = tf.Summary() 
accuracy_summary.value.add(tag='accuracy', simple_value=accuracy) 

Bên trong vòng lặp:

if i%20000 == 0: 
    accuracy = get_accuracy() 
    accuracy_summary.value[0].simple_value = accuracy 
    writer.add_summary(accuracy_summary, i) 

Tôi giả định các chỉ mục là value theo thứ tự các biến được thêm vào tóm tắt.

Các vấn đề liên quan