使用tensorflow_datasets加载FashionMNIST时遇TypeError问题求助
使用FashionMNIST训练GAN时加载数据出现TypeError问题
错误信息
TypeError Traceback (most recent call last) Cell In[6], line 2 1 builder = tfds.builder('fashion_mnist', data_dir=folder_path) ----> 2 builder.download_and_prepare() 3 ds = builder.as_dataset(split=tfds.Split.TRAIN) File e:\Info\Anaconda\envs\ia\lib\site-packages\tensorflow_datasets\core\logging\__init__.py:169, in _FunctionDecorator.__call__(self, function, instance, args, kwargs) 167 metadata = self._start_call() 168 try: ---> 169 return function(*args, **kwargs) 170 except Exception: 171 metadata.mark_error() File e:\Info\Anaconda\envs\ia\lib\site-packages\tensorflow_datasets\core\dataset_builder.py:646, in DatasetBuilder.download_and_prepare(self, download_dir, download_config, file_format) 644 self.info.read_from_directory(self._data_dir) 645 else: ---> 646 self._download_and_prepare( 647 dl_manager=dl_manager, 648 download_config=download_config, 649 ) 651 # NOTE: If modifying the lines below to put additional information in 652 # DatasetInfo, you'll likely also want to update 653 # DatasetInfo.read_from_directory to possibly restore these attributes 654 # when reading from package data. ... TypeError: __init__(): incompatible constructor arguments. The following argument types are supported: 1. tensorflow.python._pywrap_file_io.BufferedInputStream(arg0: str, arg1: int)
尝试过的加载代码
builder = tfds.builder('fashion_mnist', data_dir=folder_path) builder.download_and_prepare() ds = builder.as_dataset(split=tfds.Split.TRAIN)
当前环境版本:TensorFlow 2.3.0,tensorflow_datasets 4.9.2
解决方案
这个错误是版本不兼容导致的:tensorflow_datasets 4.9.2对TensorFlow的最低要求是2.8.0,而你使用的TF2.3.0版本过低,两者API不匹配引发了构造函数参数错误。
解决方法二选一:
- 方案1:升级TensorFlow到兼容版本
执行命令升级TF到2.8.0及以上(推荐2.10.x版本,兼顾稳定性和兼容性):pip install tensorflow>=2.8.0 --upgrade - 方案2:降级tensorflow_datasets到适配TF2.3的版本
TF2.3对应的兼容tfds版本是4.0.x系列,执行命令降级:pip install tensorflow_datasets==4.0.0 --force-reinstall
验证方法:安装完成后重新运行数据加载代码,若错误消失则说明版本匹配成功。
内容的提问来源于stack exchange,提问作者Panda14
相关产品推荐
相关产品推荐

