Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Sinir ağları, yapay zeka ve makine öğrenimi alanlarında önemli bir kavramdır. Katmanlar halinde düzenlenmiş ve insan beyninin nasıl çalıştığını taklit eden birbirine bağlı düğümlerden oluşurlar. Düğümler, insan beyninin nöronlarını temsil eder.

Kendi basit ileri beslemeli, çok sınıflı sınıflandırma sinir ağınızı oluşturabilirsiniz. MNIST veri setini kullanarak el yazısı rakamları sınıflandırmak için eğitin. Daha sonra kendi el yazısı rakamlarınızı sınıflandırmak için bilgisayar görüşünü kullanabilirsiniz.

Çok Sınıflı Sınıflandırma Nedir?

Çok sınıflı sınıflandırma, verileri ikiden fazla kategoride sınıflandırabilen bir makine öğrenimi türüdür. Sinir ağları, olasılığı olası sınıflara dağıtmak için softmax sınıflandırıcısını kullanır.

MNIST veri kümesindeki el yazısı görüntüleri 10 kategoride sınıflandırmak için çok sınıflı sınıflandırmayı kullanabilirsiniz. Bu kategoriler 0 ile 9 arasındaki rakamlara karşılık gelir.

instagram viewer

MNIST Veri Kümesini Anlamak

MNIST veri seti, makine öğrenimi ve bilgisayarla görme algoritmaları için popüler bir kıyaslama veri setidir. 28 x 28 piksel boyutunda 70.000 gri tonlamalı el yazısı resim içerir. El yazısı rakamlar 0 ila 9 aralığındadır.

Herhangi bir makine öğrenimi modeli oluşturmadan önce, veri kümenizin neleri içerdiğini anlamak önemlidir. Veri kümesini anlamak, daha iyi veri ön işlemesi gerçekleştirmenizi sağlayacaktır.

Ortamınızı Hazırlamak

Bu öğreticiyi takip etmek için, aşağıdakilere aşina olmalısınız: Python'un temelleri. Ayrıca bir temel makine öğrenimi bilgisi. Son olarak, Jupyter Notebook veya Google Colab'ı rahatça kullanabilirsiniz.

Tam kaynak kodu bir GitHub deposu.

Yeni bir Jupyter Not Defteri oluşturun veya oturum açın Google İşbirliği. Gerekli paketleri yüklemek için bu komutu çalıştırın:

!pip kurulum numpy matplotlib tensorflow opencv-python

Kullanacaksınız:

  • Veri görselleştirme için Matplotlib.
  • Dizileri işlemek için NumPy.
  • Modelinizi oluşturmak ve eğitmek için TensorFlow.
  • Modeli kendi el yazısı rakamlarınızla beslemek için OpenCV.

Gerekli Modülleri İçe Aktarma

Ortamınıza kurduğunuz paketleri içe aktarın. Bu, daha sonra işlevlerini ve modüllerini kodunuzda aramanıza ve kullanmanıza izin verecektir.

içe aktarmak tensör akışı gibi tf
itibaren tensör akışı içe aktarmak keralar
içe aktarmak matplotlib.pyplot gibi pl
%matplotlib satır içi
içe aktarmak dizi gibi np
içe aktarmak CV2

İkinci kod satırı, Keras modülünü Google TensorFlow kitaplığı. Arka uç olarak TensorFlow ile derin sinir ağınızı eğitmek için Keras'ı kullanacaksınız.

Veri Kümesini Yükleme ve Görüntüleme

MNIST veri kümesi Keras'ta yerleşiktir. MNIST veri setini yükleyin ve onu eğitim ve test setlerine ayırın. Modelinizi eğitmek için eğitim setini ve yeni görünmeyen görüntüleri sınıflandırmada modelinizin doğruluğunu değerlendirmek için test setini kullanacaksınız.

(X_train, y_train), (X_testi, y_testi) = keras.datasets.mnist.load_data()

Eğitim ve test setlerinin uzunluğunu kontrol edin. MNIST veri setinde eğitim için 60.000 görüntü ve test için 10.000 görüntü vardır.

len (X_train)
len (X_testi)

28 x 28 piksel olması gereken MNIST veri kümesindeki ilk görüntünün şeklini kontrol edin. Ardından piksel değerlerini yazdırın ve Matplotlib kullanarak görselleştirin.

X_tren[0].şekil
X_tren[0]
plt.matshow (X_train[0])
y_tren[0]

Görselleştirme çıktısı aşağıdaki gibidir:

Görselleştirilmiş görüntü, veri kümesindeki ilk görüntünün beş sayısını içerdiğini gösterir.

Veri Ön İşleme

Modelinizi eğitmek ve test etmek için veri kümesindeki verileri kullanmadan önce, onu önceden işlemeniz gerekir. Ön işleme, verileri standartlaştırarak bir modelin doğruluğunu artırır.

Piksel Değerlerini Normalleştirme

