Ich verwende das Modul open_clip, um Texteinbettungen aus dem CLIP-Modell zu erhalten. Wenn ich eine Liste einer einzelnen Textsequenz tokenisiere und sie an die Methode encode_text des Modells übergebe, erwarte ich Einbettungen mit der Form [77, 1024]. Ich erhalte jedoch eine Ausgabeform von [1, 1024].
Hier ist der relevante Code:
Code: Select all
import open_clip
model, preprocess_train, preprocess_val = open_clip.create_model_and_transforms('hf-hub:laion/CLIP-ViT-H-14-laion2B-s32B-b79K')
tokenizer = open_clip.get_tokenizer('hf-hub:laion/CLIP-ViT-H-14-laion2B-s32B-b79K')
text_inputs = ["cat"]
tokenized_inputs = tokenizer(text_inputs)
print(len(tokenized_inputs)) # This prints 77
text_embeddings = model.encode_text(tokenized_inputs)
print(text_embeddings.shape) # This prints [1, 1024]
Übersehe ich etwas bei der Verwendung des Tokenizers oder der encode_text-Methode des Modells? Wie kann ich für jede der 77 Token-Sequenzen individuelle Einbettungen erhalten? Ich erwarte [77, 1024]