我正在尝试使用mnist数据集在jupyter中使用tensorflow 2.0构建机器学习代码。该数据集是从tensorflow数据集中获取的,但是在数据集的初始下载期间,在下载数据集之后,显示了一个错误,提示它无法重命名数据集,然后中止了整个过程。
这是用于加载数据集的行
mnist_dataset, mnist_info = tfds.load(name='mnist', with_info=True, as_supervised=True)
这是错误
Downloading and preparing dataset mnist (11.06 MiB) to C:\Users\Main\tensorflow_datasets\mnist\1.0.0...
Dl Completed...:
0/0 [00:00<?, ? url/s]
Dl Size...:
0/0 [00:00<?, ? MiB/s]
Extraction completed...:
0/0 [00:00<?, ? file/s]
WARNING:tensorflow:From C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow_datasets\core\file_format_adapter.py:209: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version.
Instructions for updating:
Use eager execution and:
`tf.data.TFRecordDataset(path)`
WARNING:tensorflow:From C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow_datasets\core\file_format_adapter.py:209: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version.
Instructions for updating:
Use eager execution and:
`tf.data.TFRecordDataset(path)`
---------------------------------------------------------------------------
UnknownError Traceback (most recent call last)
<ipython-input-2-6bf2983938fb> in <module>
----> 1 mnist_dataset, mnist_info = tfds.load(name='mnist', with_info=True, as_supervised=True)
C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow_datasets\core\api_utils.py in disallow_positional_args_dec(fn, instance, args, kwargs)
50 _check_no_positional(fn, args, ismethod, allowed=allowed)
51 _check_required(fn, kwargs)
---> 52 return fn(*args, **kwargs)
53
54 return disallow_positional_args_dec(wrapped) # pylint: disable=no-value-for-parameter
C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow_datasets\core\registered.py in load(name, split, data_dir, batch_size, in_memory, shuffle_files, download, as_supervised, decoders, with_info, builder_kwargs, download_and_prepare_kwargs, as_dataset_kwargs, try_gcs)
298 if download:
299 download_and_prepare_kwargs = download_and_prepare_kwargs or {}
--> 300 dbuilder.download_and_prepare(**download_and_prepare_kwargs)
301
302 if as_dataset_kwargs is None:
C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow_datasets\core\api_utils.py in disallow_positional_args_dec(fn, instance, args, kwargs)
50 _check_no_positional(fn, args, ismethod, allowed=allowed)
51 _check_required(fn, kwargs)
---> 52 return fn(*args, **kwargs)
53
54 return disallow_positional_args_dec(wrapped) # pylint: disable=no-value-for-parameter
C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow_datasets\core\dataset_builder.py in download_and_prepare(self, download_dir, download_config)
305 self.info.size_in_bytes = dl_manager.downloaded_size
306 # Write DatasetInfo to disk, even if we haven't computed the statistics.
--> 307 self.info.write_to_directory(self._data_dir)
308 self._log_download_done()
309
C:\Python38\Anaconda3\envs\py3-TF2.0\lib\contextlib.py in __exit__(self, type, value, traceback)
117 if type is None:
118 try:
--> 119 next(self.gen)
120 except StopIteration:
121 return False
C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow_datasets\core\file_format_adapter.py in incomplete_dir(dirname)
198 try:
199 yield tmp_dir
--> 200 tf.io.gfile.rename(tmp_dir, dirname)
201 finally:
202 if tf.io.gfile.exists(tmp_dir):
C:\Python38\Anaconda3\envs\py3-TF2.0\lib\site-packages\tensorflow\python\lib\io\file_io.py in rename_v2(src, dst, overwrite)
506 """
507 _pywrap_file_io.RenameFile(
--> 508 compat.as_bytes(src), compat.as_bytes(dst), overwrite)
509
510
UnknownError: Failed to rename: C:\Users\Main\tensorflow_datasets\mnist\1.0.0.incompleteI3ZU6X to: C:\Users\Main\tensorflow_datasets\mnist\1.0.0 : Access is denied.
; Input/output error
答案 0 :(得分:2)
GitHub问题已经解决。
在该线程中,提出了一个临时解决方案,尽管它暗示着手动修改某些TensorFlow函数。我不确定它是否会对模型性能产生影响,但是如果您想尝试一下,我将在下面发布该链接:
Windows - tensorflow.python.framework.errors_impl.UnknownError: Failed to rename: #41380
答案 1 :(得分:1)
更改磁盘或数据目录对我不起作用(Win10)。
但是,指定数据集的版本有效。
示例:
tfds.load(name='celeb_a:2.0.0',... )
答案 2 :(得分:0)
我在本地运行时遇到了相同的错误。我认为该错误是由于要在其中下载和存储数据的文件夹的读写权限造成的。
我通过在tfds.load()函数中将data_dir参数指定到不需要特殊用户权限的文件夹中来修复了该问题。
这是我的函数调用:
mnist_dataset, mnist_info = tfds.load(name='mnist', data_dir='C:/', with_info=True, as_supervised=True)
这将为根目录中的数据创建一个文件夹,而不是默认目录。
答案 3 :(得分:0)
我面临着同样的问题。只需像data_dir
那样更改data_dir=r"D:\data"
属性,并确保它不应该在C: drive
中。你很好。
答案 4 :(得分:-1)
我试图使Tensorflow API 2.0正常工作,并遇到与上述相同的错误。 我将Model文件夹指定为Checkpoint文件夹。要解决上述错误,我必须将“模型”和“检查点”文件夹分开。