Я пытаюсь построить модель 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)
, но все равно получаю ту же ошибку.
Может кто-нибудь помочь?