INNER CODE UNIT · Python
encode_text
patrickjohncyh/fashion-clip · fashion_clip/fashion_clip.py:200
def encode_text(self, text: List[str], batch_size: int):
dataset = Dataset.from_dict({'text': text})
dataset = dataset.map(lambda el: self.preprocess(text=el['text'], return_tensors="pt",
max_length=77, padding="max_length", truncation=True),
batched=True,
remove_columns=['text'])
dataset.set_format('torch')
dataloader = DataLoader(dataset, batch_size=batch_size)
text_embeddings = []
pbar = tqdm(total=len(text) // batch_size, position=0)
with torch.no_grad():
for batch in dataloader:
batch = {k: v.to(self.device) for k, v in batch.items()}
text_embeddings.extend(self.model.get_text_features(**batch).detach().cpu().numpy())
pbar.update(1)
pbar.close()
return np.stack(text_embeddings)