Использование pytorch-transformers GPT-2 Huggingface для задач классификации

Я хочу использовать GPT-2 для создания модели текстового классификатора. Я не совсем уверен, какую голову мне добавить после того, как я извлек функции через GPT-2. например, у меня есть последовательность.

import pytorch_transformers as pt 
import torch
text=test.iloc[1,1]
text
'If a fire wanted fanning, it could readily be fanned with a newspaper, and as the government grew weaker, I have no doubt that leather and iron acquired durability in proportion, for, in a very short time, there was not a pair of bellows in all Rotterdam that ever stood in need of a stitch or required the assistance of a hammer.'
len(text)

74
tokenizer = pt.GPT2Tokenizer.from_pretrained('gpt2')
model = pt.GPT2Model.from_pretrained('gpt2')
zz = tokenizer.tokenize(text)
z1=torch.tensor([tokenizer.convert_tokens_to_ids(zz)])
z1
tensor([[ 1532,   257,  2046,  2227,  4336,   768,    11,   340,   714, 14704,
           307,   277,  3577,   351,   257,  7533,    11,   290,   355,   262,
          1230,  6348, 17642,    11,   314,   423,   645,  4719,   326, 11620,
           290,  6953,  9477, 26578,   287,  9823,    11,   329,    11,   287,
           257,   845,  1790,   640,    11,   612,   373,   407,   257,  5166,
           286,  8966,  1666,   287,   477, 18481,   353, 11043,   326,  1683,
          6204,   287,   761,   286,   257, 24695,   393,  2672,   262,  6829,
           286,   257, 15554,    13]])
output,hidden=model(z1)
ouput.shape
torch.Size([1, 74, 768])

вывод GPT2 для меня n x m x 768, где n - размер пакета, m - количество токенов в последовательности (например, я могу дополнить/обрезать до 128), поэтому я не могу делать то, что указано в документе для задача классификации просто добавляет полностью связанный слой в хвост. И я искал в Google, упоминается несколько задач классификации GPT-2. Я не уверен, что правильно. Должен ли я выполнять flatten/max pooling/average pooling перед полносвязным слоем или что-то еще?

Пробовал средний пул, результат неплохой. Logloss при проверке немного меньше, чем у модели BERT, но я не уверен, что поступаю правильно.

Tommy Yu 29.07.2019 08:37

Вы когда-нибудь разбирались с этой проблемой? Вы все еще делаете средний пул?

stackoverflowuser2010 20.09.2020 07:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
713
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

«Поэтому я не могу сделать то, что, как сказано в документе, для задачи классификации, просто добавить полностью связанный слой в хвост». - Это ответ на ваш вопрос.

Обычно трансформеры, такие как BERT и Roberta, обладают двунаправленным вниманием к себе, и у них есть токен [CLS], с помощью которого мы подаем данные классификатору. Поскольку GPT-2 лево-правый, вам нужно передать последний токен последовательности встраивания.

P.S. Можно ссылку на статью.

Если вы построили модель с использованием GPT-2 для классификации текста, поделитесь ею.

Добро пожаловать в СО! Пожалуйста, не оставляйте комментарии в качестве ответов. Вы можете написать свой запрос в разделе комментариев.

n0nvme 01.12.2020 21:13

Другие вопросы по теме