CNN xavier khởi tạo trọng lượng


14

Trong một số hướng dẫn, tôi thấy rằng khởi tạo trọng lượng "Xavier" (bài báo: Hiểu về khó khăn trong việc đào tạo mạng lưới thần kinh tiếp liệu sâu ) là một cách hiệu quả để khởi tạo trọng số của mạng lưới thần kinh.

Đối với các lớp được kết nối đầy đủ, có một quy tắc chung trong các hướng dẫn đó:

Vmộtr(W)= =2nTôin+nobạnt,thay thế đơn giản hơn:Vmộtr(W)= =1nTôin

Trong đó là phương sai của các trọng số cho một lớp, được khởi tạo với phân phối bình thường và n i n , n o u t là lượng tế bào thần kinh trong lớp cha mẹ và trong lớp hiện tại.Vmộtr(W)nTôinnobạnt

Có quy tắc tương tự cho các lớp chập?

Tôi đang đấu tranh để tìm ra những gì sẽ là tốt nhất để khởi tạo các trọng số của một lớp chập. Ví dụ, trong một lớp có hình dạng của các trọng số (5, 5, 3, 8), vì vậy kích thước hạt nhân là 5x5, lọc ba kênh đầu vào (đầu vào RGB) và tạo 8bản đồ tính năng ... sẽ được 3coi là số lượng tế bào thần kinh đầu vào? Hay đúng hơn 75 = 5*5*3, bởi vì đầu vào là 5x5các bản vá cho mỗi kênh màu?

Tôi sẽ chấp nhận cả hai, một câu trả lời cụ thể làm rõ vấn đề hoặc một câu trả lời "chung chung" hơn giải thích quá trình chung để tìm ra sự khởi tạo đúng của các trọng số và tốt nhất là liên kết các nguồn.

Câu trả lời:


13

Trong trường hợp này, số lượng tế bào thần kinh nên được 5*5*3.

[-c/(Tôin+obạnt),c/(Tôin+obạnt)]

Nó được thực hiện như một tùy chọn trong hầu hết các thư viện mạng thần kinh. Tại đây, bạn có thể tìm thấy mã nguồn của việc thực hiện khởi tạo Xavier Glorot của Keras.


1
1*10-6[0,1,0,01]

@ascenator xin lỗi tôi không biết nhiều về việc trọng lượng thay đổi như thế nào trong quá trình tập luyện. đôi khi kết quả lạ có thể đến từ tỷ lệ học tập quá lớn / nhỏ.
dontloo

10-610-3

0

Tôi thứ hai câu trả lời của Eric ở đây. Tôi cũng lấy "sqrt" của thuật ngữ và không chỉ thuật ngữ đó. Mặc dù vậy, khi bạn kết nối sigmoid sâu trong mạng của bạn với đầu ra "RelU" .... nó có thể khiến việc đào tạo bị đình trệ. Điều này là do đầu ra "Relu" không giới hạn, có thể làm cho độ dốc tại sigmoid giảm xuống 0 và không có việc học nào xảy ra. Vì vậy, trong các trường hợp, tôi có hệ số "scaleDown" cho mạng của mình, điều này sẽ cân nhắc độ lệch khởi tạo theo yếu tố đó. Tôi tiếp tục điều chỉnh trọng lượng cho đến khi việc học xảy ra. Một cách đơn giản để tìm là lưu mô hình ngay lập tức sau 1 lần lặp và xem đầu ra của RELU (được kết nối với sigmoid). Tiếp tục điều chỉnh các trọng số cho đến khi đầu ra RELU này là hợp lý. Và sau đó sử dụng các trọng lượng cho đào tạo. Đó là một khởi đầu tốt. Nếu nó vẫn sụp đổ sau một vài lần lặp lại, cân chúng xuống một chút nữa cho đến khi bạn đạt được sự ổn định. Nó chỉ là một hack tôi đã sử dụng. Nó làm việc cho tôi để thiết lập của tôi. Vì vậy, chia sẻ kinh nghiệm của tôi. Những thứ khác nhau làm việc cho các thiết lập khác nhau.

Vậy thì chúc may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.