2017-11-06 25 views
6

Tôi đang sử dụng tf.estimator trong TensorFlow 1.4 và tf.estimator.train_and_evaluate thật tuyệt vời nhưng tôi cần dừng sớm. Cách ưa thích để thêm điều đó là gì?Dừng sớm với tf.estimator, làm cách nào?

Tôi giả sử có một số tf.train.SessionRunHook ở đâu đó cho việc này. Tôi thấy rằng có một gói contrib cũ với một ValidationMonitor mà dường như đã dừng lại sớm, nhưng nó không có vẻ là xung quanh nữa trong 1.4. Hay cách ưa thích hơn trong tương lai là dựa vào tf.keras (mà việc dừng sớm thực sự dễ dàng) thay vì tf.estimator/tf.layers/tf.data, có lẽ?

Trả lời

2

Vâng, có tf.train.StopAtStepHook:

yêu cầu móc này dừng lại sau hoặc là một số bước đã được thực hiện hoặc một bước cuối cùng đã đạt được. Chỉ có thể chỉ định một trong hai tùy chọn.

Bạn cũng có thể mở rộng và triển khai chiến lược dừng của riêng mình dựa trên kết quả bước.

class MyHook(session_run_hook.SessionRunHook): 
    ... 
    def after_run(self, run_context, run_values): 
    if condition: 
     run_context.request_stop() 
+0

tf.train.StopAtStepHook dường như không dừng lại sớm? Nhưng yeah, tôi đoán tôi có thể làm móc của riêng tôi mà đánh giá một bộ xác nhận, tôi chỉ mong đợi nó được xây dựng như TensorFlow 1.4. Cảm ơn! –

+0

@ CarlThomé Tôi hiểu ý của bạn là gì. Bạn nói đúng, các gói tensorflow chỉ là phiên nhỏ nhặt hiện tại và đề xuất để đưa ra các quyết định phức tạp với các móc riêng. – Maxim

+0

Biến nào sẽ giúp tôi trong việc ghi lại sự mất mát trong hàm after_run trong mỗi bước để thực hiện việc dừng ealry? –

1

Một tùy chọn khác mà không sử dụng lưỡi câu là để tạo ra một tf.contrib.learn.Experiment (mà dường như, mặc dù trong contrib, cũng để hỗ trợ mới tf.estimator.Estimator).

Sau đó, đào tạo qua phương pháp (dường như thử nghiệm) continuous_train_and_eval với tùy chỉnh thích hợp continuous_eval_predicate_fn.

Theo docu tensorflow, các continuous_eval_predicate_fn

Một chức năng ngữ xác định xem có nên tiếp tục eval sau mỗi lần lặp.

và gọi với số eval_results từ lần đánh giá cuối cùng. Để dừng sớm, hãy sử dụng chức năng tùy chỉnh giữ trạng thái kết quả tốt nhất hiện tại và bộ đếm và trả về False khi đạt điều kiện dừng sớm.

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