如何创建一个小数据集来测试我的CNN?

时间:2017-03-31 08:32:29

标签: python tensorflow deep-learning training-data

我最近实现了CNN(使用Tensorflow Python API),并使用MNIST数据集对其进行了测试。

现在我想用更大的图像(比如100x100p像素)测试它。

为此,我使用scikit-learn.feature_extraction.image.extract_patches_2d这样只是为了获得N(此处等于10)图像:

from sklearn.feature_extraction import image
import numpy as np
from PIL import Image

HowManyPatches = 10

img = Image.open('./bulldog.jpeg')
imgarray = np.array(img)

patches = image.extract_patches_2d(imgarray, (100, 100), HowManyPatches)

for i in range(HowManyPatches):
    imgpatch = Image.fromarray(patches[i], 'RGB')
    name = 'patch_' + str(i) + '.jpeg'
    imgpatch.save(name)

所以现在我想在我得到的每一个补丁上放一个(随机的,因为它只是为了测试训练时间)标签。

我注意到MNIST数据集是从这种文件中提取的:t10k-images.idx3-ubyte,它们似乎是一种未知类型。所以我想知道,一旦我成功地在我的图像上贴上标签,我可以创建这种文件吗?

总结两个主要问题是: 如何在我的图像上贴上标签? 如何获得我可以使用的数据集,如MNIST数据集?或者可能有一种更简单的方法来创建与MNIST数据集不同的数据集?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

如果您只想测试培训时间而不关心实际分类,可以使用:

x_pattern = np.array([[1 for i in range(100)] for i in range(100)])
x_train = np.array([x_pattern for i in range(100)])
y_train = np.array([1 if i % 2 == 0 else 2 for i in range(100)])

这将为您提供100个所有白色100x100图像和交替标记为1,0的样本。

如果您已经有100x100补丁,则可以在上面的y_train行中设置范围,使其等于您拥有的补丁数量。