Google I / O'daki önemli notları, ürün oturumlarını, atölyeleri ve daha fazlasını izleyin Oynatma listesine bakın

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

TensorFlow.org'da görüntüleyin Google Colab'de çalıştırın Kaynağı GitHub'da görüntüleyin Defteri indirin

Bu kısa giriş Keras'ı şu amaçlarla kullanır:

  1. Görüntüleri sınıflandıran bir sinir ağı oluşturun.
  2. Bu sinir ağını eğitin.
  3. Ve son olarak, modelin doğruluğunu değerlendirin.

Bu bir Google Colaboratory not defteri dosyasıdır. Python programları doğrudan tarayıcıda çalıştırılır - TensorFlow'u öğrenmenin ve kullanmanın harika bir yolu. 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'da, bir Python çalışma zamanına bağlanın: Menü çubuğunun sağ üst kısmında BAĞLAN'ı seçin.
  2. Tüm not defteri kod hücrelerini çalıştırın : Çalışma Zamanı > Tümünü çalıştır'ı seçin.

TensorFlow'u indirin ve yükleyin 2. TensorFlow'u programınıza aktarın:

import tensorflow as tf

MNIST veri kümesini yükleyin ve hazırlayın. Örnekleri tam sayı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

Katmanları istifleyerek tf.keras.Sequential modelini oluşturun. Eğitim için bir optimize edici ve kayıp işlevi seçin:

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 " logits " veya " log-olasılık " skorları vektörü döndürür.

predictions = model(x_train[:1]).numpy()
predictions
array([[-0.28274903,  0.19788507, -0.18761218,  0.80738944, -0.25398862,
        -1.2106801 ,  0.08712098,  0.24884817,  0.48026958, -0.63544625]],
      dtype=float32)

tf.nn.softmax işlevi, bu tf.nn.softmax her sınıf için "olasılıklara" dönüştürür:

tf.nn.softmax(predictions).numpy()
array([[0.07085732, 0.11458333, 0.07792953, 0.21077827, 0.07292479,
        0.02801492, 0.10256924, 0.12057421, 0.15197057, 0.04979781]],
      dtype=float32)

losses.SparseCategoricalCrossentropy kaybı, bir losses.SparseCategoricalCrossentropy vektörü ve bir True indeksi alır ve her örnek için bir skaler kayıp döndürür.

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 sıfırdır.

Bu eğitimsiz model rastlantısalya 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()
3.5750182
model.compile(optimizer='adam',
              loss=loss_fn,
              metrics=['accuracy'])

Model.fit yöntemi, kaybı en aza indirmek için model parametrelerini ayarlar:

model.fit(x_train, y_train, epochs=5)
Epoch 1/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.2977 - accuracy: 0.9137
Epoch 2/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1452 - accuracy: 0.9570
Epoch 3/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1076 - accuracy: 0.9678
Epoch 4/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0889 - accuracy: 0.9726
Epoch 5/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0748 - accuracy: 0.9768
<tensorflow.python.keras.callbacks.History at 0x7f225a19bd50>

Model.evaluate yöntemi, genellikle bir " Doğrulama seti " veya " Test seti " üzerinde modellerin performansını kontrol eder.

model.evaluate(x_test,  y_test, verbose=2)
313/313 - 0s - loss: 0.0689 - accuracy: 0.9789
[0.06888990104198456, 0.9789000153541565]

Görüntü sınıflandırıcı artık bu veri kümesinde ~% 98 doğruluk sağlayacak şekilde 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 sarmalayabilir ve softmax'ı ona ekleyebilirsiniz:

probability_model = tf.keras.Sequential([
  model,
  tf.keras.layers.Softmax()
])
probability_model(x_test[:5])
<tf.Tensor: shape=(5, 10), dtype=float32, numpy=
array([[2.43536853e-08, 1.08228884e-08, 1.46659058e-05, 5.78407780e-05,
        8.13185741e-10, 6.07215895e-08, 6.86163691e-13, 9.99923468e-01,
        1.81361770e-07, 3.63814161e-06],
       [2.11941131e-08, 2.25070340e-04, 9.99771059e-01, 2.34302320e-06,
        1.63162157e-15, 1.15485079e-06, 4.05790495e-08, 2.32719280e-13,
        2.09360394e-07, 6.63546553e-16],
       [2.59596527e-06, 9.97948945e-01, 3.17365309e-04, 5.70174197e-05,
        8.70571748e-05, 2.26207321e-05, 3.95762872e-05, 9.33116884e-04,
        5.88586845e-04, 3.19504102e-06],
       [9.99955654e-01, 6.80772883e-10, 7.27830366e-06, 2.95480021e-07,
        6.11184191e-07, 2.61078094e-06, 1.12577636e-05, 2.41163207e-06,
        2.85984409e-08, 1.97346217e-05],
       [2.22849872e-06, 1.46003485e-08, 9.01399653e-06, 5.15082604e-07,
        9.79021668e-01, 4.24415521e-06, 8.85033751e-06, 2.83118443e-05,
        1.67569033e-06, 2.09236071e-02]], dtype=float32)>