Python - 如何使用MNIST预测具有不同形状的np.darray

时间:2017-01-25 18:21:58

标签: python python-3.x machine-learning tensorflow mnist

import numpy as np
import scipy.ndimage
from PIL import Image
import urllib.request

url = 'http://static.bn-static.com/pg/0rmrKX8jCvpmF8b7ab+coivEApi2iNNpgVTrfyFFA0g==.gif'
img = Image.open(urllib.request.urlopen((url)))
img = img.convert('1').convert('L') #convert to graysclae

# Optional to visualize it all:
# plt.imshow(img)
# plt.show()
# a = array(img)
# a = a.transpose()
# np.place(a,a==0,1)
# np.place(a,a==255,0)

# Croping only one number out of it and vectorize it with binary values.
data = array(img.crop((7, 0, 14, 15)))
np.place(data, data == 0, 1)
np.place(data, data == 255, 0)
plt.imshow(data, cmap=plt.cm.binary)
# visualize crop
plt.show()
# visualize matrix
data

我想使用Tensorflow或其他任何方法来预测此裁剪图像中的数字,以便我可以继续这样做,直到可以预测所有数字。

数组属性与MNIST数据库非常不同,因为它不是28x28图像。

我有什么方法可以找出线性变换来为我做什么?

由于

1 个答案:

答案 0 :(得分:1)

您可以在第一次卷积之前添加调整大小操作:

x = tf.image.resize_images(x, [28, 28])

这样可以接受不同的图像尺寸。确保输入数组具有形状:

x.get_shape().as_list() == [ None, width, height, channels]