我在看 this Tensorflow tutorial

在教程中,图像神奇地读取如下:

mnist = learn.datasets.load_dataset("mnist")
train_data = mnist.train.images

我的图像放在两个目录中:
../input/test/
../input/train/

它们都有 *.jpg 结尾。

那么如何将它们读入我的程序呢?

我不认为我可以使用 learn.datasets.load_dataset 因为这似乎采用了专门的数据集结构,而我只有带有图像的文件夹。

最佳答案

mnist.train.images 本质上是一个形状为 [55000, 784] 的 numpy 数组。其中,55000 是图像的数量,784 是每张图像的像素数(每张图像为 28x28)

您需要根据您的数据创建一个类似的 numpy 数组,以防您想运行此确切代码。因此,您需要遍历所有图像,将 read image 作为 numpy 数组,将其展平并创建大小为 [num_examples, image_size] 的矩阵

下面的代码片段应该这样做:

import os
import cv2
import numpy as np
def load_data(img_dir):
    return np.array([cv2.imread(os.path.join(img_dir, img)).flatten() for img in os.listdir(img_dir) if img.endswith(".jpg")])

启用调试的更全面的代码:
import os
list_of_imgs = []
img_dir = "../input/train/"
for img in os.listdir("."):
    img = os.path.join(img_dir, img)
    if not img.endswith(".jpg"):
        continue
    a = cv2.imread(img)
    if a is None:
        print "Unable to read image", img
        continue
    list_of_imgs.append(a.flatten())
train_data = np.array(list_of_imgs)

笔记:
如果您的图像不是 28x28x1(黑白图像),则需要更改神经网络架构(在 cnn_model_fn 中定义)。本教程中的架构是一种玩具架构,仅适用于像 MNIST 这样的简单图像。 Alexnet 可能是开始处理 RGB 图像的好地方。

关于python - 将 mnist 图像读入 Tensorflow,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44933096/

10-12 22:53