Amazon SageMaker训练TensorFlow目标检测模型找不到label_map.pbtxt报错如何解决
首先确认
estimator.fit()传入的inputs字典配置正确
你需要保证inputs中train通道对应的S3路径就是存储三个文件的s3://bucket/data/bees/tfrecords,参考配置如下:inputs = { "train": "s3://bucket/data/bees/tfrecords" }SageMaker会自动将inputs字典中每个键对应的S3路径内容,下载到训练容器内
/opt/ml/input/data/{键名}路径下,如果你用的键不是train,文件会被下载到其他路径,自然无法匹配你pipeline.config中填写的文件路径。检查S3路径下的文件层级与命名
确认label_map.pbtxt、train.records、validation.records三个文件是直接存放在s3://bucket/data/bees/tfrecords根路径下,没有嵌套子文件夹。你可以执行命令验证路径内容:aws s3 ls s3://bucket/data/bees/tfrecords/
输出结果必须直接显示三个目标文件,不能有额外的子目录前缀。确认修改后的pipeline.config已正确生效
很多场景下本地修改了pipeline.config,但没有将更新后的文件上传到训练任务读取的对应路径,导致训练时仍加载旧配置文件,也会触发该报错。进阶路径排查方法
你可以临时修改训练入口脚本,只打印容器内训练路径下的所有文件,即可直观确认文件实际存储路径:import os for root, dirs, files in os.walk("/opt/ml/input/data/train"): for file in files: print(os.path.join(root, file))运行测试任务后查看CloudWatch日志,就能明确容器内的实际文件路径,再对应调整pipeline.config中的配置即可。
内容的提问来源于stack exchange,提问作者jcoll98

