Python 在指定一个\u hot=True后,如何从MNIST示例中获取整数标签?

Python 在指定一个\u hot=True后,如何从MNIST示例中获取整数标签?,python,tensorflow,mnist,one-hot-encoding,Python,Tensorflow,Mnist,One Hot Encoding,我一直在尝试(解释.cls和.labels at),这只是一个简单的MNIST分类器模型。但我无法完成它,因为Tensorflow中显然缺少一个函数 >>>from tensorflow.examples.tutorials.mnist import input_data >>>data = input_data.read_data_sets("data/MNIST", one_hot=True) >>>one_hot_labels = d

我一直在尝试(解释.cls和.labels at),这只是一个简单的MNIST分类器模型。但我无法完成它,因为Tensorflow中显然缺少一个函数

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

>>>one_hot_labels = data.test.labels #mat shape=(num_images X num_classes)
>>>cls_labels = data.test.cls #mat shape=(num_images X 1)
Traceback (most recent call last):
  File "/home/file.py", line 5, in <module>
    cls_labels = data.test.cls
AttributeError: 'DataSet' object has no attribute 'cls'
我正在Linux上使用Tensorflow 0.10.0,不知道是否删除了.cls选项

如果是这样,是否有一种替代方法可以从一个热向量数组中编码分类器名称数组


谢谢

目前我们使用属性
图像
作为图像数据,使用
标签
作为类(标签)。比如说,

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("data/MNIST", one_hot=True)
# data
images = mnist.test.images
# label
labels = mnist.test.labels

# without one-hot
mnist = input_data.read_data_sets("data/MNIST", one_hot=False)
# original data
images = mnist.test.images.reshape([-1, 28, 28])
print(images.shape)
# label
labels = mnist.test.labels
print(labels)

目前,我们对图像数据使用属性
图像
,对类(标签)使用属性
标签
。比如说,

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("data/MNIST", one_hot=True)
# data
images = mnist.test.images
# label
labels = mnist.test.labels

# without one-hot
mnist = input_data.read_data_sets("data/MNIST", one_hot=False)
# original data
images = mnist.test.images.reshape([-1, 28, 28])
print(images.shape)
# label
labels = mnist.test.labels
print(labels)

您的标签位于这种类型的数组(一个热)中,例如:

array([[ 0.,  0.,  0., ...,  1.,  0.,  0.],
       [ 0.,  0.,  1., ...,  0.,  0.,  0.],
       [ 0.,  1.,  0., ...,  0.,  0.,  0.],
1号。位于数组的位置,其中告诉您哪个标签是

要从该数据中获取整数标签,必须使用以下内容获取索引:

data.test.cls = np.argmax(data.test.labels, axis=1)

您的标签位于这种类型的数组(一个热)中,例如:

array([[ 0.,  0.,  0., ...,  1.,  0.,  0.],
       [ 0.,  0.,  1., ...,  0.,  0.,  0.],
       [ 0.,  1.,  0., ...,  0.,  0.,  0.],
1号。位于数组的位置,其中告诉您哪个标签是

要从该数据中获取整数标签,必须使用以下内容获取索引:

data.test.cls = np.argmax(data.test.labels, axis=1)

我注意到images函数,但是它是像素数据的平坦向量,而不是对应于其one_热向量的整数标签。例如:data.test.labels=[0,0,0,0,0,0,0,1,0,0,0]和data.test.cls=[7]是的,原始
read\u data\u set
函数将MNIST图像转换为一维向量,如果您想要获得原始数据,请对数据进行
整形,然后您就会得到它。如果你想有整数标签,你需要在
read\u data\u set
函数中使用
one\u hot=False
。我注意到images函数,但是它是一个像素数据的平坦向量,而不是对应于其one_热向量的整数标签。例如:data.test.labels=[0,0,0,0,0,0,0,1,0,0,0]和data.test.cls=[7]是的,原始
read\u data\u set
函数将MNIST图像转换为一维向量,如果您想要获得原始数据,请对数据进行
整形,然后您就会得到它。如果你想有整数标签,你需要在
read\u data\u set
函数中使用
one\u hot=False
。我已经修改了代码来说明它们。我发现了一个使用Numpy的解决方法。当您指定一个_hot=True时,您可以使用:np.argmax(data.test.labels,axis=1)将其编码回整数标签数组。我发现了一个使用Numpy的解决方法。当指定一个_hot=True时,可以使用以下命令将其编码回整数标签数组:np.argmax(data.test.labels,axis=1)