Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menggunakan rangkaian saraf untuk klasifikasi dalam Python?
Dalam mengklasifikasikan sejumlah besar data, memproses data ini secara manual adalah tugas yang sangat memakan masa dan sukar. Dalam kes ini, menggunakan rangkaian saraf untuk pengelasan boleh melakukan kerja dengan cepat dan mudah. Python ialah pilihan yang baik kerana ia mempunyai banyak perpustakaan rangkaian saraf yang matang dan mudah digunakan. Artikel ini menerangkan cara menggunakan rangkaian saraf untuk pengelasan dalam Python.
Sebelum menerangkan cara menggunakan rangkaian saraf untuk pengelasan, kita perlu memahami secara ringkas konsep rangkaian saraf. Rangkaian saraf ialah model pengiraan yang berfungsi dengan membina model berdasarkan hubungan antara sejumlah besar data input dan output untuk meramalkan sifat tertentu bagi data yang tidak diketahui. Model ini berprestasi sangat baik pada masalah pengelasan dan boleh digunakan untuk mengklasifikasikan jenis data yang berbeza seperti gambar, e-mel dan suara.
Pengkelasan ialah salah satu aplikasi utama rangkaian saraf. Tujuan masalah klasifikasi adalah untuk mengklasifikasikan data ke dalam kategori yang berbeza. Contohnya, dalam pengecaman imej, rangkaian saraf boleh mengklasifikasikan imej yang berbeza ke dalam kategori yang berbeza seperti kucing, anjing atau kereta. Dalam kes ini, rangkaian saraf mengambil imej sebagai data input dan klasifikasi sebagai data output. Pengelasan ialah proses membahagikan data kepada kategori yang berbeza, biasanya menggunakan kaedah pembelajaran yang diselia.
Terdapat banyak pustaka rangkaian saraf untuk dipilih dalam Python, seperti TensorFlow, Keras, PyTorch, dll. Dalam artikel ini, kami akan menggunakan TensorFlow, perpustakaan kecerdasan buatan sumber terbuka yang dibangunkan oleh pasukan otak Google. TensorFlow ialah rangka kerja yang sangat popular yang mudah dipelajari dan digunakan, dan ia digunakan dalam sejumlah besar projek pembelajaran mesin.
Jika anda belum memasang TensorFlow, anda boleh membuka terminal atau command prompt dan masukkan arahan berikut:
pip install tensorflow
Selepas pemasangan selesai, anda boleh Gunakan perpustakaan TensorFlow.
Penyediaan data ialah langkah utama dalam tugas pengelasan. Data tersebut perlu ditukar kepada format berangka yang boleh difahami oleh rangkaian saraf. Di sini, kami akan memperkenalkan set data MNIST yang sangat popular, yang terdiri daripada imej digital, setiap imej mewakili nombor. Set data MNIST tersedia dalam TensorFlow, anda boleh memuatkan data terus menggunakan arahan berikut:
daripada tensorflow.keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
Arahan ini memuatkan set data MNIST ke dalam pembolehubah x_train dan y_train, yang digunakan untuk melatih rangkaian saraf. Data ujian dimuatkan ke dalam pembolehubah x_test dan y_test dan digunakan untuk menguji rangkaian saraf. x_train dan x_test mengandungi data imej berangka, dan y_train dan y_test mengandungi label imej berangka.
Seterusnya, mari lihat set data untuk mengetahui lebih lanjut:
print('x_train shape:', x_train.shape)
print('y_train shape :' , y_train.shape)
print('x_test.shape:', x_test.shape)
print('y_test.shape:', y_test.shape)
at Dalam output, anda akan melihat maklumat berikut:
x_train shape: (60000, 28, 28)
y_train shape: (60000,)
x_test shape: (10000 , 28, 28)
y_test shape: (10000,)
Ini menunjukkan set data latihan mengandungi 60000 imej digital, setiap imej ialah 28 piksel x 28 piksel. Set data ujian mempunyai 10,000 imej.
Selepas menyediakan data, anda perlu memilih model rangkaian saraf. Kami akan memilih model rangkaian saraf yang sangat mudah yang terdiri daripada dua lapisan bersambung sepenuhnya (Padat). Lapisan bersambung penuh pertama mengandungi 128 neuron, dan lapisan bersambung penuh kedua mengandungi 10 neuron. Kodnya adalah seperti berikut:
dari tensorflow.keras.models import Sequential
dari tensorflow.keras.layers import Dense, Flatten
model = Sequential()
model.add(Flatten(input_shape=(28, 28)))
model.add(Dense(128, activation='relu'))
model.add(Dense (10, activation='softmax'))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['acuracy' ])
Di sini, kami mula-mula mencipta model Sequential dan kemudian menambah lapisan Flatten, yang digunakan untuk meratakan data imej 28x28 ke dalam tatasusunan satu dimensi. Seterusnya, kami menambah lapisan bersambung sepenuhnya dengan 128 neuron dan menggunakan ReLU sebagai fungsi pengaktifan. Akhir sekali, kami menambah satu lagi lapisan bersambung sepenuhnya dengan 10 neuron dan menggunakan fungsi pengaktifan Softmax untuk mendapatkan taburan kebarangkalian bagi setiap nombor. Model ini disusun menggunakan pengoptimum adam dan fungsi kehilangan rentas entropi kategori yang jarang.
Kami telah menyediakan data dan model, kini kami perlu menggunakan data latihan untuk melatih model. Perintah berikut boleh digunakan untuk melatih model:
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
Kod ini akan menggunakan 10 epochs (zaman) untuk melatih model dan menggunakan set ujian untuk pengesahan. Selepas latihan selesai, kita boleh menggunakan kod berikut untuk menilai model:
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)
Dalam output anda akan melihat metrik ketepatan pada set ujian.
Selepas latihan dan menilai model, kita boleh menggunakan model untuk meramal data yang tidak diketahui. Kita boleh menggunakan kod berikut untuk meramalkan label imej:
import numpy sebagai np
indeks_imej = 7777 # Bermula dari 0
img = x_test[image_index]
img = np.expand_dims(img, axis=0)
ramalan = model.predict(img)
print(ramalan)
print(" Label yang diramalkan :", np.argmax(ramalan))
Dalam output, kita dapat melihat bahawa imej itu diramalkan sebagai nombor 2.
Dalam artikel ini, kami memperkenalkan cara menggunakan rangkaian saraf untuk pengelasan dalam Python. Kami menggunakan TensorFlow untuk membina dan melatih model rangkaian saraf, dan set data MNIST untuk ujian dan ramalan. Anda boleh menggunakan model ini untuk pelbagai kategori tugas pengelasan imej dan melaraskan lapisan rangkaian saraf dalam model mengikut keperluan. Pengelasan menggunakan rangkaian saraf ialah kaedah yang sangat berkesan yang boleh mengendalikan sejumlah besar klasifikasi data dengan mudah, membolehkan kami melaksanakan tugas pembangunan dan pengelasan model dengan lebih pantas.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan rangkaian saraf untuk klasifikasi dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!