Yeni başlayanlar için TensorFlow 2 hızlı başlangıç

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:

  1. Önceden oluşturulmuş bir veri kümesi yükleyin.
  2. Görüntüleri sınıflandıran bir sinir ağı makine öğrenimi modeli oluşturun.
  3. Bu sinir ağını eğitin.
  4. 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.

  1. Colab'de bir Python çalışma zamanına bağlanın: Menü çubuğunun sağ üst köşesinde BAĞLAN öğesini seçin.
  2. 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-yer
TensorFlow 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-yer
array([[ 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-yer
array([[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-yer
1.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-yer
Epoch 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-yer
313/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.