โจทย์ทั้งหมด
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

Xavier and He Weight Initialization

Compute the range or standard deviation used to initialize the weights of a layer.

สิ่งที่คุณจะได้เรียนรู้

  • Compute initialization ranges for a layer
  • Choose between Xavier and He
  • Understand why initialization matters

โจทย์

ดูฉบับแปล

Weights that start too big or too small make deep networks hard to train. Two standard schemes pick the scale from the layer size, where fan_in is the number of inputs and fan_out the number of outputs:

methodreturns
"xavier_uniform"limit √(6 / (fan_in + fan_out)), weights drawn from [-limit, limit]
"xavier_normal"standard deviation √(2 / (fan_in + fan_out))
"he_uniform"limit √(6 / fan_in)
"he_normal"standard deviation √(2 / fan_in)

Xavier (Glorot) suits sigmoid and tanh layers; He suits ReLU layers.

Implement init_bound(method, fan_in, fan_out).

Input

method: One of "xavier_uniform", "xavier_normal", "he_uniform" or "he_normal".

fan_in, fan_out: The layer's number of inputs and outputs.

Output

Return the limit or standard deviation as a decimal number.

เงื่อนไข

1 ≤ fan_in, fan_out ≤ 100,000

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
fan_in = 3
method = "xavier_uniform"
fan_out = 3

ผลลัพธ์ที่คาดหวัง:
expected = 1.0
อินพุต:
long long fan_in = 3;
std::string method = "xavier_uniform";
long long fan_out = 3;

ผลลัพธ์ที่คาดหวัง:
double expected = 1.0;
อินพุต:
long fan_in = 3;
string method = "xavier_uniform";
long fan_out = 3;

ผลลัพธ์ที่คาดหวัง:
double expected = 1.0;

คำอธิบาย

√(6 / (3 + 3)) = √1 = 1, so weights are drawn from [-1, 1].

ตัวอย่างที่ 2
อินพุต:
fan_in = 50
method = "he_normal"
fan_out = 10

ผลลัพธ์ที่คาดหวัง:
expected = 0.2
อินพุต:
long long fan_in = 50;
std::string method = "he_normal";
long long fan_out = 10;

ผลลัพธ์ที่คาดหวัง:
double expected = 0.2;
อินพุต:
long fan_in = 50;
string method = "he_normal";
long fan_out = 10;

ผลลัพธ์ที่คาดหวัง:
double expected = 0.2;

คำอธิบาย

He only uses fan_in: √(2 / 50) = √0.04 = 0.2.

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก