21

Bằng cách đặt phần dưới cùng và phần trên cùng của cùng màu, chúng ta có thể yêu cầu Caffe thực hiện tính toán "tại chỗ" để bảo toàn mức tiêu thụ bộ nhớ.Khi nào sử dụng các lớp tại chỗ trong Caffe?

Hiện tại tôi biết tôi có thể sử dụng an toàn các địa điểm "BatchNorm", "Scale""ReLU" lớp (vui lòng cho tôi biết nếu tôi sai). Mặc dù có vẻ như có một số vấn đề đối với các lớp khác (this issue có vẻ là một ví dụ).

Khi nào sử dụng các lớp tại chỗ trong Caffe?
Tính năng này hoạt động như thế nào với việc sao chép ngược?

+0

cảm ơn tiền thưởng. Tôi hy vọng nó xóa mọi thứ cho bạn. – Shai

+0

@Shai cảm ơn câu trả lời, nó chắc chắn sẽ giúp bạn! – dontloo

Trả lời

9

Như bạn đã biết, các lớp tại chỗ thường không hoạt động "ngoài hộp".
Đối với một số lớp, nó là khá tầm thường ("ReLU" và các lớp kích hoạt nơron khác).
Tuy nhiên, đối với những người khác, nó yêu cầu xử lý đặc biệt trong mã. Ví dụ, việc thực hiện lớp "PReLU" có bộ nhớ cache cụ thể bottom_memory_ biến thành viên lưu trữ thông tin cần thiết cho backprop.
Bạn có thể thấy mã tương tự cho các lớp khác kiểm tra cụ thể if (top[0] == bottom[0]) để xem liệu lớp đó có được sử dụng trong trường hợp "tại chỗ" hay không. Hơn nữa, nó có ý nghĩa rất ít khi có một lớp tại chỗ mà đầu vào và đầu ra có các hình dạng khác nhau, do đó các lớp như "Convolution", "InnerProduct", "Pool" không được coi là ứng cử viên cho các lớp "tại chỗ".

+0

Cảm ơn. Làm thế nào về 'tại chỗ = True' và' tại chỗ = False' cho lớp BatchNorm? Đôi khi, tôi thấy các giấy tờ 'in-place = False' cho lớp BatchNorm. Chúng ta có bất kỳ lợi ích nào cho trường hợp đó không? – user8264

+0

@ user8264 Tôi không quen thuộc với nội bộ của lớp BatchNorm vì vậy tôi không thể thực sự bình luận về nó. Đôi khi sử dụng tại chỗ yêu cầu tính toán nhiều hơn một chút (để tiết kiệm dung lượng) ... bạn thực sự cần hỏi người đã chỉ định 'in_place = False' ... – Shai

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