این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

تجسم دادهها با استفاده از پروژکتور کدهای جاسازی در TensorBoard

نمایش بر روی TensorFlow.org اجرا در گوگل COLAB مشاهده منبع در گیتهاب

بررسی اجمالی

با استفاده از TensorBoard کدهای جاسازی پروژکتور، شما می گرافیکی می تواند نشان دهنده درونه گیریها ابعادی بالا. این می تواند در تجسم، بررسی، و درک لایه های تعبیه شما مفید باشد.

تصویر از پروژکتور تعبیه

در این آموزش، شما یاد بگیرند که چگونه تجسم این نوع لایه آموزش داده است.

برپایی

برای این آموزش، ما خواهد بود با استفاده از TensorBoard به تجسم یک لایه تعبیه تولید شده برای طبقه بندی داده ها بررسی فیلم.

 try:
  # %tensorflow_version only exists in Colab.
  %tensorflow_version 2.x
except Exception:
  pass

%load_ext tensorboard
 
 import os
import tensorflow as tf
import tensorflow_datasets as tfds
from tensorboard.plugins import projector

 

IMDB داده

ما خواهد شد با استفاده از یک مجموعه داده از 25000 بررسی فیلم از IMDB، برچسب شده با احساسات (/ منفی مثبت). بررسی اند پیش پردازش شده، و هر بررسی به عنوان دنباله ای از شاخص کلمه (اعداد صحیح) کد گذاری. برای راحتی، کلمات با فرکانس کلی در مجموعه داده نمایه، به طوری که برای مثال عدد صحیح "3" به رمز در آمده 3 کلمه شایع ترین در داده ها. این اجازه می دهد تا برای انجام عملیات فیلتر کردن سریع مانند: "تنها بالای 10000 کلمات رایج ترین نظر است، اما از بین بردن 20 کلمات رایج ترین".

به عنوان یک قرارداد، "0" برای یک کلمه خاص را تحمل کند، اما به جای استفاده شده است به رمز هر کلمه ناشناخته است. بعد از آن در آموزش، ما توان از بین بردن این ردیف از تجسم است.

 (train_data, test_data), info = tfds.load(
    "imdb_reviews/subwords8k",
    split=(tfds.Split.TRAIN, tfds.Split.TEST),
    with_info=True,
    as_supervised=True,
)
encoder = info.features["text"].encoder

# shuffle and pad the data.
train_batches = train_data.shuffle(1000).padded_batch(
    10, padded_shapes=((None,), ())
)
test_batches = test_data.shuffle(1000).padded_batch(
    10, padded_shapes=((None,), ())
)
train_batch, train_labels = next(iter(train_batches))

 

لایه Keras کدهای جاسازی

لایه Keras کدهای جاسازی می توان برای قطار یک تعبیه برای هر کلمه در volcabulary خود را. هر کلمه (یا زیر کلمه در این مورد) خواهد شد با یک بردار 16 بعدی (یا جاسازی) خواهد شد که با استفاده از مدل آموزش دیده همراه است.

مشاهده این آموزش برای کسب اطلاعات بیشتر در مورد درونه گیریها کلمه.

 # Create an embedding layer
embedding_dim = 16
embedding = tf.keras.layers.Embedding(encoder.vocab_size, embedding_dim)
# Train this embedding as part of a keras model
model = tf.keras.Sequential(
    [
        embedding, # The embedding layer should be the first layer in a model.
        tf.keras.layers.GlobalAveragePooling1D(),
        tf.keras.layers.Dense(16, activation="relu"),
        tf.keras.layers.Dense(1),
    ]
)

# Compile model
model.compile(
    optimizer="adam",
    loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
    metrics=["accuracy"],
)

# Train model
history = model.fit(
    train_batches, epochs=1, validation_data=test_batches, validation_steps=20
)
 
2500/2500 [==============================] - 13s 5ms/step - loss: 0.5330 - accuracy: 0.6769 - val_loss: 0.4043 - val_accuracy: 0.7800

صرفه جویی در داده برای TensorBoard

TensorBoard خواند تانسورها و ابرداده از پروژه های tensorflow خود را از سیاهههای مربوط در مشخص log_dir دایرکتوری. برای این آموزش، ما با استفاده از /logs/imdb-example/ .

به منظور تجسم این داده ها، ما خواهد شد صرفه جویی در یک پست ایست و بازرسی به آن دایرکتوری، همراه با ابرداده به درک که لایه به تجسم.

 # Set up a logs directory, so Tensorboard knows where to look for files
log_dir='/logs/imdb-example/'
if not os.path.exists(log_dir):
    os.makedirs(log_dir)

# Save Labels separately on a line-by-line manner.
with open(os.path.join(log_dir, 'metadata.tsv'), "w") as f:
  for subwords in encoder.subwords:
    f.write("{}\n".format(subwords))
  # Fill in the rest of the labels with "unknown"
  for unknown in range(1, encoder.vocab_size - len(encoder.subwords)):
    f.write("unknown #{}\n".format(unknown))


# Save the weights we want to analyse as a variable. Note that the first
# value represents any unknown word, which is not in the metadata, so
# we will remove that value.
weights = tf.Variable(model.layers[0].get_weights()[0][1:])
# Create a checkpoint from embedding, the filename and key are
# name of the tensor.
checkpoint = tf.train.Checkpoint(embedding=weights)
checkpoint.save(os.path.join(log_dir, "embedding.ckpt"))

# Set up config
config = projector.ProjectorConfig()
embedding = config.embeddings.add()
# The name of the tensor will be suffixed by `/.ATTRIBUTES/VARIABLE_VALUE`
embedding.tensor_name = "embedding/.ATTRIBUTES/VARIABLE_VALUE"
embedding.metadata_path = 'metadata.tsv'
projector.visualize_embeddings(log_dir, config)
 
 %tensorboard --logdir /logs/imdb-example/
 

تحلیل و بررسی

TensorBoard پروژکتور یک ابزار عالی برای تجزیه و تحلیل داده های خود را و دیدن ارزش تعبیه نسبت به یکدیگر است. داشبورد اجازه می دهد جستجو برای شرایط خاص، و برجسته کلماتی را که در فضای تعبیه این نزدیکی هست. از این مثال ما می توانید ببینید که وس اندرسون و آلفرد هیچکاک هر دو واژه به جای خنثی هستند اما که آنها در زمینه های مختلف اشاره شده است.

هیچکاک است و نزدیک به کلماتی مانند ارتباط nightmare ، که به احتمال زیاد کار خود را مربوط در فیلم های ترسناک. در حالی که اندرسون به کلمه نزدیک تر است heart ، منعکس کننده سبک های دلگرم کننده است.