You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遍历字典列表时循环失效,无法处理HuggingFace模型训练图像

问题修复方案

核心错误点

  1. 字符串引号嵌套冲突:print语句中外层用双引号,内层访问dataset["image_data"]也用双引号,导致Python语法解析错误,这是触发error found: image_data的直接原因。
  2. 无效遍历逻辑:遍历字典所有key的列表,包括空列表(如label_path、image_data),既浪费资源又容易引入无关问题。
  3. 路径转义异常:Windows路径中的\未转义,会被解析为转义字符(如\t变成制表符),导致实际路径错误,无法找到图片文件。

修复步骤

  • 修正print语句的引号:将内层双引号改为单引号,或外层用单引号内层用双引号,也可转义双引号。
  • 直接遍历dataset["image_path"]列表:无需遍历整个字典的所有key,聚焦目标数据。
  • 修正路径格式:将路径改为原始字符串(前缀加r)或转义反斜杠,确保路径被正确解析。

修正后的代码

def images_to_tensor():
    """
    Convert images data to pytorch tensor by converting them to RGB values and then tensors using model processor.
    
    Parameters:
    None

    Returns:
    None
    """
    
    processor = DonutProcessor.from_pretrained("naver-clova-ix/donut-base")

    try:
        # 直接遍历目标路径列表,跳过无效遍历
        for img_path in dataset["image_path"]:
            with open(img_path, "rb") as file:                    
                image_rgb = Image.open(file).convert("RGB")
                image_tensor = processor(images=image_rgb, return_tensors="pt").pixel_values.squeeze(0)
                
                dataset["image_data"].append(image_tensor)
       
        # 修正引号冲突,用单引号包裹内层键名
        print(f"dataset length image_data : {len(dataset['image_data'])}")
    
    except Exception as e:
        # 打印完整错误栈,方便排查深层问题
        import traceback
        traceback.print_exc()
        print(f"error found: {str(e)}")
    
    return None

# 修正路径格式的字典示例
dataset = {
    "image_path": [r".\my\path\to.jpeg", r".\my\path\to2.jpeg"],  # 加r使用原始字符串避免转义
    "label_path": [],
    "image_data": [],
    "label_data": []
}

额外排查建议

  • 添加调试打印(如print(f"Processing path: {img_path}")),确认是否正确遍历到目标路径。
  • 用os.path.exists(img_path)验证路径是否实际存在,排除文件不存在的问题。

内容的提问来源于stack exchange,提问作者Max Mougg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:52:43