如何以mnist数据库的格式生成图像?

时间:2015-03-01 13:39:14

标签: arrays matlab

我需要在Matlab中使用神经网络对手写图像进行测试。当我看到来自MNIST的训练图像中包含的数据时,我发现它是一个不同灰度级的数组,如:

Columns 343 through 351

         0   -0.0240    0.4002    0.6555    0.0235   -0.0062         0         0         0

  Columns 352 through 360

         0         0         0         0         0         0         0         0         0

  Columns 361 through 369

         0         0         0   -0.0079    0.1266    0.3272   -0.0233    0.0005

对应于20x20图像,展开为1 * 400维阵列。

我已经下载了jpeg格式的图片并执行了以下操作:

im=imread('image.jpg');
gi=rgb2gray(im);
gi=gi(:);
gi=gi';

生成一个数组gi,表示< 1 * 400 uint8&gt ;,当我把它放在Matlab中时,uint8的最后一部分没有出现在MNIST样本中。当我检查它的数组时,它显示以下值:

第289至306栏

58  105  128  133  142  131   76   21    1    0    3    0    2    4   17   12    7    0

  Columns 307 through 324

    1   15   42   75   97  105   98   73   31    4    1    0    0    0    0    2    4    3

  Columns 325 through 342

    0    0    1    4   21   37   55   59   46   26    9    0    0    0    0    0    0    0

  Columns 343 through 360

    1    1    0    0    0    1    7   14   21   21   14    5    0    0    0    0    0    0

  Columns 361 through 378

    0    0    0    0    0    0    0    0    0    1    2    1    0    0    0    2    0    0

当我想象它们时一切都很好,但是当我想运行我的程序时,会出现以下消息:

??? Error using ==> mtimes
MTIMES is not fully supported for integer classes. At least one input must be scalar.

Error in ==> predict at 15
h1 = sigmoid([ones(m, 1) X] * Theta1');

Error in ==> ex4 at 241
pred = predict(Theta1, Theta2, gi);

即使使用MNIST数据的随机样本测试我的程序时也不会出现这种情况;有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

imfile = 'image.jpg';
im = double(rgb2gray(imread(imfile))); % double and convert to grayscale
im = imresize(im,[20,20]);  % change to 20 by 20 dimension
im = im(:); % unroll matrix to vector
im = im./max(im); 

请注意,MNIST数据集旨在成为需要最少预处理的良好数据集,而图像实际上最初是黑白(双层),而您使用的是彩色图像。他们还进行了规范化和其他预处理,以制作漂亮的28 x 28图像数据集,我上面的简短代码片段不太可能与MNIST数据集一样好,只是为了尝试修复你的错误。

您的具体错误很可能是因为您没有使用double()。 您可能还会遇到更多错误,因为您的代码需要正确的维度,这可以使用imresize来实现。

有关MNIST数据集的更多信息,请点击此处: http://yann.lecun.com/exdb/mnist/