Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

TensorBoard ile başlayın

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

Makine öğreniminde, bir şeyi geliştirmek için genellikle onu ölçebilmeniz gerekir. TensorBoard, makine öğrenimi iş akışı sırasında ihtiyaç duyulan ölçümleri ve görselleştirmeleri sağlayan bir araçtır. Kayıp ve doğruluk gibi deney ölçümlerinin izlenmesini, model grafiğinin görselleştirilmesini, düğünlerin daha düşük boyutlu bir alana yansıtılmasını ve çok daha fazlasını sağlar.

Bu hızlı başlangıç, TensorBoard'a nasıl hızlı bir şekilde başlayacağınızı gösterecektir. Bu web sitesinde kalan kılavuzlar, çoğu burada yer almayan belirli yetenekler hakkında daha fazla ayrıntı sağlar.

# Load the TensorBoard notebook extension
%load_ext tensorboard
import tensorflow as tf
import datetime
# Clear any logs from previous runs
rm -rf ./logs/

MNIST veri kümesini örnek olarak kullanarak, verileri normalleştirin ve görüntüleri 10 sınıfa ayırmak için basit bir Keras modeli oluşturan bir işlev yazı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

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step

TensorBoard'u Keras Model.fit () ile kullanma

Keras'ın Model.fit () ile eğitim alırken , tf.keras.callbacks.TensorBoard geri tf.keras.callbacks.TensorBoard eklemek, günlüklerin oluşturulmasını ve depolanmasını sağlar. Ek olarak, histogram_freq=1 ile her dönemde histogram hesaplamasını etkinleştirin (bu, varsayılan olarak kapalıdır)

Farklı eğitim çalışmalarının kolayca seçilebilmesi için günlükleri zaman damgalı bir alt dizine yerleştirin.

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 15s 246us/sample - loss: 0.2217 - accuracy: 0.9343 - val_loss: 0.1019 - val_accuracy: 0.9685
Epoch 2/5
60000/60000 [==============================] - 14s 229us/sample - loss: 0.0975 - accuracy: 0.9698 - val_loss: 0.0787 - val_accuracy: 0.9758
Epoch 3/5
60000/60000 [==============================] - 14s 231us/sample - loss: 0.0718 - accuracy: 0.9771 - val_loss: 0.0698 - val_accuracy: 0.9781
Epoch 4/5
60000/60000 [==============================] - 14s 227us/sample - loss: 0.0540 - accuracy: 0.9820 - val_loss: 0.0685 - val_accuracy: 0.9795
Epoch 5/5
60000/60000 [==============================] - 14s 228us/sample - loss: 0.0433 - accuracy: 0.9862 - val_loss: 0.0623 - val_accuracy: 0.9823

<tensorflow.python.keras.callbacks.History at 0x7fc8a5ee02e8>

TensorBoard'u komut satırından veya bir dizüstü bilgisayar deneyimi içinden başlatın. İki arayüz genellikle aynıdır. Dizüstü bilgisayarlarda %tensorboard çizgi büyüsünü kullanın. Komut satırında, aynı komutu "%" olmadan çalıştırın.

%tensorboard --logdir logs/fit

Gösterilen gösterge tablolarına kısa bir genel bakış (üst gezinme çubuğundaki sekmeler):

  • Skalarlar panosu, kayıp ve ölçümlerin her çağda nasıl değiştiğini gösterir. Ayrıca eğitim hızını, öğrenme oranını ve diğer skaler değerleri izlemek için de kullanabilirsiniz.
  • Grafikler panosu, modelinizi görselleştirmenize yardımcı olur. Bu durumda, doğru şekilde oluşturulduğundan emin olmanıza yardımcı olabilecek Keras katman grafiği gösterilir.
  • Dağılımlar ve Histogramlar gösterge tabloları bir Tensörün zaman içindeki dağılımını gösterir. Bu, ağırlıkları ve önyargıları görselleştirmek ve beklenen bir şekilde değiştiklerini doğrulamak için yararlı olabilir.

Diğer veri türlerini günlüğe kaydettiğinizde ek TensorBoard eklentileri otomatik olarak etkinleştirilir. Örneğin, Keras TensorBoard geri araması görüntüleri ve düğünleri günlüğe kaydetmenize olanak tanır. Sağ üstteki "etkin değil" açılır menüsünü tıklayarak TensorBoard'da başka hangi eklentilerin bulunduğunu görebilirsiniz.

TensorBoard'u diğer yöntemlerle kullanma

tf.GradientTape() gibi yöntemlerle eğitim tf.summary , gerekli bilgileri günlüğe tf.summary için tf.summary kullanın.

Yukarıdakiyle aynı veri kümesini kullanın, ancak toplu işlem yeteneklerinden yararlanmak içintf.data.Dataset dönüştürün:

train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
test_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test))

train_dataset = train_dataset.shuffle(60000).batch(64)
test_dataset = test_dataset.batch(64)

Eğitim kodu, gelişmiş hızlı başlangıç öğreticisini izler, ancak ölçümlerin TensorBoard'a nasıl kaydedileceğini gösterir. Kayıp ve optimize edici seçin:

loss_object = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()

