เลเยอร์ซ่อนและพารามิเตอร์

Deep Learning เบื้องต้นด้วย PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

การซ้อนเลเยอร์ด้วย nn.Sequential()

# Create network with three linear layers
model = nn.Sequential(

nn.Linear(n_features, 8),
nn.Linear(8, 4), nn.Linear(4, n_classes)
)
  • ข้อมูลนำเข้าจะผ่านเลเยอร์เชิงเส้น
  • เลเยอร์ภายใน nn.Sequential() คือเลเยอร์ซ่อน
Deep Learning เบื้องต้นด้วย PyTorch

การซ้อนเลเยอร์ด้วย nn.Sequential()

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(n_features, 8), # n_features represents number of input features
    nn.Linear(8, 4),
    nn.Linear(4, n_classes) # n_classes represents the number of output classes  
)
  • ข้อมูลนำเข้าจะผ่านเลเยอร์เชิงเส้น
  • เลเยอร์ภายใน nn.Sequential() คือเลเยอร์ซ่อน
  • n_features และ n_classes กำหนดโดยชุดข้อมูล
Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

ภาพประกอบโครงข่ายประสาทเทียมที่มีเลเยอร์ซ่อนสองชั้น

Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

ภาพประกอบโครงข่ายประสาทเทียมที่มีเลเยอร์ซ่อนสี่ชั้น

Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

ภาพประกอบโครงข่ายประสาทเทียมที่มีเลเยอร์ซ่อนสี่ชั้น

Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

ภาพประกอบโครงข่ายประสาทเทียมที่มีเลเยอร์ซ่อนสี่ชั้น

Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20),
    nn.Linear(20, 5)
)
Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18), # Takes 10 features and outputs 18
    nn.Linear(18, 20),
    nn.Linear(20, 5)
)
  • Input 10 ➡ output 18 ➡ output 20 ➡ Output 5
Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20), # Takes 18 and outputs 20
    nn.Linear(20, 5)
)
  • Input 10 ➡ output 18 ➡ output 20 ➡ Output 5
Deep Learning เบื้องต้นด้วย PyTorch

การเพิ่มเลเยอร์

# Create network with three linear layers
model = nn.Sequential(
    nn.Linear(10, 18),
    nn.Linear(18, 20),
    nn.Linear(20, 5) # Takes 20 and outputs 5
)
  • Input 10 ➡ output 18 ➡ output 20 ➡ Output 5
Deep Learning เบื้องต้นด้วย PyTorch

เลเยอร์ประกอบด้วยนิวรอน

$$

  • เชื่อมต่อแบบสมบูรณ์ เมื่อแต่ละนิวรอนเชื่อมกับนิวรอนทุกตัวในเลเยอร์ก่อนหน้า

ภาพประกอบเลเยอร์อินพุตและเอาต์พุตที่มีลูกศรเชื่อมระหว่างเลเยอร์

Deep Learning เบื้องต้นด้วย PyTorch

เลเยอร์ประกอบด้วยนิวรอน

$$

  • เชื่อมต่อแบบสมบูรณ์ เมื่อแต่ละนิวรอนเชื่อมกับนิวรอนทุกตัวในเลเยอร์ก่อนหน้า

$$

  • นิวรอนในเลเยอร์เชิงเส้น:

ภาพประกอบเลเยอร์อินพุตและเอาต์พุตที่มีลูกศรเชื่อมระหว่างเลเยอร์และวงกลมล้อมรอบนิวรอนเอาต์พุตหนึ่งตัว

Deep Learning เบื้องต้นด้วย PyTorch

เลเยอร์ประกอบด้วยนิวรอน

$$

  • เชื่อมต่อแบบสมบูรณ์ เมื่อแต่ละนิวรอนเชื่อมกับนิวรอนทุกตัวในเลเยอร์ก่อนหน้า

$$

  • นิวรอนในเลเยอร์เชิงเส้น:
    • ประมวลผลเชิงเส้นโดยใช้นิวรอนทั้งหมดจากเลเยอร์ก่อนหน้า

ภาพประกอบเลเยอร์อินพุตและเอาต์พุตที่มีลูกศรเชื่อมระหว่างเลเยอร์ วงกลมล้อมนิวรอนเอาต์พุตหนึ่งตัว และลูกศรที่ถูกไฮไลต์

Deep Learning เบื้องต้นด้วย PyTorch

เลเยอร์ประกอบด้วยนิวรอน

$$

  • เชื่อมต่อแบบสมบูรณ์ เมื่อแต่ละนิวรอนเชื่อมกับนิวรอนทุกตัวในเลเยอร์ก่อนหน้า

