我正在尝试使用 mnist 数据集在 jupyter 中使用 Tensorflow 2.0 构建机器学习代码。数据集取自tensorflow-datasets,但在数据集的初始下载期间,下载后显示错误,无法重命名数据集,然后中止整个过程。
这是用于加载数据集的线
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
为了解决这个问题,GitHub 问题已经开放。
在该线程中,提出了一个时间解决方案,尽管它意味着手动修改一些 TensorFlow 函数。我不确定它是否会对模型性能产生影响,但如果您想尝试一下,我将在下面发布链接:
Windows - tensorflow.python.framework.errors_impl.UnknownError:无法重命名:#41380
我也面临着同样的问题。只需更改
data_dir
属性(例如 data_dir=r"D:\data"
)并确保它不应该位于 C: drive
中。你可以走了。
更改磁盘或数据目录对我来说不起作用(Win10)。
但是,指定数据集的版本是有效的。
示例:
tfds.load(name='celeb_a:2.0.0',... )
我在本地运行时遇到了同样的错误。我认为该错误是由于下载和存储数据的文件夹的读写权限造成的。
我通过将 tfds.load() 函数中的 data_dir 参数指定为不需要特殊用户权限的文件夹来修复此问题。
这是我的函数调用:
mnist_dataset, mnist_info = tfds.load(name='mnist', data_dir='C:/', with_info=True, as_supervised=True)
这将在根目录中为数据创建一个文件夹,而不是默认的文件夹。
张量流/模型/MODEL_NAME /
我的解决方案是事先确保那里没有“检查点”,那里有一个检查点文件夹,原因很明显,但我使用的脚本(其他人)他们称之为 ckpt.0一个不同的位置,所以我基本上将其移动到该新位置,并从*上述路径中删除了检查点文件夹。我是一个缺乏经验的编码员,尤其是 python 新手,但我目前成功运行了训练脚本。
我今天刚遇到这个问题。我通过更新目标文件夹的权限以包括读/写权限来解决这个问题。最初该文件夹是只读的。
我遇到了同样的问题,尝试了从更改目录到删除文件夹的所有方法一次又一次 我刚刚用提示符中的这些命令解决了它(anaconda) conda 激活 py3-TF2 pip 安装tensorflow-datasets==3.1.0
注意:将 py3-TF2 替换为环境名称
如果不是 anaconda 用户,则正常的 pip install tensorflow-datasets==3.1.0 应该可以解决问题 快乐编码!
我尝试让 Tensorflow API 2.0 工作并得到与上面相同的错误。 我指定的模型文件夹与检查点文件夹相同。要修复上述错误,我必须将模型和检查点文件夹分开。