Azure ML中MLTable YAML的read_from_directory未识别错误解决
解决Azure ML中MLTable YAML读取图像文件夹标签的问题
错误原因
你使用的read_from_directory不属于MLTable YAML的标准转换指令,导致架构验证失败。正确的做法是先读取所有图像文件,再从文件路径中提取父文件夹名称作为标签。
修正后的MLTable配置及代码
以下是可以正确识别文件夹作为标签的配置:
type: mltable paths: - pattern: ./**/*.jpg # 匹配所有子文件夹下的jpg图片,根据实际格式调整(如png、bmp) transformations: - read_files: format: image column_name: image - parse_path: column: image include: - folder_name rename_columns: folder_name: label
对应的Python代码:
mltable_yaml = """ type: mltable paths: - pattern: ./**/*.jpg # 替换为你的图片格式,支持多格式如 *.{jpg,png} transformations: - read_files: format: image column_name: image - parse_path: column: image include: - folder_name rename_columns: folder_name: label """ # 创建目录并保存MLTable文件 import os mltable_dir = "image_data" os.makedirs(mltable_dir, exist_ok=True) with open(os.path.join(mltable_dir, "MLTable"), "w") as f: f.write(mltable_yaml) from azure.ai.ml.entities import Input training_data = Input( type="mltable", path=mltable_dir )
关键配置说明
- 路径匹配:使用
pattern: ./**/*.jpg递归匹配OK和NOK文件夹下的所有图片,无需单独指定每个文件夹,适配更灵活的目录结构。 - 读取图像:
read_files指定format: image,将图像数据加载到image列中。 - 提取标签:
parse_path从图像文件的路径中提取父文件夹名称(即OK/NOK),并将该列重命名为label,实现文件夹到标签的映射。
额外验证步骤
你可以在本地加载MLTable验证数据是否正确:
import mltable tbl = mltable.load(mltable_dir) df = tbl.to_pandas_dataframe() print(df.head()) # 检查是否包含image和label列,label值为OK或NOK
内容的提问来源于stack exchange,提问作者Luis Gustavo
相关产品推荐
相关产品推荐

