เครือข่ายในรูปต้นฉบับ
โครงการเรียนรู้เพนกวิน
โครงการใช้ข้อมูลเพนกวิน Palmer ที่สมบูรณ์ 342 แถว: ชุดฝึก 240 และชุดทดสอบ 102 แถว แถวฝึกที่เลือกกำหนดการปรับสเกลและพารามิเตอร์ CSV ต้นฉบับ
โครงการนี้ฝึกน้ำหนักด้วย softmax ต่างจากแล็บในหน้าแรกที่ใช้ค่าเฉลี่ยของสายพันธุ์ที่ใกล้ที่สุด ข้อมูลวัดเพนกวินชุดเดียวกัน แต่วิธีจำแนกต่างกัน คำทำนายอาจต่างกันได้
กฎทำนายและชั้นของเครือข่าย · อธิบายหรือใช้กฎทำนาย ชั้น และพารามิเตอร์
โครงการใช้กฎเชิงเส้นกับสองคุณลักษณะ น้ำหนักที่ฝึกให้คะแนนหรือมวลที่ปรับสเกล
พิจารณาแนวคิดนี้ร่วมกับโครงการ สมมติฐานของต้นฉบับอาจต่างกัน ข้อมูลชุดนี้ไม่พิสูจน์ทฤษฎีบท
ข้อมูลเข้า: 12 × 2; ประเมินชุดทดสอบ: 102 · #58 · 40.6 มม., 193 มม.. คำตอบที่ทราบ: อาเดลี; ค่าทำนาย: อาเดลี · [≈0.7383, ≈0.2444, ≈0.01737].
ใช้ในส่วนต้นฉบับเหล่านี้: 1.2 เรียนรู้จากตัวอย่าง · 3.3 วิธีอื่นในการวัดความสามารถในการแทนฟังก์ชัน
รูปต้นฉบับมีข้อมูลเข้า 3 ค่า ชั้นซ่อนกว้าง 4 และ 6 และผลลัพธ์ 1 ค่า แต่ละชั้นมีเมทริกซ์น้ำหนักและเวกเตอร์ไบแอส
ชั้นแรกมี 16 พารามิเตอร์ ชั้นที่สอง 30 และชั้นผลลัพธ์ 7 รวม 53
รูปร่างกำหนดว่าการดำเนินการของชั้นเครือข่ายประกอบกันอย่างไร
ตัวอย่างสูตรต้นฉบับ
ภาพประกอบ · สถาปัตยกรรมตรงกับรูปต้นฉบับ น้ำหนัก ไบแอส และข้อมูลเข้าเชิงตัวเลขเป็นข้อมูลสมมติสำหรับการสาธิต
สัญลักษณ์
- ความกว้างชั้น [3,4,6,1]
- น้ำหนักมีหนึ่งแถวต่อหน่วยและหนึ่งคอลัมน์ต่อค่าชั้นก่อน
- ไบแอสหนึ่งค่าต่อผลลัพธ์ของชั้น
- ค่าก่อนกระตุ้นของหน่วย i ในชั้น ℓ
- ค่าหลังการกระตุ้นที่สอดคล้องกัน
ตัวอย่างสูตรต้นฉบับ
ตัวอย่างต้นฉบับนี้ใช้ข้อมูลเข้าและสมมติฐานของตัวเอง การแก้ไขไม่เปลี่ยนโครงการ
แก้ค่าหรือโค้ด แล้วกดรัน ตัวอย่างนี้เป็นการคำนวณจำนวนจำกัด ไม่ใช่การพิสูจน์ทฤษฎีบท
ลำดับข้อมูลในตัวอย่างนี้
โค้ดเปลี่ยนแล้ว กดรีเซ็ตเพื่อคืนลำดับข้อมูลของตัวอย่าง
คุณเลือก
input.x= 1
ค่าเริ่มต้นในโค้ด
widths=[3, 4, 6, 1]
คำนวณที่นี่
นิพจน์ผลลัพธ์: {
x,
widths,
counts,
total: counts.reduce((a, b) => a + b, 0),
firstPre,
first,
secondPre,
second,
output,
}
x=[input.x, 0, 0]ใช้:input.xmatrices=widths .slice(1) .map((rows, i) => Array.from({ length: rows }, (_, r) => Array.from({ length: widths[i] }, (_, c) => (r === 0 && c === 0 ? 1 : 0)), ), )ใช้:widthsbiases=widths.slice(1).map((size) => Array(size).fill(0))ใช้:widthsfirstPre=affine(matrices[0], biases[0], x)ใช้:affine,matrices,biases,xfirst=firstPre.map((value) => Math.max(0, value))ใช้:firstPresecondPre=affine(matrices[1], biases[1], first)ใช้:affine,matrices,biases,firstsecond=secondPre.map((value) => Math.max(0, value))ใช้:secondPreoutput=affine(matrices[2], biases[2], second)ใช้:affine,matrices,biases,second
มีนิพจน์เพิ่มเติมในโค้ด
ส่งกลับ
x- อาร์เรย์ (3 รายการ): [1, 0, 0]
widths- อาร์เรย์ (4 รายการ): [3, 4, 6, 1]
counts- อาร์เรย์ (3 รายการ): [16, 30, 7]
total- 53
firstPre- อาร์เรย์ (4 รายการ): [1, 0, 0, 0]
first- อาร์เรย์ (4 รายการ): [1, 0, 0, 0]
secondPre- อาร์เรย์ (6 รายการ): [1, 0, 0, 0, …]
second- อาร์เรย์ (6 รายการ): [1, 0, 0, 0, …]
อ่านตัวเลขจาก input แล้วคืนค่าผลลัพธ์ พื้นฐาน JavaScript.
ผลลัพธ์
ข้อความทางเทคนิค
แต่ละชั้นคูณค่าก่อนหน้าด้วย W แล้วบวก b ตัวอย่างใช้ ReLU กับค่าก่อนกระตุ้นของชั้นซ่อน พารามิเตอร์ 53 ค่าในต้นฉบับรวมน้ำหนักและไบแอสที่เป็นศูนย์ จำนวนขึ้นกับตำแหน่งที่มี ไม่ใช่ตำแหน่งที่ไม่เป็นศูนย์
แหล่งอ้างอิง: นิพจน์จากแหล่งต้นฉบับ