Materi
Satu lapisan berisi banyak neuron yang membaca masukan yang sama. Bobot semua neuron itu disusun menjadi satu matriks W berukuran (banyak masukan, banyak neuron): kolom ke-j berisi bobot neuron ke-j. Bias disusun menjadi vektor b dengan satu angka per neuron. Dive into Deep Learning §5.1 menulis keluaran lapisan untuk satu kumpulan sampel X sebagai H = XW + b, dengan setiap baris X adalah satu sampel.
Di numpy perkalian matriks ditulis X @ W. Bila X berukuran (n, d) dan W berukuran (d, h), hasilnya (n, h): satu baris per sampel, satu kolom per neuron. Vektor b berukuran (h,) ditambahkan ke setiap baris lewat broadcasting, tanpa perulangan.
scikit-learn menyimpan bobot yang sudah dilatih di atribut coefs_ (daftar matriks, satu per sambungan antarlapisan) dan bias di intercepts_. User Guide-nya memberi contoh jaringan 2 masukan, lapisan tersembunyi 5 dan 2 neuron, dan 1 keluaran: bentuk coefs_-nya (2, 5), (5, 2), (2, 1). Jumlah parameter satu sambungan adalah d × h bobot ditambah h bias; jumlah parameter jaringan adalah total semua sambungannya.
# jaringan 3 masukan -> 4 tersembunyi -> 2 keluaran
# sambungan 1: 3 × 4 bobot + 4 bias = 16
# sambungan 2: 4 × 2 bobot + 2 bias = 10
# total: 26 parameter
import numpy as np
X = np.ones((5, 3)) # 5 sampel
W = np.zeros((3, 4))
print((X @ W).shape) # (5, 4)