$$

  • นิวรอนในเลเยอร์เชิงเส้น:
    • ประมวลผลเชิงเส้นโดยใช้นิวรอนทั้งหมดจากเลเยอร์ก่อนหน้า
    • มี N+1 พารามิเตอร์: N จากอินพุต และ 1 สำหรับไบแอส

N+1

Deep Learning เบื้องต้นด้วย PyTorch

พารามิเตอร์และความจุของโมเดล

  • เลเยอร์ซ่อนมากขึ้น = พารามิเตอร์มากขึ้น = ความจุของโมเดลสูงขึ้น

$$

บล็อกโค้ดสำหรับเครือข่ายสองเลเยอร์

Deep Learning เบื้องต้นด้วย PyTorch

พารามิเตอร์และความจุของโมเดล

  • เลเยอร์ซ่อนมากขึ้น = พารามิเตอร์มากขึ้น = ความจุของโมเดลสูงขึ้น

$$

บล็อกโค้ดสำหรับเครือข่ายสองเลเยอร์

$$

การคำนวณพารามิเตอร์ด้วยตนเอง:

  • เลเยอร์แรกมี 4 นิวรอน แต่ละนิวรอนมี 8+1 พารามิเตอร์ 9 คูณ 4 = 36 พารามิเตอร์
Deep Learning เบื้องต้นด้วย PyTorch

พารามิเตอร์และความจุของโมเดล

  • เลเยอร์ซ่อนมากขึ้น = พารามิเตอร์มากขึ้น = ความจุของโมเดลสูงขึ้น

$$

บล็อกโค้ดสำหรับเครือข่ายสองเลเยอร์

$$

การคำนวณพารามิเตอร์ด้วยตนเอง:

  • เลเยอร์แรกมี 4 นิวรอน แต่ละนิวรอนมี 8+1 พารามิเตอร์ 9 คูณ 4 = 36 พารามิเตอร์
Deep Learning เบื้องต้นด้วย PyTorch

พารามิเตอร์และความจุของโมเดล

  • เลเยอร์ซ่อนมากขึ้น = พารามิเตอร์มากขึ้น = ความจุของโมเดลสูงขึ้น

$$

บล็อกโค้ดสำหรับเครือข่ายสองเลเยอร์

$$

การคำนวณพารามิเตอร์ด้วยตนเอง:

  • เลเยอร์แรกมี 4 นิวรอน แต่ละนิวรอนมี 8+1 พารามิเตอร์ 9 คูณ 4 = 36 พารามิเตอร์
  • เลเยอร์ที่สองมี 2 นิวรอน แต่ละนิวรอนมี 4+1 พารามิเตอร์ 5 คูณ 2 = 10 พารามิเตอร์
Deep Learning เบื้องต้นด้วย PyTorch

พารามิเตอร์และความจุของโมเดล

  • เลเยอร์ซ่อนมากขึ้น = พารามิเตอร์มากขึ้น = ความจุของโมเดลสูงขึ้น

$$

บล็อกโค้ดสำหรับเครือข่ายสองเลเยอร์

$$

การคำนวณพารามิเตอร์ด้วยตนเอง:

  • เลเยอร์แรกมี 4 นิวรอน แต่ละนิวรอนมี 8+1 พารามิเตอร์ 9 คูณ 4 = 36 พารามิเตอร์
  • เลเยอร์ที่สองมี 2 นิวรอน แต่ละนิวรอนมี 4+1 พารามิเตอร์ 5 คูณ 2 = 10 พารามิเตอร์
  • 36 + 10 = 46 พารามิเตอร์ที่เรียนรู้ได้
Deep Learning เบื้องต้นด้วย PyTorch

พารามิเตอร์และความจุของโมเดล

  • เลเยอร์ซ่อนมากขึ้น = พารามิเตอร์มากขึ้น = ความจุของโมเดลสูงขึ้น

$$

บล็อกโค้ดสำหรับเครือข่ายสองเลเยอร์

$$

การใช้ PyTorch:

  • .numel(): คืนค่าจำนวนสมาชิกในเทนเซอร์
total = 0
for parameter in model.parameters():
    total += parameter.numel()
print(total)
46
Deep Learning เบื้องต้นด้วย PyTorch

การสร้างสมดุลระหว่างความซับซ้อนและประสิทธิภาพ

ความสมดุลระหว่างความซับซ้อนและประสิทธิภาพ

Deep Learning เบื้องต้นด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning เบื้องต้นด้วย PyTorch

Preparing Video For Download...