Пример кода в документации по быстрому запуску Hugging Face Pytorch-Transformers

Я следую краткому руководству здесь. Проблема в том, что они предоставили код для компьютера с графическим процессором, а я запускаю код на компьютере с Ubuntu на базе процессора. Я прокомментировал строки, которые помещают все в CUDA. Код теперь показывает ошибку, и я не знаю, как ее решить. Вопрос: «Как я могу заставить это работать?»

Я проверил это ответ, и это не то, что я ищу.

Полный код находится здесь

1. Using BertModel to encode inputs in hidden-states:
#Load pre-trained model (weights)
model = BertModel.from_pretrained('bert-base-uncased')

#Set the model in evaluation mode to desactivate the DropOut modules
# This is IMPORTANT to have reproducible results during evaluation!
model.eval()

#***I have commented these 3 lines*** 

# If you have a GPU, put everything on cuda
#tokens_tensor = tokens_tensor.to('cuda')
#segments_tensors = segments_tensors.to('cuda')
#model.to('cuda')

#Rest all is untouched
# *** -----------------***---------------***

# Predict hidden states features for each layer
with torch.no_grad():
    # See the models docstrings for the detail of the inputs
    outputs = model(tokens_tensor, token_type_ids=segments_tensors)
 # PyTorch-Transformers models always output tuples.
 # See the models docstrings for the detail of all the outputs
 # In our case, the first element is the hidden state of the last layer of the Bert model
    encoded_layers = outputs[0]
# We have encoded our input sequence in a FloatTensor of shape (batch size, sequence length, model hidden dimension)
assert tuple(encoded_layers.shape) == (1, len(indexed_tokens), model.config.hidden_size)

Ошибка для 1:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-40-a86e9643e7f3> in <module>
     11 
     12 # We have encoded our input sequence in a FloatTensor of shape (batch size, sequence length, model hidden dimension)
---> 13 assert tuple(encoded_layers).shape == (1, len(indexed_tokens), model.config.hidden_size)

AttributeError: 'tuple' object has no attribute 'shape'

2. Использование BertForMaskedLM для предсказания замаскированного токена:

# Load pre-trained model (weights)
model = BertForMaskedLM.from_pretrained('bert-base-uncased')
model.eval()

#***---------------Commented--------------------------
# If you have a GPU, put everything on cuda
#tokens_tensor = tokens_tensor.to('cuda')
#segments_tensors = segments_tensors.to('cuda')
#model.to('cuda')

#***---------------------------------------------

# Predict all tokens
with torch.no_grad():
    outputs = model(tokens_tensor, token_type_ids=segments_tensors)
    predictions = outputs[0]

# confirm we were able to predict 'henson'
predicted_index = torch.argmax(predictions[0, masked_index]).item()
predicted_token = tokenizer.convert_ids_to_tokens([predicted_index])[0]
assert predicted_token == 'henson'

Ошибка для 2:

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-42-9b965490d278> in <module>
     17 predicted_index = torch.argmax(predictions[0, masked_index]).item()
     18 predicted_token = tokenizer.convert_ids_to_tokens([predicted_index])[0]
---> 19 assert predicted_token == 'henson'

AssertionError:

person AbhisheK    schedule 11.09.2019    source источник
comment
Ваш код отлично работает для меня. Я запускаю pytorch версии 1.1.0 на компьютере с Windows с python 3.6. Возможно, обновление до последней версии pytorch_transformers помогло бы.   -  person asymptote    schedule 12.09.2019
comment
Я установил его непосредственно перед этим кратким руководством, которому я следовал, print(torch.__version__) дает мне это: 1.2.0+cu92   -  person AbhisheK    schedule 12.09.2019
comment
обе ошибки не имеют ничего общего с CUDA/CPU.   -  person Wasi Ahmad    schedule 14.09.2019
comment
Я согласен. Это должно было дать контекст проблеме. Я хочу знать, почему эта ошибка? и как я могу это решить?.   -  person AbhisheK    schedule 16.09.2019
comment
Есть удача здесь? Столкнуться с той же проблемой здесь   -  person Angus Tay    schedule 21.03.2020