Saya mencoba untuk lebih memahami jaringan saraf convolutional dengan menulis kode Python yang tidak bergantung pada perpustakaan (seperti Convnet atau TensorFlow), dan saya terjebak dalam literatur tentang bagaimana memilih nilai untuk matriks kernel, ketika melakukan lilitan pada suatu gambar.
Saya mencoba memahami detail implementasi pada langkah antara fitur peta pada gambar di bawah ini yang menunjukkan lapisan CNN.
Menurut diagram ini:
Kernel matriks kernel "langkah-langkah" di atas gambar, membuat peta fitur, di mana setiap piksel adalah jumlah dari semua produk elemen-bijaksana antara setiap berat kernel (atau matriks filter) dan nilai piksel yang sesuai dari gambar input.
Pertanyaan saya adalah: bagaimana kita menginisialisasi bobot matriks (atau filter) kernel?
Dalam demonstrasi di atas, mereka hanya 1s dan 0s, tapi saya anggap ini disederhanakan dari sake diagram.
Apakah bobot ini dilatih dalam beberapa langkah preprocessing? Atau dipilih secara eksplisit oleh pengguna?
sumber
Saya tidak dapat berkomentar karena reputasi yang rendah sehingga saya menulis ini sebagai jawaban atas pertanyaan Felipe Almeida. Setelah jawaban sempurna Indie AI, tidak ada banyak yang bisa ditambahkan. Jika Anda ingin mendeteksi bentuk tertentu (seperti X), Anda dapat menentukan terlebih dahulu filter tertentu, seperti halnya deteksi tepi. Tetapi ini adalah keindahan dari pembelajaran yang mendalam, ada begitu banyak lapisan, begitu banyak filter dan banyak iterasi sehingga filter mempelajari hampir setiap bentuk objek yang diperlukan. Jadi secara teoritis, jika ada X yang terdeteksi, salah satu filter akan belajar mendeteksi X (sebagai filter kuning)
sumber