Chinese-CLIP
Chinese-CLIP copied to clipboard
相同的文本词,使用encode_text产出的结果不一样
我是使用源码安装的cn_clip,然后执行了下面代码
import cn_clip.clip as clip
import torch
import cn_clip
from cn_clip.clip import load_from_name, available_models
# 加载clip模型
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"device: {device}")
model, preprocess_clip = load_from_name("ViT-L-14", device=device, download_root=os.path.dirname(os.path.realpath(__file__)) + "/../assets")
print(f"使用的device: {device}")
print(f"加载clip模型完毕")
for x in range(10):
text_tokens = cn_clip.clip.tokenize(["侧空翻"]).to(device)
with torch.no_grad():
text_features = model.encode_text(text_tokens)
text_features /= text_features.norm(dim=-1, keepdim=True)
print(f"{text_features[0][:5]}") # 只输出前五个以方便显示
10次调用模型生成embedding,结果都不一样
调试进去看model.encode_text方法,发现387行的self.bert跑出来的结果每次都不一样
应该怎么调整参数来保证相同的text产生相同的embedding
模型忘记设置evel()了吧。。。
模型忘记设置evel()了吧。。。
是的, 调试到内部时候发现是有一层dropout的问题,eval之后就固定了