ValueError: Вход в `.fit()` должен иметь ранг 4. Получен массив с формой: (10, 20, 50, 50, 1)

Моя модель

model.add(Conv3D(nb_filters[0], kernel_dim1=nb_conv[0], 
kernel_dim2=nb_conv[0], kernel_dim3=nb_conv[0],
input_shape=(20, 50, 50,1), activation='relu'))
model.add(MaxPooling3D(pool_size=(nb_pool[0], nb_pool[0], nb_pool[0])))
model.add(Conv3D(nb_filters[1], kernel_dim1=nb_conv[0], 
kernel_dim2=nb_conv[0], kernel_dim3=nb_conv[0],activation='relu'))
model.add(MaxPooling3D(pool_size=(nb_pool[0], nb_pool[0], nb_pool[0])))
model.add(Dropout(0.8))
model.add(Flatten())
model.add(Dense(1024, init='normal', activation='relu'))
model.add(Dropout(0.8))
model.add(Dense(nb_classes,init='normal'))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adadelta',
metrics['accuracy'])

Мои входные массивы numpy

train_data=np.load('D:/muchdata-50-50-20.npy')
train=train_data[-10:]
test=train_data[-2:]
train1 = np.array([i[0] for i in train]).reshape(-1,20,50,50,1)
y_train =  [i[1] for i in train]
testx=np.array([i[0] for i in test]).reshape(-1,20,50,50,1)
testy=[i[1] for i in test]

Вот функция предварительной обработки

datagen = ImageDataGenerator(featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)

Вот подходит

datagen.fit(train1)

когда я пытаюсь запустить, я получаю сообщение об ошибке, подобное этомувведите здесь описание изображения


person Manigandan v    schedule 02.05.2017    source источник
comment
см. это: stackoverflow .com/questions/35673874/   -  person parsethis    schedule 02.05.2017
comment
@putonspectacles я не понимаю, как использовать это в этом коде ... потому что мой conv3d input_data ожидает (20,50,50,1)......если вы знаете, как, пожалуйста, отредактируйте мой код и опубликуйте его   -  person Manigandan v    schedule 02.05.2017


Ответы (1)


Для генератора данных изображения форма изображения должна быть установлена ​​​​с рангом 4. Итак, я думаю, что вашу команду изменения формы следует изменить (мое предложение). Для изменения формы -1 это фактически означает преобразование многомерности в одно измерение.

person Bharat Natrayn    schedule 17.07.2021