- ตัวดำเนินการ
-
เรียนรู้
ศูนย์การเรียนรู้ Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ ศูนย์การเรียนรู้ C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ ศูนย์การเรียนรู้ C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++
- โจทย์
XOR (exclusive or) เป็นปัญหาคลาสสิกที่นิวรอนเดียวแก้ไม่ได้ แต่โครงข่ายที่มีเลเยอร์ซ่อนหนึ่งชั้นแก้ได้ จงฝึกโครงข่ายที่มีอินพุต 2 ตัว นิวรอนซ่อน 2 ตัว และเอาต์พุต 1 ตัว ทั้งหมดใช้ sigmoid (σ(z) = 1 / (1 + e^(-z))) โดยใช้ค่าสูญเสีย L = (y - target)²
ข้อมูลฝึก ซึ่งใช้ ตามลำดับนี้ เสมอในทุก epoch:
| อินพุต | target |
|---|---|
| [0, 0] | 0 |
| [0, 1] | 1 |
| [1, 0] | 1 |
| [1, 1] | 0 |
สำหรับแต่ละตัวอย่าง:
- ส่งผ่านไปข้างหน้า: a_j = σ(x₁ × hidden_weights[j][0] + x₂ × hidden_weights[j][1] + hidden_biases[j]), y = σ(a₁ × output_weights[0] + a₂ × output_weights[1] + output_bias)
- delta_out = 2 × (y - target) × y × (1 - y) และ delta_j = delta_out × output_weights[j] × a_j × (1 - a_j) โดยใช้น้ำหนัก ก่อน การปรับของตัวอย่างนี้
- ปรับทุกพารามิเตอร์ด้วยอัตราการเรียนรู้ lr: output_weights[j] -= lr × delta_out × a_j, output_bias -= lr × delta_out, hidden_weights[j][i] -= lr × delta_j × x_i, hidden_biases[j] -= lr × delta_j
จงเขียน train_xor(hidden_weights, hidden_biases, output_weights, output_bias, learning_rate, epochs)
เอาต์พุต
หลังการฝึก ให้คืนค่าการทำนาย y ของโครงข่ายสำหรับอินพุต [0, 0], [0, 1], [1, 0] และ [1, 1] ตามลำดับนี้
เงื่อนไข
0 ≤ epochs ≤ 5,000
0 < learning_rate ≤ 5
-2 ≤ น้ำหนักและไบแอสเริ่มต้นแต่ละค่า ≤ 2
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
epochs = 0
output_bias = 0.0
hidden_biases = [0.0, 0.3]
learning_rate = 1.5
hidden_weights = [
[0.2, 0.8],
[0.9, -0.7]
]
output_weights = [-0.6, 0.4]
ผลลัพธ์ที่คาดหวัง:
[0.482451, 0.436972, 0.494378, 0.452729]
คำอธิบาย
เมื่อ epoch เป็น 0 จะไม่มีการฝึกเลย ผลลัพธ์จึงเป็นแค่การส่งผ่านไปข้างหน้าด้วยน้ำหนักเริ่มต้น: ประมาณ [0.482, 0.437, 0.494, 0.453] โครงข่ายที่ยังไม่ได้ฝึกตอบเกือบเหมือนกันทุกอินพุต
ตัวอย่างที่ 2
อินพุต:
epochs = 2000
output_bias = 0.0
hidden_biases = [0.0, 0.3]
learning_rate = 1.5
hidden_weights = [
[0.2, 0.8],
[0.9, -0.7]
]
output_weights = [-0.6, 0.4]
ผลลัพธ์ที่คาดหวัง:
[0.015727, 0.982119, 0.985515, 0.013682]
คำอธิบาย
หลังจาก 2,000 epoch การทำนายอยู่ที่ประมาณ [0.016, 0.982, 0.986, 0.014]: ต่ำสำหรับ [0, 0] และ [1, 1] สูงสำหรับ [0, 1] และ [1, 0] โครงข่ายเรียนรู้ XOR ได้แล้ว
แหล่งอ้างอิง
-
ตัวอย่างที่ 1 ยังไม่ได้รันอินพุต:
epochs = 0 output_bias = 0.0 hidden_biases = [0.0, 0.3] learning_rate = 1.5 hidden_weights = [ [0.2, 0.8], [0.9, -0.7] ] output_weights = [-0.6, 0.4]ผลลัพธ์ที่คาดหวัง:[0.482451, 0.436972, 0.494378, 0.452729]เอาต์พุตของคุณ -
ตัวอย่างที่ 2 ยังไม่ได้รันอินพุต:
epochs = 2000 output_bias = 0.0 hidden_biases = [0.0, 0.3] learning_rate = 1.5 hidden_weights = [ [0.2, 0.8], [0.9, -0.7] ] output_weights = [-0.6, 0.4]ผลลัพธ์ที่คาดหวัง:[0.015727, 0.982119, 0.985515, 0.013682]เอาต์พุตของคุณ
มี 4 การทดสอบที่ซ่อนอยู่จะถูกรันเมื่อคุณส่งคำตอบ
คอมไพเลอร์และดีบักเกอร์ Python ออนไลน์
เขียน รัน และดีบัก Python ออนไลน์ ใช้ breakpoint และการทำงานทีละขั้นในโหมดเซิร์ฟเวอร์ได้โดยไม่ต้องติดตั้ง
🚀 4,279,640 การดำเนินการทั้งหมด (40 ในเดือนนี้)
ฝึก Python ด้วยโจทย์เขียนโค้ด
แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI
🐍 เกี่ยวกับตัวรัน Python ออนไลน์นี้
CodeUtility Python Executor ให้คุณเขียน รัน และทดสอบโค้ด Python ได้โดยตรงบนเบราว์เซอร์ของคุณ - ไม่ต้องตั้งค่าหรือทำการติดตั้งใด ๆ ใช้งานบนแซนด์บ็อกซ์ที่ปลอดภัยซึ่งรองรับเวอร์ชัน Python จริง ตั้งแต่ 3.10 ถึง 3.13
ไม่ว่าคุณจะเรียนรู้ Python เป็นครั้งแรก ทดสอบโค้ดสั้น ๆ หรือดีบั๊กลอจิก เครื่องมือนี้มอบสภาพแวดล้อมการเขียนโค้ดที่รวดเร็วและไร้สิ่งรบกวน คุณสามารถทดลองได้อย่างอิสระและเห็นผลลัพธ์ทันทีในคอนโซลที่มีมาให้
เหมาะกับผู้เริ่มต้น นักศึกษา และนักพัฒนาที่ต้องการ IDE ออนไลน์แบบเบา ๆ สำหรับฝึก Python หรือสร้างโปรโตไทป์อย่างรวดเร็ว
มากกว่าเครื่องมือรันโค้ด
ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน
วิธีใช้ตัวประมวลผลนี้
เลือกรันไทม์ เปิดหรือสร้างไฟล์ เขียนโค้ด แล้วเลือกเรียกใช้ ผลลัพธ์จะแสดงในเทอร์มินัล ส่วนผู้ใช้ที่ลงชื่อเข้าใช้สามารถเก็บไฟล์ในพื้นที่ทำงาน ติดตั้งไลบรารี และทำงานร่วมกันผ่านการแชร์ได้
- เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
- เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
- ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน
💡 พื้นฐาน Python และตัวอย่างที่คุณลองได้ด้านบน
1. การประกาศตัวแปรและค่าคงที่
Python เป็นภาษาที่กำหนดชนิดแบบไดนามิก จึงไม่ต้องประกาศชนิดข้อมูลล่วงหน้า ไม่มีคีย์เวิร์ดสำหรับค่าคงที่โดยตรง แต่ตามธรรมเนียมจะเขียนค่าคงที่ด้วยตัวพิมพ์ใหญ่ทั้งหมด
# ตัวแปร
x = 10
pi = 3.14
name = "Alice"
is_active = True
# ค่าคงที่ (ตามธรรมเนียม)
MAX_USERS = 100
APP_NAME = "CodeUtility"
# ค่าคงที่ยังสามารถถูกกำหนดค่าใหม่ได้ (ไม่ได้บังคับ)
MAX_USERS = 200 # ⚠️ ทำได้ในทางเทคนิค แต่ไม่แนะนำ
2. เงื่อนไข
ควบคุมลอจิกด้วยบล็อก if, elif, และ else ใน Python 3.10+ คุณยังสามารถใช้ match-case เป็นทางเลือกแทน switch-case ได้
# รูปแบบดั้งเดิม if-elif-else
x = 2
if x == 1:
print("หนึ่ง")
elif x == 2:
print("สอง")
else:
print("อื่น ๆ")
ทางเลือก: match-case (Python 3.10+)
# ต้องใช้ Python 3.10+
x = 2
match x:
case 1:
print("หนึ่ง")
case 2:
print("สอง")
case _:
print("อื่น ๆ")
3. ลูป
for ใช้สำหรับวนผ่านลำดับข้อมูล ส่วน while จะทำงานตราบใดที่เงื่อนไขเป็นจริง
for i in range(3):
print(i)
count = 3
while count > 0:
print(count)
count -= 1
4. ลิสต์
ลิสต์เป็นคอลเลกชันที่มีลำดับและแก้ไขได้ คุณสามารถเข้าถึงสมาชิกด้วยดัชนี
fruits = ["apple", "banana"]
print(fruits[0])
print(len(fruits))
5. การจัดการลิสต์
เพิ่ม ลบ สไลซ์ และกลับลิสต์ได้ List comprehension ช่วยให้เขียนการวนซ้ำได้อย่างกระชับ
fruits.append("cherry")
fruits.insert(1, "kiwi")
fruits.remove("banana")
fruits.pop()
print(fruits[1:3])
print(fruits[::-1])
squares = [x*x for x in range(5)]
6. อินพุต/เอาต์พุตคอนโซล
ใช้ input() เพื่อรับค่าจากผู้ใช้ และ print() เพื่อแสดงผลลัพธ์
คุณสามารถพิมพ์หลายบรรทัดได้โดยใช้ \n (ตัวอักขรขึ้นบรรทัดใหม่) หรือเรียก print() หลายครั้ง
# รับอินพุต
name = input("กรอกชื่อของคุณ: ")
print("สวัสดี", name)
# พิมพ์หลายบรรทัด
print("บรรทัด 1\nบรรทัด 2\nบรรทัด 3")
# หรือใช้ print หลายครั้ง
print("บรรทัด A")
print("บรรทัด B")
print("บรรทัด C")
7. ฟังก์ชัน
ฟังก์ชันช่วยจัดระเบียบโค้ดและนำกลับมาใช้ซ้ำได้ ใช้พารามิเตอร์และค่าที่ส่งกลับ
def greet(name):
return "สวัสดี " + name
print(greet("Alice"))
8. ดิกชันนารี
เก็บข้อมูลแบบคู่คีย์-ค่า คีย์จะไม่ซ้ำกัน และสามารถเข้าถึงค่าได้ผ่านคีย์
person = {"name": "Bob", "age": 25}
print(person["name"])
print(person.get("email", "ไม่ได้ระบุ"))
9. การจัดการข้อยกเว้น
ใช้ try และ except เพื่อดักและจัดการข้อผิดพลาดอย่างเหมาะสม
try:
x = 1 / 0
except ZeroDivisionError:
print("ไม่สามารถหารด้วยศูนย์ได้")
10. การทำงานกับไฟล์ (File I/O)
อ่านและเขียนไฟล์ด้วย open()
with open("data.txt", "w") as f:
f.write("สวัสดีโลก")
with open("data.txt", "r") as f:
print(f.read())
11. การจัดการสตริง
สตริงของ Python มีเมธอดที่ทรงพลัง เช่น strip(), replace(), และ split()
text = " สวัสดี โลก "
print(text.strip())
print(text.upper())
print(text.replace("สวัสดี", "ไฮ"))
print(text.split())
12. คลาสและอ็อบเจ็กต์
กำหนดพิมพ์เขียวที่นำกลับมาใช้ซ้ำได้ด้วยคลาส ใช้ __init__ เพื่อเริ่มต้นอ็อบเจ็กต์
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "สวัสดี ฉันชื่อ " + self.name
p = Person("Alice")
print(p.greet())
🐞 วิธีดีบักโค้ด Python ออนไลน์
ใช้ดีบักเกอร์ Python ออนไลน์เพื่อค้นหาข้อผิดพลาดทางตรรกะโดยไม่ต้องติดตั้ง Python หรือ IDE การดีบักทำงานด้วย Python 3.10–3.13 ในโหมดเซิร์ฟเวอร์
- เลือกเวอร์ชัน Python ที่ทำงานบนเซิร์ฟเวอร์
- คลิกข้างหมายเลขบรรทัดเพื่อตั้ง breakpoint
- เลือก Debug เพื่อเริ่มโปรแกรมและหยุดที่ breakpoint แรก
- ตรวจสอบบรรทัดและตัวแปร แล้วใช้ Continue, Step Over, Step Into หรือ Step Out
- เลือก Stop เพื่อจบการดีบัก
เริ่มจากตัวอย่างขนาดเล็กที่ทำให้เกิดปัญหาได้ และตั้ง breakpoint ก่อนค่าจะผิดจากที่คาดไว้ โหมดเซิร์ฟเวอร์ยังใช้ไฟล์ใน workspace และไลบรารีที่ติดตั้งแล้วได้