TensorFlow.org'da görüntüleyin | Google Colab'da çalıştırın | Kaynağı GitHub'da görüntüleyin | Not defterini indir |
Bu kısa tanıtım, Keras'ı şu amaçlarla kullanır:
- Önceden oluşturulmuş bir veri kümesi yükleyin.
- Görüntüleri sınıflandıran bir sinir ağı makine öğrenimi modeli oluşturun.
- Bu sinir ağını eğitin.
- Modelin doğruluğunu değerlendirin.
Bu eğitici bir Google İşbirliği not defteridir. Python programları doğrudan tarayıcıda çalıştırılır; bu, TensorFlow'u öğrenmenin ve kullanmanın harika bir yoludur. Bu öğreticiyi takip etmek için, bu sayfanın üst kısmındaki düğmeyi tıklayarak not defterini Google Colab'da çalıştırın.
- Colab'de bir Python çalışma zamanına bağlanın: Menü çubuğunun sağ üst köşesinde BAĞLAN öğesini seçin.
- Tüm not defteri kod hücrelerini çalıştırın: Runtime > Run all öğesini seçin.
TensorFlow'u kurun
Başlamak için TensorFlow'u programınıza aktarın:
import tensorflow as tf
print("TensorFlow version:", tf.__version__)
tutucu1 l10n-yerTensorFlow version: 2.8.0-rc1
Colab yerine kendi geliştirme ortamınızda takip ediyorsanız, geliştirme için TensorFlow kurulumuna yönelik kurulum kılavuzuna bakın.
Bir veri kümesi yükleyin
MNIST veri setini yükleyin ve hazırlayın. Örnek verileri tamsayılardan kayan noktalı sayılara dönüştürün:
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
Bir makine öğrenimi modeli oluşturun
Katmanları istifleyerek bir tf.keras.Sequential
modeli oluşturun.
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
Her örnek için model, her sınıf için bir tane olmak üzere bir logit vektörü veya log- ord skorları döndürür.
predictions = model(x_train[:1]).numpy()
predictions
tutucu5 l10n-yerarray([[ 0.2760778 , -0.39324787, -0.17098302, 1.2016621 , -0.03416392, 0.5461229 , -0.7203061 , -0.41886678, -0.59480035, -0.7580608 ]], dtype=float32)
tf.nn.softmax
işlevi, bu logitleri her sınıf için olasılıklara dönüştürür:
tf.nn.softmax(predictions).numpy()
tutucu7 l10n-yerarray([[0.11960829, 0.06124588, 0.0764901 , 0.30181262, 0.08770514, 0.15668967, 0.04416083, 0.05969675, 0.05006609, 0.04252464]], dtype=float32)
Bir logit vektörü ve bir True
indeksi alan ve her örnek için bir skaler kayıp döndüren losses.SparseCategoricalCrossentropy
kullanarak eğitim için bir kayıp işlevi tanımlayın.
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
Bu kayıp, gerçek sınıfın negatif log olasılığına eşittir: Model doğru sınıftan eminse kayıp sıfırdır.
Bu eğitimsiz model rastgeleye yakın olasılıklar verir (her sınıf için 1/10), bu nedenle ilk kayıp -tf.math.log(1/10) ~= 2.3
yakın olmalıdır.
loss_fn(y_train[:1], predictions).numpy()
tutucu10 l10n-yer1.8534881
Eğitime başlamadan önce modeli Model.compile
kullanarak yapılandırın ve derleyin. optimizer
sınıfını adam
olarak ayarlayın, daha önce tanımladığınız loss_fn
işlevine loss
ayarlayın ve metrics
parametresini accuracy
olarak ayarlayarak model için değerlendirilecek bir metrik belirtin.
model.compile(optimizer='adam',
loss=loss_fn,
metrics=['accuracy'])
Modelinizi eğitin ve değerlendirin
Model parametrelerinizi ayarlamak ve kaybı en aza indirmek için Model.fit
yöntemini kullanın:
model.fit(x_train, y_train, epochs=5)
tutucu13 l10n-yerEpoch 1/5 1875/1875 [==============================] - 4s 2ms/step - loss: 0.2950 - accuracy: 0.9143 Epoch 2/5 1875/1875 [==============================] - 3s 2ms/step - loss: 0.1451 - accuracy: 0.9567 Epoch 3/5 1875/1875 [==============================] - 4s 2ms/step - loss: 0.1080 - accuracy: 0.9668 Epoch 4/5 1875/1875 [==============================] - 4s 2ms/step - loss: 0.0906 - accuracy: 0.9717 Epoch 5/5 1875/1875 [==============================] - 4s 2ms/step - loss: 0.0749 - accuracy: 0.9761 <keras.callbacks.History at 0x7f062c606850>
Model.evaluate
yöntemi, genellikle bir " Doğrulama kümesi " veya " Test kümesi " üzerinde modellerin performansını kontrol eder.
model.evaluate(x_test, y_test, verbose=2)
tutucu15 l10n-yer313/313 - 1s - loss: 0.0783 - accuracy: 0.9755 - 588ms/epoch - 2ms/step [0.07825208455324173, 0.9754999876022339]
Görüntü sınıflandırıcı artık bu veri kümesinde ~%98 doğruluk için eğitilmiştir. Daha fazla bilgi edinmek için TensorFlow eğitimlerini okuyun.
Modelinizin bir olasılık döndürmesini istiyorsanız, eğitilmiş modeli sarabilir ve softmax'ı buna ekleyebilirsiniz:
probability_model = tf.keras.Sequential([
model,
tf.keras.layers.Softmax()
])
probability_model(x_test[:5])
-yer tutucu18 l10n-yer<tf.Tensor: shape=(5, 10), dtype=float32, numpy= array([[2.72807270e-08, 2.42517650e-08, 7.75602894e-06, 1.28684027e-04, 7.66215633e-11, 3.54162950e-07, 3.04894151e-14, 9.99857187e-01, 2.32766553e-08, 5.97762892e-06], [7.37396704e-08, 4.73638036e-04, 9.99523997e-01, 7.20633352e-07, 4.54133671e-17, 1.42298268e-06, 5.96959016e-09, 1.23534145e-13, 7.77225608e-08, 6.98619169e-16], [1.95462448e-07, 9.99295831e-01, 1.02249986e-04, 1.86699708e-05, 5.65737491e-06, 1.12115902e-06, 5.32719559e-06, 5.22767776e-04, 4.79981136e-05, 1.76624681e-07], [9.99649286e-01, 1.80224735e-09, 3.73612856e-05, 1.52324446e-07, 1.30824594e-06, 2.82781020e-05, 6.99703523e-05, 3.30940424e-07, 2.13184350e-07, 2.13106396e-04], [1.53770895e-06, 1.72272063e-08, 1.98980865e-06, 3.97882580e-08, 9.97192323e-01, 1.10544443e-05, 1.54713348e-06, 2.81727880e-05, 3.48721733e-06, 2.75991508e-03]], dtype=float32)>
Çözüm
Tebrikler! Keras API'sini kullanarak önceden oluşturulmuş bir veri kümesini kullanarak bir makine öğrenimi modeli eğittiniz.
Keras kullanımına ilişkin daha fazla örnek için öğreticilere bakın. Keras ile model oluşturma hakkında daha fazla bilgi edinmek için kılavuzları okuyun. Veri yükleme ve hazırlama hakkında daha fazla bilgi edinmek istiyorsanız, resim verilerinin yüklenmesi veya CSV verilerinin yüklenmesiyle ilgili eğitimlere bakın.