Đối với một ConvNet, có thể thú vị khi tìm đầu vào giới hạn theo chuẩn mà tối đa hóa hoạt động của một chuyển đổi đơn. lọc theo cách đến visualize the filters. Tôi muốn làm điều này trong gói học tập sâu Keras. Điều này có thể được thực hiện bằng cách sử dụng thuật toán tối ưu hóa hộp đen với mã từ FAQ.Gradient từ biểu thức Theano để hiển thị bộ lọc trong Keras
# with a Sequential model
get_3rd_layer_output = theano.function([model.layers[0].input],
model.layers[3].get_output(train=False))
layer_output = get_3rd_layer_output(X)
Tuy nhiên, nó sẽ là một tác vụ tối ưu hóa đáng kể dễ dàng hơn nếu tôi có độ dốc. Làm thế nào tôi có thể trích xuất gradient từ biểu thức Theano và nhập nó vào một thư viện tối ưu hóa Python như Scipy?
Cảm ơn. Tôi hiểu ý tưởng cơ bản đằng sau 'theano.grad()', nhưng làm thế nào tôi có thể trích xuất các gradient đối với sự mất mát của một mô hình Keras? Dựa trên https://github.com/fchollet/keras/blob/master/examples/conv_filter_visualization.py Tôi đã thấy cách này có thể được thực hiện bằng cách sử dụng một số đầu vào 'X_train', nhưng tôi đã không tìm ra cách để làm điều này cho sự mất mát. Hai vấn đề của tôi là 1) Tôi dường như không thể trích xuất chức năng mất khi kết nối với mạng 2) Chức năng mới này cần cả 'X_train' và' y_train', mà dường như tôi không thể cung cấp đúng cách. – pir
Keras đã tính toán độ dốc của sự mất mát đối với từng lớp, trong quá trình truyền ngược. Nhưng bạn không muốn các gradient của một lớp trung gian đối với đầu vào? –
Ah, vâng. Xin lỗi, đã lâu rồi tôi mới hỏi câu hỏi. Câu trả lời của bạn giải quyết nó. Vấn đề hiện tại của tôi là làm thế nào để trích xuất các gradient trên tất cả các tham số wrt. sự mất mát khi tôi muốn kiểm tra sự cần thiết phải cắt giảm gradient. Đó có phải là dễ dàng để có được từ sự chứng minh backprop như thực hiện trong Keras? – pir