Учебник Tensorflow здесь относится к их базовой реализации, которую вы можете найти на github здесь, где авторы Tensorflow реализуют обучение/оценку внедрения векторного вложения word2vec с помощью модели Skipgram.
Мой вопрос о фактической генерации (целевых, контекстных) пар в функции generate_batch()
.
В эта строка Авторы тензорного потока произвольно выбирают соседние целевые индексы из индекса слова "центр" в скользящем окне слов.
Однако они также сохраняют структуру данных targets_to_avoid
, к которой они сначала добавляют "центральное" контекстное слово (что, конечно, мы надеваем 't хочу попробовать), но ТАКЖЕ другие слова после их добавления.
Мои вопросы таковы:
- Почему выборка из этого скользящего окна вокруг слова, почему бы просто не использовать петлю и использовать их все, а не выборку? Кажется странным, что они будут беспокоиться о производительности/памяти в
word2vec_basic.py
(их "базовая" реализация). - Каким бы ни был ответ на вопрос 1), почему они берут выборку и отслеживают, что они выбрали с помощью
targets_to_avoid
? Если бы они хотели по-настоящему случайным образом, они использовали бы выбор с заменой, и если бы они хотели, чтобы у них были все варианты, они должны были просто использовать цикл и получить их все в первую очередь! - Работает ли этот встроенный tf.models.embedding.gen_word2vec? Если да, где я могу найти исходный код? (не удалось найти файл .py в репозитории Github)
Спасибо!