当我运行fully_connected_feed.py代码时:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/fully_connected_feed.py
我收到错误:
Traceback (most recent call last):
File "C:/Users/AppData/Local/Continuum/Anaconda3/Lib/site-packages/tensorflow/examples/tutorials/mnist/fully_connected_feed.py", line 277, in <module>
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
File "C:\Users\AppData\Local\Continuum\Anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 43, in run
sys.exit(main(sys.argv[:1] + flags_passthrough))
File "C:/Users/AppData/Local/Continuum/Anaconda3/Lib/site-packages/tensorflow/examples/tutorials/mnist/fully_connected_feed.py", line 222, in main
run_training()
File "C:/Users/AppData/Local/Continuum/Anaconda3/Lib/site-packages/tensorflow/examples/tutorials/mnist/fully_connected_feed.py", line 120, in run_training
data_sets = input_data.read_data_sets(FLAGS.input_data_dir, FLAGS.fake_data)
File "C:\Users\AppData\Local\Continuum\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\mnist.py", line 211, in read_data_sets
SOURCE_URL + TRAIN_IMAGES)
File "C:\Users\AppData\Local\Continuum\Anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\datasets\base.py", line 142, in maybe_download
gfile.Copy(temp_file_name, filepath)
File "C:\Users\AppData\Local\Continuum\Anaconda3\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 316, in copy
compat.as_bytes(oldpath), compat.as_bytes(newpath), overwrite, status)
File "C:\Users\AppData\Local\Continuum\Anaconda3\lib\contextlib.py", line 66, in __exit__
next(self.gen)
File "C:\Users\AppData\Local\Continuum\Anaconda3\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 469, in raise_exception_on_not_ok_status
pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.OutOfRangeError: Read fewer bytes than requested
如何解决此问题?
答案 0 :(得分:2)
执行以下操作后,我能够无错误地运行脚本。让它为我工作的关键是,安装的tensorflow版本必须与教程代码匹配,否则有例外。虽然,起初我有一个与你不同的例外。
安装tensorflow后,检查版本。如果您安装了pip或其他方法,此步骤的详细信息可能会有所不同:
$ conda list tensorflow
# packages in environment at /Users/agr/miniconda3/envs/tensorflow:
#
tensorflow 0.11.0 py35_0 conda-forge
克隆git repo
$ git clone https://github.com/tensorflow/tensorflow.git
检查可用的标签并检查与您的安装相匹配的版本:
$ cd tensorflow
$ git tag -l -n1
...
$ git checkout v0.11.0
运行脚本!
$ cd examples/tutorials/mnist/
$ python fully_connected_feed.py
关键是,从这里运行脚本,而不是从您在原始问题中发布的链接。
答案 1 :(得分:2)
在您创建文件时,其他内容正在改变您的文件。找到这个过程并停止它。
我刚刚运行Windows 10,Python 3.5,tensorflow 0.12.0的演示,没有错误。因此,它与您的环境有关。
查看实际的line of the error,您无法从打开的文件中读取所需的字节数。进一步向上堆栈,您可以看到CopyFile实际上是在尝试将文件的所有字节读入this function中的字符串。首先查找当前文件大小,然后尝试读取所有字节。
问题是此过程开始时的文件大小与副本末尾的大小不匹配。换句话说,其他东西改变了你的文件。
您最好的办法是尝试找出其他人正在访问您的文件。我建议你使用here解释的技术来查看在运行副本时文件打开的其他内容。
答案 2 :(得分:0)
我在Windows 2012 Server上遇到了同样的问题。
正如上一篇文章所述,我下载并启动了Process Monitor,然后设置了过滤器:&#34; Path包含mnist&#34; see the image。正确地下载并解压缩数据集,同时运行Spyder和Jupyter的代码。
我怀疑库代码中存在竞争条件,即下载和解包操作之间缺少同步。由于Process Monitor引入了额外的延迟,因此在下一次操作开始之前已经成功下载了数据集,因此没有观察到危险行为。