Размер ввода GPT2 со статьями вики - PullRequest
1 голос
/ 29 марта 2020

Я пытаюсь использовать небольшую предварительно обученную модель GPT2 в тексте википедии. Я стараюсь использовать столько текста, сколько могу, в качестве входных данных для модели gpt2. Модель обобщает текст для меня. Как использовать всю статью вики для ввода. Как сейчас, я ограничен чем-то вроде 768 токенов. Типичная статья в вики длиннее. Есть ли хитрость в использовании текстовых пассажей длиннее 768 токенов?

1 Ответ

0 голосов
/ 31 марта 2020

Да, вы можете сделать это.

Но нужно помнить одну вещь: input_shape модели остается неизменным, и поэтому вы должны указать желаемую длину последовательности maximum. дать ввод в модель.

А теперь вернемся к тому, что вы можете сделать -

Если вы измените вход модели, форма ввода последующего слоя также изменяется.

Что вы можете сделать, так это скопировать архитектуру модели вместе с предварительно подготовленными весами и настроить ее в соответствии с желаемой формой ввода. Неважно, используете ли вы PyTorch или любой другой фреймворк. Только input_shape изменяется согласно вашему требованию. PyTorch сохраняет веса моделей в OrderedDict, вы можете загрузить предварительно обученную модель и скопировать веса оттуда.

Пример:

model1 = TheModelClass(*args, **kwargs)
model1.load_state_dict(torch.load(PATH_TO_PRETRAINED_MODEL))
model1.eval()

model2 = TheNewModelClass(*args, **kwargs)

params1 = model1.named_parameters()
params2 = model2.named_parameters()

dict_params2 = dict(params2)

for name1, param1 in params1:
    if name1 in dict_params2:
        dict_params2[name1].data.copy_(param1.data)

Вы можете найти Несколько хороших справочных ссылок на форуме PyTorch здесь:

https://discuss.pytorch.org/t/copying-weights-from-one-net-to-another/1492

https://discuss.pytorch.org/t/copy-weights-only-from-a-networks-parameters/5841

...