word2ve c tf 2 ошибка обучения - неверный аргумент - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь построить модель word2ve c с отрицательной выборкой в ​​tenorflow 2.

Моя отправная точка - учебник по тензорному потоку здесь . Я уже преобразовал код из tf1 в 2, используя сценарии преобразования, предоставленные tenorflow.

У меня есть набор данных, который я обработал, и выполняю токенизацию с помощью токерайзера Keras.

Обучение работает до определенного момента, но последовательно на этапе обучения 108K. Я получаю следующую ошибку

    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: indices[122] = 22894 is not in [0, 22894)
         [[node loss/nce_loss/embedding_lookup_1 (defined at c:/Users/EDMISML/pyprojects/abbv2vec/word2vectf-V2.py:146) ]]

Errors may have originated from an input operation.
Input Source operations connected to node loss/nce_loss/embedding_lookup_1:
 biases/Variable (defined at c:/Users/EDMISML/pyprojects/word2vec2vec/word2vectf-V2.py:130)

Примечание в настоящее время:

vocabulary_size = len(tok.word_counts)

, где tok - это Token объект, который был помещен в мой корпус.

Также обратите внимание, что 22894 - это мой размер Vocab. Я пробовал:

      vocabulary_size+=1  # increment vocab size by 1 

      with tf.compat.v1.name_scope('embeddings'):
        embeddings = tf.Variable(
            tf.random.uniform([vocabulary_size, embedding_size], -1.0, 1.0))
        embed = tf.nn.embedding_lookup(params=embeddings, ids=train_inputs)

, но все равно получаю ту же ошибку.

Может кто-нибудь помочь?

...