・ Langue: Python3 ・ Bibliothèque: transformateurs
Le code est ici
import transformers
import torch
Dans la plupart des cas, les chaînes que vous entrez dans le modèle ne seront pas de la même longueur. D'autre part, pour que le modèle effectue des calculs de tenseurs avec ces données de chaîne, les longueurs doivent être identiques. Alors, décidez de la valeur maximale, et si elle n'atteint pas cette longueur, remplissez-la avec des caractères de remplissage jusqu'à cette longueur. (Section suivante)
MAX_LENGTH = 192
L'explication est ici.
tokenizer = transformers.AutoTokenizer.from_pretrained("roberta-base")
text = "This is a pen."
text2 = "I am a man"
ids = tokenizer.encode(text)
ids2 = tokenizer.encode(text2)
token_ids = tokenizer.build_inputs_with_special_tokens(ids, ids2)
La mise est comme expliqué dans la section précédente. Le masque d'attention est un caractère qui indique au modèle l'efficacité du personnage et la provenance du rembourrage. Il vaut "1" pour les caractères valides et "0" pour les caractères de remplissage.
#Attention Mask
mask = [1] * len(token_ids)
#Padding
padding_length = MAX_LENGTH - len(token_ids)
if padding_length > 0:
token_ids = token_ids + ([1] * padding_length)
mask = mask + ([0] * padding_length)
Vous pouvez générer ce modèle en donnant à "roberta-base" un nom de modèle différent. D'autres modèles sont ici.
model = transformers.AutoModel.from_pretrained("roberta-base")
J'ai transformé la chaîne de caractères entrée jusqu'à présent dans un identifiant. Puisqu'il s'agit d'un type de liste, je vais en faire un type torch.tensor. Lors de l'entrée dans le modèle, la sortie de (1) la couche finale de BertLayer et (2) la sortie de (1) traitée par BertPooler sont sorties. La taille de chacun est comme indiqué dans le résultat de sortie du code ci-dessous.
#Un type qui vous permet de saisir un identifiant et un masque dans le modèle(list -> pytorch.tenrsor)Conversion en
token_ids_tensor = torch.tensor([token_ids], dtype=torch.long)
mask_tensor = torch.tensor([mask], dtype=torch.long)
#conversion
out = model(input_ids=token_ids_tensor, attention_mask=mask_tensor)
print(out[0].shape)
#output
#torch.Size([1, 192, 768])
print(out[1].shape)
#output
#torch.Size([1, 768])
Recommended Posts