运行MCLIP和ItalianCLIP零样本学习评估遇ValueError的解决咨询
修复CLIP零样本学习预测中的文本输入格式错误
这个错误的核心原因是:你传入模型编码方法(encode)的文本数据类型不合法,不符合tokenizer要求的str(单样本)、List[str](批量样本)格式。以下是具体修复步骤:
检查并转换输入文本类型
如果你的文本是存储在pandas Series、numpy数组这类容器里,必须先转换成纯字符串列表:- pandas Series转列表:
texts = your_series.tolist() - numpy数组转列表:
texts = your_array.tolist()
- pandas Series转列表:
确保输入是纯字符串结构
单样本输入必须是单个字符串(比如"一只猫"),批量输入必须是仅包含字符串的列表(比如["一只猫", "一条狗"])。如果提示词列表里有非字符串元素(比如数字、空值),要统一转成字符串:# 过滤并转换所有元素为字符串 text_prompts = [str(p) for p in text_prompts if p is not None]排查提示词构建逻辑
零样本任务中常需要构建分类提示词(比如"a photo of a {class}"),检查这部分代码是否生成了非字符串的结构,比如不小心把变量类型错误带入,导致提示词列表混入非字符串元素。
示例修复代码
错误写法(传入非列表格式):
text_prompts = df['category'] # pandas Series,非合法输入 embeddings = model.encode(text_prompts)
正确写法:
text_prompts = df['category'].tolist() # 转成字符串列表 text_prompts = [str(p) for p in text_prompts] # 确保所有元素都是字符串 embeddings = model.encode(text_prompts)
内容的提问来源于stack exchange,提问作者khaled
相关产品推荐
相关产品推荐