Eğitim sırasında değerleri toplamak için kullanılabilen ve herhangi bir noktada günlüğe kaydedilebilen durum bilgisi olan metrikler oluşturun:

# Define our metrics
train_loss = tf.keras.metrics.Mean('train_loss', dtype=tf.float32)
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('train_accuracy')
test_loss = tf.keras.metrics.Mean('test_loss', dtype=tf.float32)
test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('test_accuracy')

Eğitim ve test işlevlerini tanımlayın:

def train_step(model, optimizer, x_train, y_train):
  with tf.GradientTape() as tape:
    predictions = model(x_train, training=True)
    loss = loss_object(y_train, predictions)
  grads = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(grads, model.trainable_variables))

  train_loss(loss)
  train_accuracy(y_train, predictions)

def test_step(model, x_test, y_test):
  predictions = model(x_test)
  loss = loss_object(y_test, predictions)

  test_loss(loss)
  test_accuracy(y_test, predictions)

Özetleri farklı bir günlükler dizinindeki diske yazmak için özet yazarları ayarlayın:

current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
train_log_dir = 'logs/gradient_tape/' + current_time + '/train'
test_log_dir = 'logs/gradient_tape/' + current_time + '/test'
train_summary_writer = tf.summary.create_file_writer(train_log_dir)
test_summary_writer = tf.summary.create_file_writer(test_log_dir)

Antrenmana başla. Özetleri diske yazmak için özet yazarları kapsamında eğitim / test sırasında ölçümleri (kayıp ve doğruluk) günlüğe tf.summary.scalar() kullanın. Hangi ölçümlerin günlüğe kaydedileceği ve ne sıklıkta yapılacağı konusunda kontrol sizdedir. Diğer tf.summary işlevleri, diğer veri türlerinin günlüğe kaydedilmesini sağlar.

model = create_model() # reset our model

EPOCHS = 5

for epoch in range(EPOCHS):
  for (x_train, y_train) in train_dataset:
    train_step(model, optimizer, x_train, y_train)
  with train_summary_writer.as_default():
    tf.summary.scalar('loss', train_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', train_accuracy.result(), step=epoch)

  for (x_test, y_test) in test_dataset:
    test_step(model, x_test, y_test)
  with test_summary_writer.as_default():
    tf.summary.scalar('loss', test_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', test_accuracy.result(), step=epoch)

  template = 'Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, Test Accuracy: {}'
  print (template.format(epoch+1,
                         train_loss.result(), 
                         train_accuracy.result()*100,
                         test_loss.result(), 
                         test_accuracy.result()*100))

  # Reset metrics every epoch
  train_loss.reset_states()
  test_loss.reset_states()
  train_accuracy.reset_states()
  test_accuracy.reset_states()
Epoch 1, Loss: 0.24321186542510986, Accuracy: 92.84333801269531, Test Loss: 0.13006582856178284, Test Accuracy: 95.9000015258789
Epoch 2, Loss: 0.10446818172931671, Accuracy: 96.84833526611328, Test Loss: 0.08867532759904861, Test Accuracy: 97.1199951171875
Epoch 3, Loss: 0.07096975296735764, Accuracy: 97.80166625976562, Test Loss: 0.07875105738639832, Test Accuracy: 97.48999786376953
Epoch 4, Loss: 0.05380449816584587, Accuracy: 98.34166717529297, Test Loss: 0.07712937891483307, Test Accuracy: 97.56999969482422
Epoch 5, Loss: 0.041443776339292526, Accuracy: 98.71833038330078, Test Loss: 0.07514958828687668, Test Accuracy: 97.5

TensorBoard'u tekrar açın, bu sefer yeni günlük dizinine işaret edin. TensorBoard'u eğitim ilerlerken izlemek için de başlatabilirdik.

%tensorboard --logdir logs/gradient_tape

Bu kadar! Artık TensorBoard'u hem Keras geri araması hem de daha özel senaryolar için tf.summary aracılığıyla nasıl kullanacağınızı gördünüz.

TensorBoard.dev: Makine öğrenimi deney sonuçlarınızı barındırın ve paylaşın

TensorBoard.dev , TensorBoard günlüklerinizi yüklemenizi ve akademik makaleler, blog gönderileri, sosyal medyada vb. Herkesle paylaşılabilen kalıcı bir bağlantı elde etmenizi sağlayan ücretsiz bir kamu hizmetidir. Bu, daha iyi yeniden üretilebilirlik ve işbirliği sağlayabilir.

TensorBoard.dev'i kullanmak için aşağıdaki komutu çalıştırın:

!tensorboard dev upload \
  --logdir logs/fit \
  --name "(optional) My latest experiment" \
  --description "(optional) Simple comparison of several hyperparameters" \
  --one_shot

Bu çağrının, colab büyüsünü çağırmak için yüzde öneki ( % ) yerine kabuğu çağırmak için ünlem öneki ( ! ) Kullandığını unutmayın. Bu komutu komut satırından çağırırken her iki öneke de gerek yoktur.

Burada bir örnek görüntüleyin.

TensorBoard.dev'in nasıl kullanılacağı hakkında daha fazla ayrıntı için bkz. Https://tensorboard.dev/#get-started