вот это код:
Код: Выделить всё
import tensorflow as tf
import tensorflow_models as tfm
# Define model parameters
vocab_size = 56 # Vocabulary size
max_length = 23 # Maximum length of the sequence
embedding_dim = 12 # Embedding dimension
num_attention_heads = 4 # Number of attention heads
hidden_size = 512
head_size=4
initializer='glorot_uniform' # Hidden size
inner_size = 2048 # Internal feed-forward network size
dropout_rate = 0.2 # Dropout rate
attention_dropout_rate = 0.1 # attention dropout rate
num_layers=23
# Create the model
inputs = tf.keras.Input(shape=(max_length,))
x=tf.keras.layers.Embedding(vocab_size, embedding_dim)(inputs)
# Add the TransformerXL block
transformer_block = tfm.nlp.layers.TransformerXL(
vocab_size,
layer_number,
occulto_size,
number_heads_attention,
head_size,
inside_size,
dropout_rate,
attention_dropout_rate,
initializer,
two_stream=False,
tie_attention_biases=False,
memory_length=23,
reuse_length=23,
inner_activation='relu'
)
# Instead of converting 'x' to a TensorFlow Tensor directly,
# pass it as is to the TransformerXL layer.
# The layer will handle the necessary conversions internally.
# Pass the relative position encoding to TransformerXL
x = transformer_block(x)
# Add an output layer
outputs = tf.keras.layers.Dense(vocab_size, activation='softmax')(x)
# Define the final model
model = tf.keras.Model(inputs=inputs, outputs=outputs)
# Compile the model
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Model summary
model.summary()
Трассировка ошибок типа ( последний вызов последний).
in ()
41
42 # Передаем кодировку относительного положения в TransformerXL.
---> 43 x = Transformer_block(x )
44
45
1 кадр
/usr/local/lib/python3.10/dist-packages/tf_keras/src/utils/traceback_utils.py в error_handler(*args, **kwargs)
94 bound_signature = Нет
95 попробуйте:
---> 96 return fn(*args, **kwargs).
97, за исключением исключения как e:
98, если hasattr(e, «_keras_call_info_injected»):
TypeError: TransformerXL.call() отсутствует 1 обязательный позиционный аргумент: 'relative_position_encoding' .
Попытка передать другой аргумент (Imput, внедрение) приводит к ошибке: ValueError: KerasTensor нельзя использовать в качестве входных данных для Функция TensorFlow. KerasTensor — это символический заполнитель для формы и dtype, используемый при построении функциональных моделей Keras или функций Keras. Его можно использовать только в качестве входных данных для слоя Keras или операции Keras (из пространств имен keras.layers и keras.operations).
Я не знаю. не знаю, почему это происходит.
Подробнее здесь: https://stackoverflow.com/questions/792 ... w-function
Мобильная версия