- ตัวดำเนินการ
-
เรียนรู้
เรียน Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ เรียน AIโครงข่ายประสาท ML และ LLM ตั้งแต่ศูนย์ เรียน C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ เรียน C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET เรียน Matplotlibกราฟเส้น แท่ง กระจาย และวงกลม พร้อมตัวแสดงภาพแบบโต้ตอบ อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++ เขียนโปรแกรมสำหรับเด็ก เรียนเขียนโปรแกรมผ่านการเล่น!
- โจทย์ใหม่
- สำหรับครูใหม่
- อัปเดต
- เลี้ยงกาแฟสักแก้ว
การแพร่ย้อนกลับ ใช้กฎลูกโซ่ทีละเลเยอร์ จากเอาต์พุตย้อนกลับไปหาอินพุต โครงข่ายมีอินพุต n ตัว นิวรอนซ่อน h ตัว และเอาต์พุตหนึ่งตัว ทั้งหมดใช้ sigmoid (σ(z) = 1 / (1 + e^(-z))):
- เลเยอร์ซ่อน: a_j = σ(inputs · hidden_weights[j] + hidden_biases[j])
- เอาต์พุต: y = σ(a · output_weights + output_bias)
- ค่าสูญเสีย: L = (y - target)²
เกรเดียนต์:
- delta_out = 2 × (y - target) × y × (1 - y)
- เลเยอร์เอาต์พุต: dL/doutput_weights[j] = delta_out × a_j และ dL/doutput_bias = delta_out
- delta_j = delta_out × output_weights[j] × a_j × (1 - a_j)
- เลเยอร์ซ่อน: dL/dhidden_weights[j][i] = delta_j × inputs[i] และ dL/dhidden_biases[j] = delta_j
จงเขียน backprop_gradients(inputs, hidden_weights, hidden_biases, output_weights, output_bias, target)
เอาต์พุต
คืนค่าเมทริกซ์ที่มี h + 1 แถว:
- แถว j (สำหรับนิวรอนซ่อน j แต่ละตัวตามลำดับ): เกรเดียนต์ n ค่าของ
hidden_weights[j]แล้วตามด้วยเกรเดียนต์ของhidden_biases[j] - แถวสุดท้าย: เกรเดียนต์ h ค่าของ
output_weightsแล้วตามด้วยเกรเดียนต์ของoutput_bias
เงื่อนไข
1 ≤ n, h ≤ 20
-5 ≤ อินพุต น้ำหนัก และไบแอสแต่ละค่า ≤ 5
0 ≤ target ≤ 1
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
inputs = [1.0]
hidden_weights = [
[0.0]
]
hidden_biases = [0.0]
output_weights = [0.0]
output_bias = 0.0
target = 1.0
ผลลัพธ์ที่คาดหวัง:
[
[0.0, 0.0],
[-0.125, -0.25]
]
คำอธิบาย
a = σ(0) = 0.5 และ y = σ(0) = 0.5 delta_out = 2 × (0.5 - 1) × 0.25 = -0.25 แถวเอาต์พุต: [-0.25 × 0.5, -0.25] = [-0.125, -0.25] delta_1 = -0.25 × 0 × 0.25 = 0 ดังนั้นแถวซ่อนคือ [0, 0]: น้ำหนักเอาต์พุตที่เป็นศูนย์จะกั้นเกรเดียนต์ไว้
ตัวอย่างที่ 2
อินพุต:
inputs = [1.0, 0.0]
hidden_weights = [
[0.0, 1.0],
[0.0, -1.0]
]
hidden_biases = [0.0, 0.0]
output_weights = [1.0, 1.0]
output_bias = -1.0
target = 0.0
ผลลัพธ์ที่คาดหวัง:
[
[0.0625, 0.0, 0.0625],
[0.0625, 0.0, 0.0625],
[0.125, 0.125, 0.25]
]
คำอธิบาย
ค่าซ่อนทั้งสองค่าเท่ากับ σ(0) = 0.5 ดังนั้น y = σ(0.5 + 0.5 - 1) = 0.5 และ delta_out = 2 × 0.5 × 0.25 = 0.25 แถวเอาต์พุต: [0.125, 0.125, 0.25] delta_j แต่ละค่า = 0.25 × 1 × 0.25 = 0.0625 ได้แถวซ่อน [0.0625, 0, 0.0625] (อินพุตตัวที่สองเป็น 0)
แหล่งอ้างอิง
-
ตัวอย่างที่ 1 ยังไม่ได้รันอินพุต:
inputs = [1.0] hidden_weights = [ [0.0] ] hidden_biases = [0.0] output_weights = [0.0] output_bias = 0.0 target = 1.0ผลลัพธ์ที่คาดหวัง:[ [0.0, 0.0], [-0.125, -0.25] ]เอาต์พุตของคุณ -
ตัวอย่างที่ 2 ยังไม่ได้รันอินพุต:
inputs = [1.0, 0.0] hidden_weights = [ [0.0, 1.0], [0.0, -1.0] ] hidden_biases = [0.0, 0.0] output_weights = [1.0, 1.0] output_bias = -1.0 target = 0.0ผลลัพธ์ที่คาดหวัง:[ [0.0625, 0.0, 0.0625], [0.0625, 0.0, 0.0625], [0.125, 0.125, 0.25] ]เอาต์พุตของคุณ
มี 4 การทดสอบที่ซ่อนอยู่จะถูกรันเมื่อคุณส่งคำตอบ ถ้าโค้ดไม่ผ่านข้อใด คุณจะเห็นการทดสอบข้อนั้น แก้โจทย์ให้ได้เพื่อดูทั้งหมด
Online Kotlin Compiler
Write, compile, run, and debug Kotlin code online in a full-featured browser IDE. Work with multiple files, save your workspace, and collaborate in real time.
🚀 71,457 การดำเนินการทั้งหมด (576 ในเดือนนี้)
ฝึก Kotlin ด้วยโจทย์เขียนโค้ด
แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI
🧩 เกี่ยวกับตัวรัน Kotlin ออนไลน์นี้
CodeUtility Kotlin Executor ช่วยให้คุณเขียน คอมไพล์ และรันโค้ด Kotlin ได้โดยตรงในเบราว์เซอร์ - ไม่ต้องติดตั้งโปรแกรม, IDE หรือเซ็ตอัป SDK ใดๆ ใช้คอมไพเลอร์ Kotlin จริงที่ทำงานในแซนด์บ็อกซ์แบบแยกส่วน เพื่อความปลอดภัยและประสบการณ์การรันที่สมจริง
เครื่องมือนี้รองรับ Kotlin หลายเวอร์ชัน - 1.6, 1.9 และ 2.1 - ให้คุณสำรวจการเปลี่ยนแปลงไวยากรณ์, ทดสอบความเข้ากันได้ของโค้ด และทดลองฟีเจอร์สมัยใหม่อย่าง coroutines, data classes และ sealed interfaces
เหมาะสำหรับนักศึกษาที่เรียนพื้นฐาน Kotlin นักพัฒนา Android ที่ลองสแนิปเพ็ต, หรือวิศวกรแบ็กเอนด์ที่ต้องการทดสอบลอจิกในสภาพแวดล้อม JVM โดยไม่ต้องออกจากเบราว์เซอร์
สภาพแวดล้อมจะรันแต่ละสแนิปเพ็ตภายในรันไทม์แบบคอนเทนเนอร์ที่ปลอดภัย ช่วยให้ประสิทธิภาพสม่ำเสมอและการรันโค้ดปลอดภัย
มากกว่าเครื่องมือรันโค้ด
ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน
วิธีใช้ตัวประมวลผลนี้
เลือกรันไทม์ เปิดหรือสร้างไฟล์ เขียนโค้ด แล้วเลือกเรียกใช้ ผลลัพธ์จะแสดงในเทอร์มินัล ส่วนผู้ใช้ที่ลงชื่อเข้าใช้สามารถเก็บไฟล์ในพื้นที่ทำงาน ติดตั้งไลบรารี และทำงานร่วมกันผ่านการแชร์ได้
- เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
- เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
- ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน
💡 คู่มือพื้นฐาน Kotlin สำหรับผู้เริ่มต้น
1. การประกาศตัวแปรและค่าคงที่
Kotlin ใช้ val สำหรับตัวแปรที่เปลี่ยนค่าไม่ได้ และ var สำหรับตัวแปรที่เปลี่ยนค่าได้
val name: String = "Alice"
var age: Int = 30
val pi = 3.14 // ชนิดข้อมูลถูกอนุมาน
// ค่าคงที่
const val MAX_USERS = 100
2. เงื่อนไข (if / when)
ใช้ if หรือ when สำหรับหลายกรณีเงื่อนไข
val x = 2
if (x == 1) {
println("หนึ่ง")
} else if (x == 2) {
println("สอง")
} else {
println("อื่นๆ")
}
when (x) {
1 -> println("หนึ่ง")
2 -> println("สอง")
else -> println("อื่นๆ")
}
3. ลูป
ใช้ for, while และ do-while สำหรับการวนซ้ำ
for (i in 0..2) {
println(i)
}
var n = 3
while (n > 0) {
println(n)
n--
}
4. อาเรย์
Kotlin รองรับอาเรย์ด้วยฟังก์ชัน arrayOf()
val numbers = arrayOf(10, 20, 30)
println(numbers[1])
5. การจัดการลิสต์
ใช้ mutableListOf สำหรับลิสต์แบบไดนามิก
val nums = mutableListOf(1, 2, 3)
nums.add(4)
nums.removeAt(0)
for (n in nums) {
print("$n ")
}
6. อินพุต/เอาต์พุตผ่านคอนโซล
ใช้ readLine() สำหรับรับอินพุต และ println() สำหรับเอาต์พุต
print("กรอกชื่อของคุณ: ")
val name = readLine()
println("สวัสดี, $name")
7. ฟังก์ชัน
ฟังก์ชันใช้คีย์เวิร์ด fun พร้อมชนิดค่าที่ส่งกลับแบบระบุได้
fun add(a: Int, b: Int): Int {
return a + b
}
println(add(3, 4))
8. แผนที่ (Map)
mutableMapOf ใช้เก็บคู่คีย์-ค่า
val ages = mutableMapOf("Alice" to 30)
println(ages["Alice"])
9. การจัดการข้อยกเว้น
ใช้ try, catch และ finally เพื่อจัดการข้อผิดพลาด
try {
val result = 10 / 0
} catch (e: ArithmeticException) {
println("ข้อผิดพลาด: ${e.message}")
}
10. การทำงานกับไฟล์
ใช้ File จาก java.io สำหรับการทำงานกับไฟล์
import java.io.File
File("file.txt").writeText("สวัสดีไฟล์")
val text = File("file.txt").readText()
println(text)
11. การจัดการสตริง
สตริงใน Kotlin รองรับเมธอดมากมายและการแทรกค่า (interpolation)
val text = "สวัสดีชาวโลก"
println(text.length)
println(text.substring(0, 5))
println(text.contains("ชาวโลก"))
12. คลาสและอ็อบเจ็กต์
คลาสใน Kotlin กระชับและรองรับคอนสตรัคเตอร์เริ่มต้น
class Person(val name: String) {
fun greet() = println("สวัสดี ฉันคือ $name")
}
val p = Person("Alice")
p.greet()
13. ความปลอดภัยของค่า null
Kotlin แยกชนิดที่เป็น nullable และ non-null ออกจากกัน ใช้ ? และ ?: เพื่อความปลอดภัย
val name: String? = null
println(name?.length ?: 0)