TensorFlow2.4.1运行BERT报no attribute 'gfile'无需降级解决方案求问
问题原因
google-research/bert官方仓库是基于TensorFlow 1.x版本开发的,TensorFlow 2.x版本中移除了顶层的tf.gfile接口,相关功能全部迁移到了tf.compat.v1.io.gfile兼容模块下。修改单处代码后仍报错的核心原因有两个:
- Jupyter运行内核未重启,修改后的代码没有被重新加载,运行的仍是修改前的旧代码
- 整个BERT项目的代码存在多处调用
tf.gfile/tf.io.gfile的位置,仅修改单处报错位置,其他文件中的同类调用仍会触发报错
无需降级TensorFlow的解决方案
- 方案1:入口处做接口映射(改动最小)
在你调用BERT代码的入口文件最开头添加两行代码,直接做接口兼容,不需要修改原BERT仓库的任何代码:
该方案可以解决绝大多数import tensorflow as tf tf.gfile = tf.compat.v1.io.gfiletf.gfile相关的属性报错,不需要额外改动原有逻辑。 - 方案2:使用适配TensorFlow 2.x的BERT实现
直接使用已经完成TensorFlow 2.x适配的BERT版本,不需要做兼容处理即可直接在TF2.4.1环境下运行。 - 方案3:全量替换项目内的gfile调用
全局搜索BERT项目内所有tf.gfile和tf.io.gfile的调用语句,全部替换为tf.compat.v1.io.gfile,替换完成后重启Jupyter内核重新运行即可。
内容的提问来源于stack exchange,提问作者KNB
相关产品推荐
相关产品推荐

