Saya telah melalui dokumen konvolusi keras dan saya telah menemukan dua jenis konveksi Conv1D dan Conv2D. Saya melakukan beberapa pencarian web dan ini adalah apa yang saya mengerti tentang Conv1D dan Conv2D; Conv1D digunakan untuk urutan dan penggunaan Conv2D untuk gambar.
Saya selalu mengira jaringan konvolusi nerual hanya digunakan untuk gambar dan memvisualisasikan CNN dengan cara ini
Gambar dianggap sebagai matriks besar dan kemudian filter akan meluncur di atas matriks ini dan menghitung produk titik. Ini saya percaya keras menyebutkan sebagai Conv2D. Jika Conv2D bekerja dengan cara ini, lalu bagaimana mekanisme Conv1D dan bagaimana kita bisa membayangkan mekanismenya?
Jawaban:
Konvolusi adalah operasi matematika di mana Anda "meringkas" sebuah tensor atau matriks atau vektor menjadi yang lebih kecil. Jika matriks input Anda adalah satu dimensi maka Anda meringkasnya pada dimensi, dan jika tensor memiliki n dimensi maka Anda dapat meringkas sepanjang semua dimensi n. Conv1D dan Conv2D merangkum (berbelit-belit) sepanjang satu atau dua dimensi.
Misalnya, Anda dapat menggabungkan vektor menjadi vektor yang lebih pendek sebagai berikut. Dapatkan vektor "panjang" A dengan elemen n dan gabungkan menggunakan vektor bobot W dengan elemen m menjadi vektor "pendek" (ringkasan) B dengan elemen n-m + 1: manabi=∑j=m−10ai+j∗wj i=[1,n−m+1]
Jadi, jika Anda memiliki vektor panjang n, dan matriks berat Anda juga panjang n , maka konvolusi akan menghasilkan skalar atau vektor panjang 1 sama dengan nilai rata-rata semua nilai dalam matriks input. Ini semacam konvolusi yang merosot jika Anda mau. Jika matriks bobot yang sama lebih pendek dari matriks input, maka Anda mendapatkan moving average dalam output dengan panjang 2 dll.wi=1/n
Anda dapat melakukan hal yang sama untuk tensor 3 dimensi (matriks) dengan cara yang sama: manabikl=∑j1=m1−1j2=m2−1j3=m4−10ai+j1,k+j2,l+j3∗wj1j2j3 i=[1,n1−m1+1],k=[1,n2−m2+1],l=[1,n3−m3+1]
sumber
Konvolusi 1d ini hemat biaya, ia bekerja dengan cara yang sama tetapi menganggap array 1 dimensi yang membuat perkalian dengan elemen-elemen. Jika Anda ingin memvisualisasikan pikirkan matriks baik baris atau kolom yaitu dimensi tunggal ketika kita mengalikan kita mendapatkan array dengan bentuk yang sama tetapi dengan nilai yang lebih rendah atau lebih tinggi, sehingga membantu dalam memaksimalkan atau meminimalkan intensitas nilai.
Gambar ini mungkin membantu Anda,
Untuk perinciannya, https://www.youtube.com/watch?v=qVP574skyuM
sumber
Saya akan menggunakan perspektif Pytorch, namun, logikanya tetap sama.
Saat menggunakan Conv1d (), kita harus ingat bahwa kemungkinan besar kita akan bekerja dengan input 2 dimensi seperti sekuens DNA satu-hot-encode atau gambar hitam putih.
Satu-satunya perbedaan antara Conv2d () dan Conv1d () yang lebih konvensional adalah yang terakhir menggunakan kernel 1-dimensi seperti yang ditunjukkan pada gambar di bawah ini.
Di sini, ketinggian data input Anda menjadi "kedalaman" (atau in_channels), dan baris kami menjadi ukuran kernel. Sebagai contoh,
Kita dapat melihat bahwa kernel secara otomatis membentang ke ketinggian gambar (seperti pada Conv2d () kedalaman kernel secara otomatis menjangkau saluran gambar) dan oleh karena itu yang tersisa untuk kita berikan adalah ukuran kernel sehubungan dengan rentang baris.
Kita hanya harus ingat bahwa jika kita mengasumsikan input 2 dimensi, filter kita menjadi kolom kita dan baris kita menjadi ukuran kernel.
sumber