tensorflow.keras.datasets.mnist报错has no attribute 'read_data_sets'怎么解决
报错触发代码:
import tensorflow.keras.datasets.mnist as input_data mnist = input_data.read_data_sets("MNIST-data", one_hot=True)报错信息:
AttributeError: module 'tensorflow.keras.datasets.mnist' has no attribute 'read_data_sets'
报错产生原因
- 你调用的
read_data_sets是TensorFlow 1.x版本专属的旧接口,原本归属tensorflow.examples.tutorials.mnist模块,你当前导入的tensorflow.keras.datasets.mnist是Keras生态提供的数据集加载模块,本身就不包含该接口。 - TensorFlow 2.x版本已全面移除1.x版本的
tutorials相关工具包,就算你按1.x的路径导入模块也会找不到该方法。
解决方案
方案1:使用TensorFlow 2.x官方推荐的原生Keras接口(推荐)
该方案符合当前TensorFlow的开发规范,无需兼容处理即可直接运行,示例代码如下:
import tensorflow as tf # 加载MNIST数据集,返回训练集、测试集的特征与标签 (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() # 和旧接口默认逻辑对齐,对像素值做0-1归一化 x_train, x_test = x_train / 255.0, x_test / 255.0 # 如果你需要和旧接口一致的one_hot格式标签,可通过如下方法转换 y_train_onehot = tf.one_hot(y_train, depth=10) y_test_onehot = tf.one_hot(y_test, depth=10)
方案2:兼容旧版1.x代码(临时过渡用,不推荐长期使用)
如果你需要保留旧代码的read_data_sets调用逻辑,可以开启TensorFlow的v1兼容模式运行,示例代码如下:
import tensorflow.compat.v1 as tf # 禁用TensorFlow 2.x的默认行为,开启1.x兼容模式 tf.disable_v2_behavior() from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST-data", one_hot=True)
内容的提问来源于stack exchange,提问作者bassem derbali
相关产品推荐
相关产品推荐

