我尝试制作一个类似于CIFAR10的数据集。我找到了这个教程: How to create dataset similar to cifar-10
我已经可以创建一个带有1个图像的数据集,但是当我尝试使用多个图像时,我收到了这个错误:
tensorflow.python.framework.errors.InvalidArgumentError: Indices are not valid: not lexicographically sorted or containing repeats.
任何人都可以帮我解决这个问题吗?
这是我的代码:
from PIL import Image
import numpy as np
out =np.empty([20,7501])
for j in xrange(0, 10):
im = Image.open('%d_receipt.jpg' % j)
im = (np.array(im))
r = im[:,:,0].flatten()
g = im[:,:,1].flatten()
b = im[:,:,2].flatten()
label = [0]
out[j] = np.array(list(label) + list(r) + list(g) + list(b),np.uint8)
for i in xrange(0, 10):
im = Image.open('%d_news.jpg' % i)
im = (np.array(im))
r = im[:,:,0].flatten()
g = im[:,:,1].flatten()
b = im[:,:,2].flatten()
label = [1]
j = i + 10
out[j] = np.array(list(label) + list(r) + list(g) + list(b),np.uint8)
out.tofile("data_batch.bin")
答案 0 :(得分:0)
我这样做:
import numpy as np
import scipy.io
mat = scipy.io.loadmat('train_32x32.mat')
data = mat['X']
label = mat['y']
R_data = data[:,:,0,:]
G_data = data[:,:,1,:]
B_data = data[:,:,2,:]
R_data = np.transpose(R_data, (2,0,1))
G_data = np.transpose(G_data, (2,0,1))
B_data = np.transpose(B_data, (2,0,1))
R_data = np.reshape(R_data,(73257,32*32))
G_data = np.reshape(G_data,(73257,32*32))
B_data = np.reshape(B_data,(73257,32*32))
outdata = np.concatenate((label,R_data,G_data,B_data), axis = 1)
step = 10000
for i in range(1,6):
temp = outdata[i*step:(i+1)*step,:]
temp.tofile('SVHN_train_data_batch%d.bin' % i)
print('save data %d' % i)
然后,直接将它直接放在Cifar10 tensorflow示例的列车代码中。
答案 1 :(得分:0)
我也试着按照你在问题中发布的教程,但我无法让它工作,所以我自己做了解决方案。它可以在我的github上找到:https://github.com/jdeepee/machine_learning/tree/master
代码已注释,因此应该很容易遵循。我应该注意它遍历包含多个包含图像的文件夹的主目录。
答案 2 :(得分:0)
下面的代码片段是我为使CIFAR-10适应GTSRB所做的工作。更多细节在这里。 https://github.com/hashkanna/traffic-signs/blob/master/Traffic_Signs_Recognition_binFiles.ipynb
//get tbfabricante
EmpApi.gettbfabricante = function () {
return $http.get(urlBase + '/tbfabricante')
}