Как учебник по тензорному потоку word2vec обновляет вложения?

Этот поток приближается: Для чего нужны веса и смещения в примере с tensorflow word2vec?

Но мне все еще чего-то не хватает в моей интерпретации этого: https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py

Насколько я понимаю, вы скармливаете сети индексы целевых и контекстных слов из своего словаря.

_, loss_val = session.run([optimizer, loss], feed_dict=feed_dict)
average_loss += loss_val

Затем пакетные входные данные просматриваются, чтобы вернуть векторы, которые случайным образом сгенерированы в начале.

    embeddings = tf.Variable(
    tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))
    # Look up embeddings for inputs.
    embed = tf.nn.embedding_lookup(embeddings, train_inputs)

Затем оптимизатор настраивает веса и смещения, чтобы лучше всего предсказать метку, в отличие от случайных альтернатив num_sampled.

 loss = tf.reduce_mean(
  tf.nn.nce_loss(weights=nce_weights,
                 biases=nce_biases,
                 labels=train_labels,
                 inputs=embed,
                 num_sampled=num_sampled,
                 num_classes=vocabulary_size))

  # Construct the SGD optimizer using a learning rate of 1.0.
  optimizer = tf.train.GradientDescentOptimizer(1.0).minimize(loss)

У меня следующие вопросы:

  1. Где обновляется переменная вложений?. Мне кажется, что я мог бы получить окончательный результат, либо пропустив индекс слова через нейронную сеть, либо просто взяв final_embeddings векторов и используя их. Но я не понимаю, где embeddings когда-нибудь меняется от его случайной инициализации.

  2. Если бы мне пришлось нарисовать этот вычислительный график, как бы он выглядел (или еще лучше, как это лучше всего сделать)?

  3. Выполняется ли при этом сразу все пары контекст / цель в пакете? Или по одному?


person drkchu58    schedule 22.06.2017    source источник


Ответы (1)


Вложения: вложения - это переменная. Он обновляется каждый раз, когда вы выполняете обратную передачу (при запуске оптимизатора с потерями)

Grpah: Вы пытались сохранить график и отобразить его в тензорной таблице? Это то, что вы ищете?

Пакетная обработка: по крайней мере в примере, который вы связали, он выполняет пакетную обработку, используя функцию в строке 96. https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py#L96

Пожалуйста, поправьте меня, если я неправильно понял ваш вопрос.

person Harsha Pokkalla    schedule 22.06.2017
comment
Итак, вы предлагаете, чтобы оптимизатор обновил как вложения , так и веса / смещения? - person drkchu58; 22.06.2017