2016-03-11 5 views
0

Я пытаюсь сделать набор данных, похожий на CIFAR10. Я нашел этот учебник: How to create dataset similar to cifar-10Как сделать набор данных, похожий на CIFAR10 с несколькими изображениями

Я уже сделать набор данных с 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

Я делаю это так:

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 например.

+0

я мог бы звучащий глупо, но вы можете сказать, как вы получили файл «train_32x32.mat»? Являются ли эти извлеченные черты набора данных, которые мы хотим тренировать? – shivisuper

0

Я тоже старался следовать учебнику, опубликованному в вопросе, однако я не мог заставить его работать, поэтому я сделал свое собственное решение. Его можно найти на моем github здесь: https://github.com/jdeepee/machine_learning/tree/master

Код прокомментирован, поэтому должно быть достаточно легко следовать. Я должен отметить, что он повторяется через главный каталог, содержащий несколько папок, содержащих изображения.

0

Ниже приведен фрагмент, который я сделал для адаптации CIFAR-10 к GTSRB. Подробнее здесь. https://github.com/hashkanna/traffic-signs/blob/master/Traffic_Signs_Recognition_binFiles.ipynb

out = {} 

for i in range(5): 
    bin_val = (i%5) + 1 
    #im = Image.open(X_train[i]) 
    #im = np.array(im) 
    im = X_train[i] 
    r = im[:,:,0].flatten() 
    g = im[:,:,1].flatten() 
    b = im[:,:,2].flatten() 
    label = [y_train[i]] 
    out[bin_val] = np.array(list(label) + list(r) + list(g) + list(b),np.uint8) 

for i in range(5,len(X_train)): 
    bin_val = (i%5) + 1 
    #im = Image.open(X_train[i]) 
    #im = np.array(im) 
    im = X_train[i] 
    r = im[:,:,0].flatten() 
    g = im[:,:,1].flatten() 
    b = im[:,:,2].flatten() 
    label = [y_train[i]] 
    new_array = np.array(list(label) + list(r) + list(g) + list(b),np.uint8) 
    out[bin_val] = np.append(out[bin_val], new_array, 0) 

for bin_val in range(1,6): 
    out[bin_val].tofile("/Users/kanna/Downloads/data_batch_%s.bin"%bin_val) 
Смежные вопросы