导入 input_data MNIST tensorflow 不起作用

39

TensorFlow MNIST example not running with fully_connected_feed.py

我查看了这个问题并发现input_data不是内置的。因此,我从这里下载了整个文件夹。我该如何开始教程呢?

import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-6-a5af65173c89> in <module>()
----> 1 import input_data
      2 mnist = tf.input_data.read_data_sets("MNIST_data/", one_hot=True)

ImportError: No module named input_data
我正在使用iPython(Jupyter),那么我需要将工作目录更改为我下载的此文件夹吗?或者我可以将其添加到我的tensorflow目录中吗?如果是这样,我应该在哪里添加这些文件?我使用pip(在我的OSX上)安装了tensorflow,当前位置为~/anaconda/lib/python2.7/site-packages/tensorflow/__init__.py
这些文件是否像sklearn数据集一样直接通过tensorflow访问?还是我只需要进入目录并从那里操作?这个例子不够清晰。
编辑:
这篇文章非常过时。
15个回答

34

那么假设您正在目录中:/somePath/tensorflow/tutorial(这是您的工作目录)。

您需要做的就是下载input_data.py文件,并将其放在此位置。假设您调用的文件名:

import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
...

文件名为main.py,也位于同一目录下。

完成这些步骤后,您只需开始运行main.py即可开始下载文件,并将它们放入MNIST_data文件夹中(一旦它们到达那里,脚本下次将不会再次下载它们)。


1
有人知道"one_hot=True"是什么意思吗?还有,有人知道在哪里可以查阅相关细节吗?谢谢。 - Mattia Baldari
2
对于可能感兴趣的人,我找到了一个可能的答案,即:“一个one-hot向量是一个在大多数维度上为0,在单个维度上为1的向量。”完整解释请参见页面:https://www.tensorflow.org/versions/r0.10/tutorials/mnist/beginners/index.html#mnist-for-ml-beginners(搜索“one-hot”一词) - Mattia Baldari
假设我们有一个包含图像0到9的向量,它是由10个元素组成的。单热向量意味着每次只有一个类别处于活动状态。因此,“6”类别的图像处于活动状态,或者说向量中的该元素具有值1。 - a3.14_Infinity
额外的上下文。在训练过程中,你的优化器(例如梯度下降)会将模型输出与one-hot向量之间的距离最小化。这个距离越小,模型的准确性就越高。常用的距离函数是交叉熵函数。实际上,你的模型需要一个参考来比较输出结果,以便可以继续调整权重和偏差直到达到可接受的准确性。这个参考就是one-hot编码向量。 - Ritwik Biswas
1
由於引用的input_data.py鏈接失效,這個文件對我很有用。 - Suyama87

25

旧版教程中说,要导入MNIST数据,请使用:

import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

这将导致错误。新教程使用以下代码来实现:

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)

而且这个很有效。


2
当我尝试从新教程中提到的方法时,我遇到了这个错误:urllib.error.URLError: <urlopen error [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond>。你有什么想法吗? - user3731622
3
我可以手动从这里下载数据。请确保将文件下载到tensorflow MNIST_data文件夹中的 tensorflow\examples\tutorials\mnist。完成后,input_data.read_data_sets("MNIST_data", one_hot=True) 将可以正常工作。 - user3731622
嘿,这对我有用,但我必须先更新pandas。使用“sudo pip install pandas --upgrade”进行更新。 - Rich
@user3731622,我也偶尔会遇到这个错误。通过一些谷歌搜索,我找到了其他一些问题跟踪器。显然,托管该数据的网站有时会崩溃,并且它不会自动尝试另一个镜像。 - SuperTetelman

3

我正在使用与在Windows上使用Docker进行安装相关的不同版本(这里),并且遇到了类似的问题。

我找到的一个简单解决方法是:

1. 在Linux命令行中找出input_data.py在我的Docker镜像中的位置(你提到你不得不手动下载它,在我的情况下,它已经存在)。我使用了以下Linux命令:

$ sudo find . -print | grep -i '.*[.]py'

我已经获得了文件和路径

./tensorflow/g3doc/tutorials/mnist/mnist.py
./tensorflow/g3doc/tutorials/mnist/input_data.py

2.启动Python并使用SYS输入以下命令:

>> import sys
>> print(sys.path)

您将获得现有的路径。

['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat']

4. 添加 inputa_data.py 的路径:

>> sys.path.insert(1,'/tensorflow/tensorflow/g3doc/tutorials/mnist')

希望这能有所帮助。如果你找到更好的选择,请告诉我。 :)

对我来说,它是这样工作的: 导入tensorflow.examples.tutorials.mnist.input_data - Alexandru Ceausu

3

如何开始教程

我没有下载您下载的文件夹,但我通过pip安装了tensorflow,然后遇到了类似的问题。

我的解决方法是把

import tensorflow.examples.tutorials.mnist.input_data

替换为

import tensorflow.examples.tutorials.mnist.input_data as input_data


3
如果您使用的是 Tensorflow 2.0 或更高版本,首先需要安装 tensorflow_datasets :
pip install tensorflow_datasets

如果您使用Anaconda发行版:

conda install tensorflow_datasets

从命令行开始。

如果您正在使用 Jupyter Notebook,则需要安装并启用 ipywidgets。根据文档 (https://ipywidgets.readthedocs.io/en/stable/user_install.html) ,可以使用 pip 进行安装:

pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension

如果你正在使用Anaconda分发版,可以像以下这样在命令行中安装ipywidgets:
conda install -c conda-forge ipywidgets

Anaconda发行版中不需要启用扩展,conda会为您处理此操作。
然后将其导入到您的代码中:
import tensorflow_datasets as tfds
mnist = tfds.load(name='mnist')

如果您按照这些说明操作,应该可以在不出错的情况下使用它。

2

对于TensorFlow API 2.0,mnist数据已经更改为:tf.keras.datasets.mnist.load_data


2

可能有点晚了,但对于TensorFlow版本0.12.1,您可能需要使用input_data.read_data_sets来载入数据。

基本上,使用此函数从您已经从http://yann.lecun.com/exdb/mnist/下载到本地驱动器的数据中加载数据。

from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('data_set/')


2

删除以下行:

from tensorflow.examples.tutorials.mnist import input_data
fashion_mnist = input_data.read_data_sets('input/data',one_hot=True)

下面这行就足够了:

fashion_mnist = keras.datasets.fashion_mnist

请注意,如果keras内置的示例中没有可用的数据集,则会下载数据集并解决问题。 :)

2

现在使用Tensorflow 2和Tensorflow Datasets,加载MNIST数据的方法变得更加简单,无需下载数据。

要开始使用,请确保导入Tensorflow并指定第二个版本:

%tensorflow_version 2.x
import tensorflow as tf

然后,使用下面的代码将数据加载到字典中:

MNIST_data = tfds.load(name = "mnist")

然后将数据分成训练集和测试集:
train, test = MNIST_data['train'] , MNIST_data['test']

现在,您可以随意使用这些数据生成器。

1
作为tensorflow示例教程的一部分,MNIST数据集已经包含在内。如果我们想使用它:

导入MNIST数据以识别手写数字

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST data", one_hot=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接