Convolutional Neural Network (CNN) ialah model pembelajaran mendalam yang digunakan secara meluas dalam tugas penglihatan komputer. Berbanding dengan rangkaian saraf yang disambungkan sepenuhnya, CNN mempunyai lebih sedikit parameter dan keupayaan pengekstrakan ciri yang lebih berkuasa, dan berfungsi dengan baik dalam tugas seperti pengelasan imej, pengesanan sasaran dan pembahagian imej. Di bawah ini kami akan memperkenalkan cara membina model CNN asas.
Convolutional Neural Network (CNN) ialah model pembelajaran mendalam dengan berbilang lapisan konvolusi, lapisan gabungan, fungsi pengaktifan dan lapisan bersambung sepenuhnya. Lapisan konvolusi ialah komponen teras CNN dan digunakan untuk mengekstrak ciri imej input. Lapisan pengumpulan boleh mengurangkan saiz peta ciri dan mengekalkan ciri utama imej. Fungsi pengaktifan memperkenalkan transformasi tak linear untuk meningkatkan keupayaan ekspresif model. Lapisan yang disambungkan sepenuhnya menukar peta ciri kepada hasil keluaran. Dengan menggabungkan komponen ini, kita boleh membina rangkaian saraf konvolusi asas. CNN berfungsi dengan baik dalam tugas seperti klasifikasi imej, pengesanan sasaran, dan penjanaan imej, dan digunakan secara meluas dalam bidang penglihatan komputer.
Kedua, untuk struktur CNN, parameter setiap lapisan lilitan dan lapisan penyatuan perlu ditentukan. Parameter ini termasuk saiz isirong lilitan, bilangan isirung lilitan, dan saiz inti lilitan. Pada masa yang sama, ia juga perlu untuk menentukan dimensi data input dan dimensi data output. Pemilihan parameter ini biasanya perlu ditentukan secara eksperimen. Pendekatan biasa ialah membina model CNN yang mudah dahulu dan kemudian melaraskan parameter secara beransur-ansur sehingga prestasi optimum dicapai.
Apabila melatih model CNN, kita perlu menetapkan fungsi kehilangan dan pengoptimuman. Lazimnya, fungsi kehilangan entropi silang digunakan secara meluas, manakala pengoptimum turunan kecerunan stokastik juga merupakan pilihan biasa. Semasa proses latihan, kami memasukkan data latihan ke dalam model CNN secara berkelompok dan mengira nilai kerugian berdasarkan fungsi kerugian. Kemudian, gunakan pengoptimum untuk mengemas kini parameter model untuk mengurangkan nilai kerugian. Lazimnya, berbilang lelaran diperlukan untuk melengkapkan latihan, dengan setiap lelaran menggabungkan data latihan ke dalam model sehingga bilangan tempoh latihan yang telah ditetapkan dicapai atau kriteria prestasi tertentu dipenuhi.
Berikut ialah contoh kod untuk membina rangkaian neural convolutional asas (CNN) menggunakan PyTorch:
import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) # 3个输入通道,6个输出通道,5x5的卷积核 self.pool = nn.MaxPool2d(2, 2) # 2x2的最大池化层 self.conv2 = nn.Conv2d(6, 16, 5) # 6个输入通道,16个输出通道,5x5的卷积核 self.fc1 = nn.Linear(16 * 5 * 5, 120) # 全连接层1,输入大小为16x5x5,输出大小为120 self.fc2 = nn.Linear(120, 84) # 全连接层2,输入大小为120,输出大小为84 self.fc3 = nn.Linear(84, 10) # 全连接层3,输入大小为84,输出大小为10(10个类别) def forward(self, x): x = self.pool(torch.relu(self.conv1(x))) # 第一层卷积+激活函数+池化 x = self.pool(torch.relu(self.conv2(x))) # 第二层卷积+激活函数+池化 x = x.view(-1, 16 * 5 * 5) # 将特征图展开成一维向量 x = torch.relu(self.fc1(x)) # 第一层全连接+激活函数 x = torch.relu(self.fc2(x)) # 第二层全连接+激活函数 x = self.fc3(x) # 第三层全连接 return x
Kod di atas mentakrifkan kelas bernama Net, yang mewarisi daripada nn.Module. Kelas ini mengandungi lapisan konvolusi, lapisan pengumpulan dan lapisan bersambung sepenuhnya, serta kaedah ke hadapan, yang digunakan untuk menentukan proses perambatan ke hadapan model. Dalam kaedah __init__, kami mentakrifkan dua lapisan konvolusi, tiga lapisan bersambung sepenuhnya dan lapisan gabungan. Dalam kaedah ke hadapan, kami memanggil lapisan ini dalam turutan dan menggunakan fungsi pengaktifan ReLU untuk melakukan transformasi tak linear pada output lapisan konvolusi dan lapisan bersambung sepenuhnya. Akhir sekali, kami mengembalikan output lapisan terakhir yang disambungkan sepenuhnya sebagai ramalan model. Untuk menambah, input model CNN ini hendaklah berupa tensor empat dimensi dengan bentuk (saiz_kelompok, saluran, tinggi, lebar). Antaranya, batch_size ialah saiz kumpulan data input, saluran ialah bilangan saluran data input, dan ketinggian dan lebar ialah ketinggian dan lebar data input masing-masing. Dalam contoh ini, data input hendaklah imej warna RGB dengan kiraan saluran 3.
Atas ialah kandungan terperinci Langkah asas untuk membina rangkaian saraf konvolusi menggunakan PyTorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!