ValueError: исключение возникло при вызове PositionalEmbedding.call()Python

Программы на Python
Anonymous
ValueError: исключение возникло при вызове PositionalEmbedding.call()

Сообщение Anonymous »

Я использую нейронный машинный перевод с помощью Transformer и Keras. https://www.tensorflow.org/text/tutorials/transformer
pt — это токенизированные векторы размера (64, 79). Для следующего класса PositionalEmbedding.call() выдает ошибку.

Код: Выделить всё

class PositionalEmbedding(tf.keras.layers.Layer):
def __init__(self, vocab_size, d_model):
super().__init__()
self.d_model = d_model
self.embedding = tf.keras.layers.Embedding(vocab_size, d_model, mask_zero=True)
self.pos_encoding = positional_encoding(length=2048, depth=d_model)

def compute_mask(self, *args, **kwargs):
return self.embedding.compute_mask(*args, **kwargs)

def call(self, x):
length = tf.shape(x)[1]
x = self.embedding(x)
# This factor sets the relative scale of the embedding and positonal_encoding.
x *= tf.math.sqrt(tf.cast(self.d_model, tf.float32))
x = x + self.pos_encoding[tf.newaxis, :length, :]
return x
Этот вызов вызывает ошибку.

Код: Выделить всё

    embed_pt = PositionalEmbedding(vocab_size=tokenizers.pt.get_vocab_size(), d_model=512)
pt_emb = embed_pt(pt)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
 in ()
2 embed_en = PositionalEmbedding(vocab_size=tokenizers.en.get_vocab_size(), d_model=512)
3
----> 4 pt_emb = embed_pt(pt)
5 en_emb = embed_en(en)

1 frames
 in call(self, x)
11   def call(self, x):
12     length = tf.shape(x)[1]
---> 13     x = self.embedding(x)
14     # This factor sets the relative scale of the embedding and positonal_encoding.
15     x *= tf.math.sqrt(tf.cast(self.d_model, tf.float32))

ValueError: Exception encountered when calling PositionalEmbedding.call().

Invalid dtype:

Arguments received by PositionalEmbedding.call():
• x=tf.Tensor(shape=(64, 70), dtype=int64)
Я пытался изменить тип данных на int32, но это не сработало.


Подробнее здесь: https://stackoverflow.com/questions/784 ... dding-call

Вернуться в «Python»