M1 Mac运行TensorFlow的generate_tfrecord.py报illegal hardware instruction如何解决
M1 Mac 运行generate_tfrecord.py报错解决方案
错误根因
illegal hardware instruction报错是M1系列ARM架构芯片和x86版本TensorFlow不兼容导致的,旧版TensorFlow未针对Apple Silicon做原生适配,运行时调用了ARM架构不支持的x86硬件指令,触发报错。你提交的运行命令也存在参数配置错误问题,会额外触发执行异常。
修复步骤
- 第一步:关闭终端的Rosetta转译
右键点击终端应用,选择「显示简介」,取消勾选「使用Rosetta打开」,重启终端。避免使用转译的x86环境运行ARM适配的软件包。 - 第二步:安装原生适配Apple Silicon的TensorFlow环境
- 卸载x86架构的Anaconda(如果已安装),安装ARM版本的miniforge3作为包管理工具
- 创建专属Python环境,选择适配性最好的3.9版本:
conda create -n tf_m1 python=3.9 -y conda activate tf_m1 - 安装Apple官方适配的TensorFlow组件:
conda install -c apple tensorflow-deps -y pip install tensorflow-macos tensorflow-metal
- 第三步:安装配套依赖
安装兼容的protobuf版本和TensorFlow Object Detection API,避免版本冲突:conda install protobuf=3.20.3 -y # 按照TensorFlow Object Detection API官方流程完成编译安装,确保所有依赖适配ARM架构 - 第四步:修正运行命令
你原命令的参数配置有误:-l参数需要指向具体的label_map.pbtxt文件路径,-o参数需要指定最终输出的tfrecord文件完整路径,同时统一路径大小写避免Mac文件系统识别异常,修正后命令示例:python TensorFlow/scripts/generate_tfrecord.py -x TensorFlow/workspace/images/train -l TensorFlow/workspace/annotations/label_map.pbtxt -o TensorFlow/workspace/annotations/train.record
完成上述操作后,在激活的tf_m1环境中运行修正后的命令即可正常生成tfrecord文件。
内容的提问来源于stack exchange,提问作者Aeronos
相关产品推荐
相关产品推荐

