![]() | ![]() | ![]() | ![]() |
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ğlamaya yönelik bir araçtır. Kayıp ve doğruluk gibi deney ölçümlerinin izlenmesine, model grafiğinin görselleştirilmesine, yerleştirmelerin daha düşük boyutlu bir alana yansıtılmasına ve çok daha fazlasına olanak tanır.
Bu hızlı başlangıç, TensorBoard'a nasıl hızlı bir şekilde başlayacağınızı gösterecektir. Bu web sitesindeki 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/
Kullanılması MNIST örnek olarak veri kümesi, veri normalleştirmek ve 10 sınıfa görüntüleri sınıflandırmak için basit Keras modelini yaratan bir fonksiyon 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 en ile eğitim yaparken Model.fit () ekleyerek, tf.keras.callbacks.TensorBoard
geri arama olmasını sağlar günlükleri oluşturulur ve depolanmış olmasıdır. Ayrıca, etkinleştirmek Histogram hesaplama her çağ ile histogram_freq=1
(Bu varsayılan olarak kapalıdır)
Farklı eğitim çalıştırmalarının kolayca seçilmesine izin vermek 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ı aracılığıyla veya bir dizüstü bilgisayar deneyimi içinde başlatın. İki arayüz genellikle aynıdır. Defterlerde kullanmak %tensorboard
hat sihirli. Komut satırında aynı komutu "%" olmadan çalıştırın.
%tensorboard --logdir logs/fit
Gösterilen panolara kısa bir genel bakış (üst gezinme çubuğundaki sekmeler):
- Skalerler pano gösterileri nasıl kaybı ve ölçümlerini her çağın ile değiştirin. Antrenman hızını, öğrenme oranını ve diğer skaler değerleri izlemek için de kullanabilirsiniz.
- Grafikler pano modelinizi görselleştirmek 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 panolar zamanla Tensörünün dağılımını göstermektedir. Bu, ağırlıkları ve önyargıları görselleştirmek ve bunların beklenen şekilde değiştiklerini doğrulamak için faydalı 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 yerleştirmeleri de günlüğe kaydetmenize olanak tanır. Sağ üstteki "etkin değil" açılır menüsüne tıklayarak TensorBoard'da başka hangi eklentilerin mevcut olduğunu görebilirsiniz.
TensorBoard'u diğer yöntemlerle kullanma
Gibi yöntemlerle eğitim yaparken tf.GradientTape()
kullanın tf.summary
gerekli bilgileri günlüğe.
Bunu yukarıdaki gibi aynı veri kümesi kullanın, ancak dönüştürmek tf.data.Dataset
yetenekleri harmanlanmasından yararlanmak için:
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 aşağıdaki gelişmiş hızlı başlangıç öğretici, ama gösterileri nasıl TensorBoard metrikleri oturum açmak için. Kaybı ve optimize ediciyi seçin:
loss_object = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()
Eğitim sırasında değerleri toplamak için kullanılabilecek ve herhangi bir noktada günlüğe kaydedilebilecek 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 fonksiyonlarını 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ük dizininde 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. Kullanın tf.summary.scalar()
diske özetleri yazmak için özet yazarlar kapsamında test / eğitim sırasında ölçümleri (zarar ve doğruluk) giriş yapmak için. Hangi metriklerin günlüğe kaydedileceği ve ne sıklıkta yapılacağı üzerinde kontrol sizde. Diğer tf.summary
işlevler diğer veri türlerini giriş etkinleştirin.
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.9500015258789 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 onu yeni günlük dizinine yönlendirin. Eğitimi ilerlerken izlemek için TensorBoard'u da başlatabilirdik.
%tensorboard --logdir logs/gradient_tape
Bu kadar! Artık Keras callback'inde baştan başa hem TensorBoard nasıl kullanılacağını gördük tf.summary
fazla özel senaryolar için.
TensorBoard.dev: Makine öğrenimi deneme sonuçlarınızı barındırın ve paylaşın
TensorBoard.dev Eğer TensorBoard günlükleri yükleyebilir ve daha iyi tekrarlanabilirlik ve işbirliğini etkinleştirebilirsiniz vb Bu akademik yayınlarda herkes, blog yayınları, sosyal medya, paylaşılabilir bir kalıcı bağlantı elde etmek sağlayan ücretsiz kamu hizmetidir.
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ğırma ünlem öneki kullandığı Not ( !
) Kabuk yerine yüzde öneki (çağırmak için %
CoLab sihirli çağırmak için). Bu komutu komut satırından çağırırken her iki ön eke de gerek yoktur.
Bir örnek görüntüle burada .
TensorBoard.dev nasıl kullanılacağı hakkında daha fazla ayrıntı için bkz https://tensorboard.dev/#get-started