Tất cả thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Khởi tạo trọng số Xavier và He

Tính khoảng giá trị hoặc độ lệch chuẩn dùng để khởi tạo trọng số của một lớp.

Bạn sẽ học được gì

  • Tính khoảng khởi tạo cho một lớp
  • Chọn giữa Xavier và He
  • Hiểu vì sao khởi tạo quan trọng

Đề bài

Xem bản gốc (English)

Trọng số ban đầu quá lớn hoặc quá nhỏ khiến mạng sâu khó huấn luyện. Hai cách chuẩn chọn thang đo dựa trên kích thước lớp, với fan_in là số đầu vào và fan_out là số đầu ra:

methodtrả về
"xavier_uniform"giới hạn √(6 / (fan_in + fan_out)), trọng số lấy trong [-giới hạn, giới hạn]
"xavier_normal"độ lệch chuẩn √(2 / (fan_in + fan_out))
"he_uniform"giới hạn √(6 / fan_in)
"he_normal"độ lệch chuẩn √(2 / fan_in)

Xavier (Glorot) hợp với lớp sigmoid và tanh; He hợp với lớp ReLU.

Hãy cài đặt init_bound(method, fan_in, fan_out).

Đầu vào

method: Một trong "xavier_uniform", "xavier_normal", "he_uniform" hoặc "he_normal".

fan_in, fan_out: Số đầu vào và số đầu ra của lớp.

Đầu ra

Trả về giới hạn hoặc độ lệch chuẩn dưới dạng số thực.

Ràng buộc

1 ≤ fan_in, fan_out ≤ 100.000

Ví dụ

Ví dụ 1
Đầu vào:
fan_in = 3
method = "xavier_uniform"
fan_out = 3

Kết quả mong đợi:
expected = 1.0
Đầu vào:
long long fan_in = 3;
std::string method = "xavier_uniform";
long long fan_out = 3;

Kết quả mong đợi:
double expected = 1.0;
Đầu vào:
long fan_in = 3;
string method = "xavier_uniform";
long fan_out = 3;

Kết quả mong đợi:
double expected = 1.0;

Giải thích

√(6 / (3 + 3)) = √1 = 1, nên trọng số được lấy trong [-1, 1].

Ví dụ 2
Đầu vào:
fan_in = 50
method = "he_normal"
fan_out = 10

Kết quả mong đợi:
expected = 0.2
Đầu vào:
long long fan_in = 50;
std::string method = "he_normal";
long long fan_out = 10;

Kết quả mong đợi:
double expected = 0.2;
Đầu vào:
long fan_in = 50;
string method = "he_normal";
long fan_out = 10;

Kết quả mong đợi:
double expected = 0.2;

Giải thích

He chỉ dùng fan_in: √(2 / 50) = √0.04 = 0.2.

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.