$$ x = [0 ~1~ 2 ~3 ~1~ 2~ 3~ 2~ 4~ 3] $$
Vektor tersebut memiliki ukuran 10 data. Zero padding adalah menambahkan nol di belakang vektor tersebut, misalnya kita tambahkan lima nol di belakang data terakhir sehingga menjadi,
$$x = [0 ~1~ 2~ 3~ 1~ 2~ 3~ 2~ 4~ 3~ 0~ 0~ 0~ 0~ 0]$$
Zero padding banyak dipakai untuk menyamakan ukuran vektor/matriks. Pada machine learning/deep learning, ukuran input harus sama, dan zero padding dilakukan untuk tujuan tersebut (menyamakan ukuran input). Pada analisa sinyal di domain frekuensi, zero padding ini biasanya digunakan agar spektrum yang kita plot menjadi lebih halus.
Implementasi dengan Python
Implementasi zero padding dengan python bisa bermacam-macam, salah satunya dengan np.pad (salah lainnya dengan menggunakan np.zeros).Contohnya adalah sebagai berikut:
>>> x = np.array([1, 2, 3, 4, 5]) >>> xpad = np.pad(x, (0, 5), 'constant') # menambahkan lima nol di belakang vektor a >>> x [1, 2, 3, 4 , 5, 0, 0, 0, 0, 0]
Efek terhadap FFT
Untuk apa menambahkah nol di akhir sinyal? Untuk memperhalus tampilan FFT agar lebih mudah difahami. Perhatikan skrip python berikut dan plot hasilnya.Hasil:
Spektrum tanpa zero padding (biru) dan dengan zero padding (merah).
Zero padding (red) vs Non zero padding (blue) |
Disini terlihat lebih jelas perbedaan spektrum setelah zero padding |
Bonus:
- Keras/TensorFlow menyediakan fungsi pad_sequences untuk menyamakan ukuran semua vektor dalam matriks. Panggil dengan,
from keras.preprocessing.sequence import pad_sequences