Veri kümesindeki görüntülerin piksel değerlerini her değeri 255'e bölerek normalleştirin. Normalleştirilmemiş veri kümesinin piksel değerleri 0 ile 255 arasındadır ve sıfır siyah ve 255 beyazdır. Her piksel değerinin 255'e bölünmesi, her pikselin 0 ile 1 arasında olmasını sağlar. Bu, modelin verilerdeki ilgili özellikleri ve kalıpları öğrenmesini kolaylaştırır.

X_train = X_train / 255
X_testi = X_testi / 255

Ardından, ilk görüntünün piksel değerlerini yazdırın.

X_tren[0]

Şimdi 0 ile 1 arasında olduklarına dikkat edin.

Görüntü Matrislerini 1B Diziye Dönüştürme

Sinir ağının giriş katmanı genellikle 1 boyutlu girişler bekler, bu nedenle görüntünün piksel değerlerinin 1 boyutlu bir dizisini oluşturun. Bunu yapmak için, ham sayısı veri kümesindeki görüntü sayısına ayarlanmış olarak reshape() işlevini kullanın.

X_train_flattened = X_train.reshape (len (X_train), 28 * 28)
X_test_flattened = X_test.reshape (len (X_test), 28 * 28)
X_train_flattened.shape
X_train_flattened[0]

Resimleriniz artık modeli eğitmek ve test etmek için hazır.

Derin Sinir Ağı Modeli Oluşturma

Bir giriş katmanı, iki gizli katman ve bir çıkış katmanı kullanarak Tensorflow'un Keras modülüyle sıralı bir model oluşturun. Veri kümesindeki orijinal görüntülerin şekli olduğundan, giriş şeklini 28'e 28 olarak ayarlayın. Gizli katmanlar için 128 düğüm kullanın. Yalnızca 0 ile 9 arasındaki rakamları sınıflandırdığınız için çıktı katmanında yalnızca 10 nöron bulunmalıdır.

model = keras. Ardışık([
keras.layers. Düzleştir (input_shape=(28, 28)),

keras.layers. Yoğun(128, aktivasyon='relu'),
keras.layers. Yoğun(128, aktivasyon='relu'),

keras.layers. Yoğun(10, aktivasyon='softmax')
])

kullanarak modeli derleyin. adam optimize edici, sparse_categorical_crossentropy kayıp fonksiyonu olarak ve modelin performansını değerlendirmek için metrik olarak kesinlik. Ardından, eğitim verilerini modele sığdırın ve dönem sayısını beş olarak ayarlayın.

model.compile (iyileştirici='adam',
kayıp="sparse_categorical_crossentropy",
metrikler=['kesinlik'])

model.fit (X_train, y_train, çağlar=5)

Modelin eğitilmesi birkaç dakika sürecektir. Model eğitimi bittikten sonra performansını test setinde değerlendirin.

model.evaluate (X_testi, y_testi)

Değerlendirme işlevi, modelin kaybını ve doğruluğunu döndürür. Model, %98'lik bir doğruluk üretir.

Kendi El Yazısı Rakamlarınızı Sınıflandırmak İçin Modeli Kullanma

Kendi el yazısı rakamlarınızı sınıflandırmak için, resimlerinizi MNIST veri kümesindekilerle eşleşecek şekilde hazırlamanız gerekir. Bunu yapmamak, modelinizin düşük performans göstermesine yol açacaktır.

Görüntüleri önceden işlemek için:

  1. Rakamı içeren görüntüyü OpenCV kullanarak yükleyin.
  2. Gri tonlamaya dönüştürün ve 28 x 28 piksel olarak yeniden boyutlandırın.
  3. Piksel değerlerini çevirin ve normalleştirin.
  4. Son olarak, görüntüyü bir 1D dizisine düzleştirin.

Önceden işlenmiş görüntüyü tahmin için modele geçirin ve tahmin edilen değeri ekrana yazdırın.

img = cv2.imread("rakamlar/digit1.png", cv2.IMREAD_GRAYSCALE)
img_resize = cv2.resize (img, (28, 28))
img_flip = cv2.bitwise_not (img_resize)
img_normalized = img_flip.astype("şamandıra32") / 255.0

# Görüntüyü 1B diziye düzleştirin
input_data = img_normalized.flatten().reshape( 1,28,28)

# Modeli kullanarak bir tahminde bulunun
tahmin = model.predict (input_data)
Yazdır (tahmin: {np.argmax (tahmin)}')

Bir sayı içeren önceden işlenmiş bir görüntünün modele iletilmesi.

Modelin çıktısı aşağıdaki gibidir:

Model, yedi basamağını doğru bir şekilde sınıflandırabildi.

Chatbot'lardaki Sinir Ağları

Sinir ağlarının kullanımı son birkaç yılda patladı. Ağırlıklı olarak dil çevirisi ve üretici yapay zeka için doğal dil işlemede kullanılmıştır.

Daha yakın zamanlarda, insan benzeri bir şekilde iletişim kurabilen sohbet robotlarının sayısında bir artış oldu. Transformatör sinir ağı olarak bilinen bir tür sinir ağı kullanırlar. Bazılarıyla etkileşime geçin ve sinir ağlarının gücünü deneyimleyin.