У меня проблемы с изменением формы набора данных для модели 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)