Tôi muốn thực hiện trong TensorFlow kỹ thuật "Hướng dẫn truyền lại" được giới thiệu trong Paper và được mô tả trong recipe này.Hướng dẫn sao chép ngược trong TensorFlow
Tính toán có nghĩa là khi tôi tính toán độ dốc, ví dụ: của giá trị đầu vào. đầu ra của NN, tôi sẽ phải sửa đổi các gradient được tính tại mỗi đơn vị RELU. Cụ thể, tín hiệu truyền lại trên các đơn vị đó phải được ngưỡng bằng 0, để làm cho kỹ thuật này hoạt động. Nói cách khác, đạo hàm một phần của các RELU là âm phải được bỏ qua.
Vì tôi chỉ muốn áp dụng các phép tính gradient này trên ví dụ kiểm tra, tức là tôi không muốn cập nhật tham số của mô hình - tôi sẽ làm như thế nào?
tôi đã cố gắng (không thành công) hai điều cho đến nay:
Sử dụng tf.py_func quấn phiên bản numpy đơn giản của tôi về một RELU, sau đó là đủ điều kiện để xác định lại nó hoạt động Gradient qua g .gradient_override_map trình quản lý ngữ cảnh.
Thu thập các giá trị chuyển tiếp/lùi của BackProp và áp dụng quy trình làm nổi bật trên các giá trị xuất phát từ Relus.
Tôi không thành công với cả hai phương pháp tiếp cận vì chúng cần một số kiến thức về nội bộ của TF hiện tại tôi không có.
Có ai có thể đề xuất bất kỳ tuyến đường nào khác hoặc phác họa mã không?
Cảm ơn rất nhiều.
Xin chào Kaveman, cảm ơn rất nhiều vì đã trả lời nhanh chóng. Trong tf.gradients cuối cùng của bạn gọi bạn đang cố ý vượt qua Dafter_relu như là đối số đầu tiên? – Peter
Ngoài ra, tôi vẫn còn bối rối wrt. làm thế nào để khái quát hóa điều này trên một mạng với nhiều lớp theo cách hoạt động cho bất kỳ NN nào có các phần tử RELU. Đối với phần này bạn sẽ không cần phải theo dõi tất cả các đầu vào/đầu ra của mỗi phần tử RELU và 'chuỗi' logic đã mô tả trước đây của bạn? Cảm ơn. – Peter
@Peter, xin lỗi, đó là lỗi đánh máy. Cuộc gọi thứ hai tới 'tf.gradients' là' after_relu' w.r.t. 'params'. – keveman