・ Sprache: Python3 ・ Bibliothek: Transformatoren
Der Code lautet hier
import transformers
import torch
In den meisten Fällen haben die Zeichenfolgen, die Sie in das Modell eingeben, nicht die gleiche Länge. Andererseits müssen die Längen gleich sein, damit das Modell Tensorberechnungen für diese Zeichenfolgendaten durchführen kann. Bestimmen Sie also den Maximalwert. Wenn dieser Wert nicht erreicht wird, füllen Sie ihn mit Füllzeichen bis zu dieser Länge. (Nächster Abschnitt)
MAX_LENGTH = 192
Die Erklärung ist hier.
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)
Das Putten erfolgt wie im vorherigen Abschnitt erläutert. Die Aufmerksamkeitsmaske ist ein Zeichen, das dem Modell mitteilt, wie effektiv das Zeichen ist und woher die Polsterung stammt. Es ist "1" für gültige Zeichen und "0" für das Auffüllen von Zeichen.
#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)
Sie können dieses Modell generieren, indem Sie "roberta-base" einen anderen Modellnamen geben. Andere Modelle sind hier.
model = transformers.AutoModel.from_pretrained("roberta-base")
Ich habe die bisher eingegebene Zeichenkette in eine ID eingegeben. Da es sich um einen Listentyp handelt, werde ich ihn zu einem torch.tensor-Typ machen. Bei der Eingabe in das Modell werden die Ausgabe von (1) der letzten Schicht von BertLayer und (2) die Ausgabe von (1) ausgegeben, die von BertPooler verarbeitet wurde. Die Größe von jedem ist wie im Ausgabeergebnis des folgenden Codes gezeigt.
#Ein Typ, mit dem Sie eine ID und eine Maske in das Modell eingeben können(list -> pytorch.tenrsor)Umstellung auf
token_ids_tensor = torch.tensor([token_ids], dtype=torch.long)
mask_tensor = torch.tensor([mask], dtype=torch.long)
#Umwandlung
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