Keras: «ValueError: Ошибка при проверке цели» - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь построить модель, которая будет классифицировать видео по определенной категории.

Для этого я использовал предварительно обученную модель - InceptionV3 и обучил ее на собственных данных. Процесс обучения был успешно завершен, но когда я попытался классифицировать видео, я получил ошибку:

ValueError: Error when checking : expected input_1 to have shape (None, None, None, 3) but got array with shape (1, 1, 104, 2048)

Однако для прогноза я использовал то же видео, что и для тренировочного процесса.

Определенная модель:

train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    horizontal_flip=True,
    rotation_range=10.,
    width_shift_range=0.2,
    height_shift_range=0.2)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
    os.path.join('data', 'train'),
    target_size=(299, 299),
    batch_size=32,
    classes=data.classes,
    class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
    os.path.join('data', 'test'),
    target_size=(299, 299),
    batch_size=32,
    classes=data.classes,
    class_mode='categorical')

base_model = InceptionV3(weights=weights, include_top=False)

# add a global spatial average pooling layer
x = base_model.output
x = GlobalAveragePooling2D()(x)
# let's add a fully-connected layer
x = Dense(1024, activation='relu')(x)
# and a logistic layer
predictions = Dense(len(data.classes), activation='softmax')(x)

# this is the model we will train
model = Model(inputs=base_model.input, outputs=predictions)
model.fit_generator(
    train_generator,
    steps_per_epoch=100,
    validation_data=validation_generator,
    validation_steps=10,
    epochs=nb_epoch,
    callbacks=callbacks)

Предсказания:

#extract features from frames of video

files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
    features = extractor_model.extract(f)
    sequence.append(features)

np.save(sequence_path, sequence)

sequences = np.load("data_final.npy")

#convert numpy array tp 4 dimensions
sequences = np.expand_dims(sequences, axis=0)
sequences = np.expand_dims(sequences, axis=0)

prediction = model.predict(sequences)

Особенности экстрактора:

def extract(self, image_path):
    #print(image_path)
    img = image.load_img(image_path, target_size=(299, 299))
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    x = preprocess_input(x)

    # Get the prediction.
    features = self.model.predict(x)

    if self.weights is None:
        # For imagenet/default network:
        features = features[0]
    else:
        # For loaded network:
        features = features[0]

    return features

Керас жалуется, что фигуры нет ни одного ...

Однако я ожидаю получить некоторые прогнозы модели, но получил эту ошибку. Пожалуйста помоги. Спасибо

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