运行fully_connected_feed.py时出错

时间:2016-12-06 16:03:02

标签: python windows tensorflow

当我运行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

如何解决此问题?

3 个答案:

答案 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)

TL; DR

在您创建文件时,其他内容正在改变您的文件。找到这个过程并停止它。

研究

我刚刚运行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引入了额外的延迟,因此在下一次操作开始之前已经成功下载了数据集,因此没有观察到危险行为。