从MNIST数据集中选择随机图像

时间:2018-04-01 21:02:09

标签: tensorflow mnist

首先,我必须承认我对python和tensorflow的经验有限。我正在寻找一些关于操纵从张量流示例导入的MNIST图像的支持。

我想要的是以下内容:

  1. 从tensorflow.examples.tutorials.mnist
  2. 导入MNIST数据集
  3. 将来自MNIST的一半随机选择的图片存储在一个阵列中,以便我可以操作它
  4. 我正在编写的代码如下

    import tensorflow as tf
    import numpy as np
    from tensorflow.examples.tutorials.mnist import input_data
    data = input_data.read_data_sets('data/MNIST/',one_hot=True)
    import random
    
    rndm_imgs = random.sample(data.test.images, len(data.test.images)/2)
    

    我收到以下错误

        Traceback (most recent call last):
      File "<string>", line 7, in <module>
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/random.py", line 320, in sample
        raise TypeError("Population must be a sequence or set.  For dicts, use list(d).")
    TypeError: Population must be a sequence or set.  For dicts, use list(d).
    

    任何可以支持的人?

    提前致谢

1 个答案:

答案 0 :(得分:0)

使用python时的一个好习惯是使用python -i program.py运行程序,这样就可以使用shell以交互方式检查每个变量的含义。如果你打印data.test.images,你会发现它是一个n-drayray(n维numpy数组)的形状(10000,784)。所以基本上它是一个矩阵,其中每一行都是一个图像(mnist是28x28,因此是784)。

如果你想使用python的内置random.sample函数进行采样,将数据矩阵转换为一个列表,使每个元素都是一个图像(784维度或元素的向量)。

data_test_list = list(data.test.images)
test_samples = random.samples(data_test_list, len(data.test.images)/2)
test_samples = np.array(test_samples)

请注意,在获取我们的示例之后,我们将结果转换回numpy数组,因为这通常是您想要在tensorflow的上下文中处理的。