Как перевести данные в правильный размерный формат? - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь обучить нейронную сеть для классификации изображений. У меня проблемы с получением моих данных в правильном формате массива. Для подачи в сеть мой массив должен иметь размер (9068,184,184,1). Проблема в том, что если я проверю длину массива, он просто возвращает (9068,). Если я проверяю длину отдельного элемента в массиве, он возвращает (184,184,1). Как я могу сделать так, чтобы длина всего массива была четырехмерной (9068,184,184,1), чтобы моя нейронная сеть могла принимать это как ввод?

Ниже мой код. У меня есть (9068,2) фрейм данных с именами файлов. Я беру имя файла, считываю его в массив в виде информации о пикселях и сохраняю его в другом массиве.

path = '/home/vivek/Downloads/kaggle_ndsb2-master/data_segmenter_trainset/'

for ii in pairing_table['image']:    
    new_path = os.path.join(path,ii)
    img = Image.open(new_path)
    print type(ii)

for ii in range(0,len(image_table['image'])):
    new_path = os.path.join(path,image_table['image'][ii])
    img = Image.open(new_path)
    img2 = np.array(img.getdata()).reshape(184, 184, -1)
    #print(type(img))
    image_table['image'][ii] = img2
    img.close()


for ii in range(0,len(image_table['mask'])):
    new_path = os.path.join(path,image_table['mask'][ii])
    img = Image.open(new_path)
    img2 = np.array(img.getdata()).reshape(184, 184, -1)
    image_table['mask'][ii] = img2
    img.close()

print(image_table['image'][0].shape)  #this is returning (184,184,1)
print(image_table['image'].shape)   #this is returning (9068,)   should be (9068,184,184,1)
print(image_table['mask'][0].shape)  #this is returning (184,184,1)
print(image_table['mask'].shape)   #this is returning (9068,)   should be (9068,184,184,1)
...