Предварительная обработка текстового модуля Tensorflow-hub - PullRequest
0 голосов
/ 28 апреля 2018

Я играю с новыми модулями, которые доступны на tenorflow-hub (что мне действительно нравится - спасибо за это).

Что мне неясно, так это предварительная обработка, которая должна выполняться при подаче предложения. Модуль документации говорит, что на этапе предварительной обработки предложения inputj разбиваются на пробелы.

Однако, когда я запускаю следующую программу, я получаю только один вектор:

with tf.device("/cpu:0"):
  embed = hub.Module("https://tfhub.dev/google/nnlm-en-dim128/1")

global_step1 = tf.train.get_or_create_global_step()
with tf.device("/cpu:0"):
  embeddings = embed({"default": ["Cat sat on mat"]})

with tf.train.MonitoredTrainingSession(is_chief=True) as sess:
  message_embeddings_cat = sess.run(embeddings)
  print(message_embeddings_cat.shape) # (result: (1, 128))

Как мне получить вложения для каждого слова и что представляет собой один вектор? фиксированное размерное представление предложения, вложение Unknown-Word или что-то еще?

Заранее спасибо!

Редактировать: Похоже, результатом является комбинированное встраивание, созданное с помощью tf.nn.embedding_lookup_sparse. (Спасибо за подтверждение @svsgoogle)

1 Ответ

0 голосов
/ 30 апреля 2018

Да, выходные данные представляют фиксированное размерное представление всего предложения.

Вы также можете вставлять отдельные слова, чтобы получить их векторы. В вашем случае:

embeddings = embed({"default": ["Cat", "sat", "on", "mat"]})

Должен дать вам результат с формой (4, 128).

...