КонтекстВ моем случае я пытаюсь настроить предварительно обученный классификатор DistilBert. У меня есть что-то вроде следующего для предварительной обработки данных и загрузки/обучения моей модели:
Код: Выделить всё
from transformers import TFAutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")
model = TFAutoModelForSequenceClassification.from_pretrained(
"distilbert-base-uncased", num_labels=2, id2label=id2label, label2id=label2id
)
# add another layer
tf_train = model.prepare_tf_dataset(question_train_test_split['train'], batch_size=16, shuffle=True, tokenizer=tokenizer)
model.compile(optimizer=tf.keras.optimizers.Adam(2e-5))
# freeze the first transformer layer of model
model.layers[0].trainable=False
print('Model Architecture:')
print(model.summary())
model.fit(tf_train, epochs=3)
Этот фрагмент кода работает отлично, как и ожидалось, он загружается модель HuggingFace как слой tf.keras. Это даже правильно тренируется с помощью метода .fit.
Однако у меня возникают проблемы, когда я хочу выполнить прогнозы. Я понимаю, что мне нужно токенизировать вводимые строки, однако я хотел бы загрузить токенизатор как слой tf.keras. Я везде искал способ сделать это и не смог найти.
В идеале мне бы хотелось что-то вроде этого:
Код: Выделить всё
user_input = 'When were the Beatles formed?'
model_input = tokenizer(user_input) # THIS HF TOKENIZER SHOULD BE A tf.keras LAYER
model = model(model_input)
Подробнее здесь: https://stackoverflow.com/questions/776 ... eras-layer