Rumah > Artikel > pembangunan bahagian belakang > Contoh algoritma rangkaian saraf konvolusi dalam Python
Convolutional Neural Network (CNN) ialah algoritma rangkaian saraf yang digunakan secara meluas dalam pengecaman imej, pengecaman pertuturan, pemprosesan bahasa semula jadi dan bidang lain. Ia menggunakan struktur neuron biologi, memproses struktur spatial dua dimensi data input, dan menggunakan kaedah perkongsian berat dalam lapisan konvolusi dan lapisan pengumpulan, yang mengurangkan bilangan parameter yang perlu dioptimumkan, dengan itu meningkatkan Kebolehan generalisasi dan kecekapan model.
Python ialah bahasa pengaturcaraan yang digunakan secara meluas dalam bidang pengkomputeran saintifik, pembelajaran mesin dan pembelajaran mendalam. Ia mempunyai kelebihan kerana mudah digunakan, sumber terbuka dan percuma serta kaya dengan perpustakaan pihak ketiga digunakan oleh semakin ramai penyelidik dan pilihan jurutera sebagai alat pembangunan. Dalam Python, kita boleh menggunakan pelbagai rangka kerja pembelajaran mendalam untuk melaksanakan algoritma rangkaian saraf konvolusi, termasuk Keras, TensorFlow, PyTorch, dsb.
Di bawah, kami akan menggunakan contoh untuk memperkenalkan cara menggunakan rangka kerja Keras untuk melaksanakan algoritma rangkaian saraf konvolusi dalam Python.
Pengenalan Set Data
Contoh ini menggunakan set data CIFAR-10, yang mengandungi 60,000 imej berwarna 32x32 dalam 10 kategori, dan bilangan imej dalam setiap kategori ialah 6,000. Imej ini dibahagikan kepada set latihan dan set ujian, dengan 50,000 imej dalam set latihan dan 10,000 imej dalam set ujian.
Dalam Python, kita boleh menggunakan fungsi cifar10.load_data yang disediakan oleh perpustakaan Keras untuk memuatkan set data CIFAR-10, seperti yang ditunjukkan di bawah:
from keras.datasets import cifar10 (x_train, y_train), (x_test, y_test) = cifar10.load_data()
di mana x_train dan x_test ialah set latihan dan x_test masing-masing Data imej set ujian, y_train dan y_test ialah label set latihan dan set ujian masing-masing.
Pembinaan model
Model rangkaian saraf konvolusi yang digunakan dalam contoh ini mengandungi berbilang lapisan konvolusi, lapisan gabungan dan lapisan bersambung sepenuhnya. Struktur khusus adalah seperti berikut:
Dalam Python, kita boleh membina model lapisan demi lapisan melalui kelas Sequential yang disediakan oleh perpustakaan Keras, seperti yang ditunjukkan di bawah:
from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential() model.add(Conv2D(filters=32, kernel_size=(3, 3), strides=(1, 1), activation='relu', input_shape=(32, 32, 3))) model.add(Conv2D(filters=64, kernel_size=(3, 3), strides=(1, 1), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Conv2D(filters=128, kernel_size=(3, 3), strides=(1, 1), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Flatten()) model.add(Dense(units=128, activation='relu')) model.add(Dense(units=10, activation='softmax')) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Antaranya, kelas Conv2D mewakili konvolusi lapisan dan kelas MaxPooling2D Mewakili lapisan pengumpulan, kelas Flatten mewakili input multidimensi satu dimensi, dan kelas Padat mewakili lapisan yang bersambung sepenuhnya. Fungsi model.compile digunakan untuk menyusun model dan menentukan algoritma pengoptimuman, fungsi kehilangan, indeks penilaian, dsb.
Latihan dan penilaian model
Selepas model dibina, kita boleh menggunakan data set latihan untuk melatih model. Dalam Python, kita boleh menggunakan fungsi fit untuk melaksanakan latihan model, seperti berikut:
from keras.utils import np_utils y_train = np_utils.to_categorical(y_train, 10) y_test = np_utils.to_categorical(y_test, 10) model.fit(x_train, y_train, epochs=10, batch_size=64, validation_data=(x_test, y_test))
Antaranya, fungsi np_utils.to_categorical digunakan untuk menukar label kepada pengekodan satu-panas. Fungsi muat digunakan untuk melatih model, menyatakan bilangan pusingan latihan, saiz kelompok, data set pengesahan, dsb. Selepas latihan selesai, kita boleh menggunakan fungsi menilai untuk menilai model, seperti yang ditunjukkan di bawah:
loss, accuracy = model.evaluate(x_test, y_test)
Dalam contoh ini, selepas 10 pusingan latihan, ketepatan model pada set ujian ialah 0.7318.
Ringkasan
Artikel ini memperkenalkan contoh penggunaan rangka kerja Keras untuk melaksanakan algoritma rangkaian saraf konvolusi dalam Python. Dengan menggunakan set data CIFAR-10 dan struktur model tertentu, kita boleh belajar cara membina, melatih dan menilai rangkaian saraf konvolusi dalam Python. Selain itu, prestasi model boleh dipertingkatkan lagi dengan melaraskan struktur dan parameter model.
Atas ialah kandungan terperinci Contoh algoritma rangkaian saraf konvolusi dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!