运行ENAS项目出现Unknown data_format 'NHWC'错误是否为环境问题
ENAS运行出现NHWC格式报错的原因及修复方法
报错信息:
File "/enas-add-license-1/enas-add-license-1/src/cifar10/micro_child.py", line 258, in _model raise ValueError("Unknown data_format '{0}'".format(self.data_format)) ValueError: Unknown data_format 'NHWC'运行环境:Python 3.6、TensorFlow 1.13.2
问题原因
这个报错不属于环境配置兼容性问题,是ENAS项目代码的逻辑缺陷导致的:
- ENAS官方代码的
micro_child.py中,_model方法的判断分支只适配了NCHW(通道优先,TensorFlow GPU版默认格式)这一种数据格式,没有写NHWC(通道在后,TensorFlow CPU版默认格式)的处理逻辑。 - 你当前运行环境的TensorFlow默认数据格式为
NHWC,参数传入后匹配不到对应分支,就触发了该报错。
修复方法
- 方法1:直接修改
micro_child.py对应代码,在第258行的判断逻辑前添加强制指定格式的代码:
即可绕过判断直接使用项目适配的格式,不需要调整其他逻辑。self.data_format = 'NCHW' - 方法2:在训练启动脚本的最开头修改TensorFlow全局默认数据格式:
该配置会将全局默认格式改为import tensorflow as tf tf.keras.backend.set_image_data_format('channels_first')NCHW,不需要修改项目源码。 - 方法3:若你使用的是二次修改的ENAS分支,可检查训练启动命令的参数,找到
data_format相关参数,直接传入NCHW即可。
内容的提问来源于stack exchange,提问作者rif3aa dev
相关产品推荐
相关产品推荐

