Изменить форму данных для CNN LSTM - PullRequest
0 голосов
/ 25 марта 2019

У меня проблемы с изменением формы набора данных для модели CNN LSTM. Скажите мои X.shape = (450,224,224,3) и Y.shape = (450,224,224,12), немного объяснения канала: 3 - это количество каналов изображений, а 12 - это количество классов для семантической сегментации.

Теперь я хочу изменить его так, чтобы он стал X.shape = (150,3,224,224,3) и Y.shape = (150,3,224,224,12) для подачи в модель CNN + LSTM.

Я уже пробовал с np.reshape, но, похоже, не работает. Ниже моя попытка. Это мой первый проект с Keras, Python, для меня все еще ново. Надеюсь получить полезные советы от вас, ребята.

def getImageArr( path , width , height ):
    img = cv2.imread(path, 1)
    img = np.float32(cv2.resize(img, ( width , height ))) / 127.5 - 1
    return img

def getSegmentationArr( path , nClasses ,  width , height  ):

    seg_labels = np.zeros((  height , width  , nClasses ))
    img = cv2.imread(path, 1)
    img = cv2.resize(img, ( width , height ))
    img = img[:, : , 0]

    for c in range(nClasses):
        seg_labels[: , : , c ] = (img == c ).astype(int)
    ##seg_labels = np.reshape(seg_labels, ( width*height,nClasses  ))
    return seg_labels




images = os.listdir(dir_img)
images.sort()
segmentations  = os.listdir(dir_seg)
segmentations.sort()    
X = []
Y = []
for im , seg in zip(images,segmentations) :
    if im != '.DS_Store' and seg != '.DS_Store':
        X.append( getImageArr(dir_img + im , input_width , input_height )  )
        Y.append( getSegmentationArr( dir_seg + seg , n_classes , output_width , output_height )  )

X, Y = np.array(X), np.array(Y)
np.reshape(X, (150,3,224,224,3))
np.reshape(Y, (150,3,224,224,12))
print(X.shape,Y.shape)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...