Apa perbedaan antara Conv1D dan Conv2D?

18

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

masukkan deskripsi gambar di sini

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?

Eka
sumber
2
Lihatlah jawaban ini . Semoga ini membantu.
learner101

Jawaban:

4

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: mana

bi=j=m10ai+jwj
i=[1,nm+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

[a:a1a2a3w:1/21/2w:1/21/2]=[b:a1+a22a2+a32]

Anda dapat melakukan hal yang sama untuk tensor 3 dimensi (matriks) dengan cara yang sama: mana

bikl=j1=m11j2=m21j3=m410ai+j1,k+j2,l+j3wj1j2j3
i=[1,n1m1+1],k=[1,n2m2+1],l=[1,n3m3+1]

Aksakal
sumber
3

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, masukkan deskripsi gambar di sini

Untuk perinciannya, https://www.youtube.com/watch?v=qVP574skyuM

Reeves
sumber
1

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.

Contoh Conv1d () ditemukan di /programming/48859378/how-to-give-the-1d-input-to-convolutional-neural-networkcnn-using-keras/52508449

Di sini, ketinggian data input Anda menjadi "kedalaman" (atau in_channels), dan baris kami menjadi ukuran kernel. Sebagai contoh,

import torch
import torch.nn as nn

tensor = torch.randn(1,100,4)
output = nn.Conv1d(in_channels =100,out_channels=1,kernel_size=1,stride=1)(tensor)
#output.shape == [1,1,4]

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.

Erick Platero
sumber
Gambar diambil dari pertanyaan sebelumnya: stackoverflow.com/questions/48859378/…
Erick Platero