重命名失败;拒绝访问Tensorflow

时间:2020-06-08 09:03:35

标签: python tensorflow jupyter tensorflow2.0 tensorflow-datasets

我正在尝试使用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

5 个答案:

答案 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文件夹。要解决上述错误,我必须将“模型”和“检查点”文件夹分开。

相关问题