Особенности извлечения Keras VGGFace

Я пытаюсь извлечь функции из слоя свертки модели VGGFace, используя TensorFlow и Keras.

Это мой код:

# Layer Features
layer_name = 'conv1_2' # Edit this line
vgg_model = VGGFace() # Pooling: None, avg or max
out = vgg_model.get_layer(layer_name).output
vgg_model_new = Model(vgg_model.input, out)

def main():
    img = image.load_img('myimage.jpg', target_size=(224, 224))
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    x = utils.preprocess_input(x, version=1)
    preds = vgg_model_new.predict(x)
    print('Predicted:', utils.decode_predictions(preds))
    exit(0)

Однако в строке print('Predicted:', utils.decode_predictions(preds)) я получаю следующую ошибку:

Message=decode_predictions ожидает пакет прогнозов (т.е. двумерный массив формы (выборки, 2622)) для V1 или (выборки, 8631) для V2.Найден массив с формой: (1, 224, 224, 64)

Я просто хочу извлечь функции, мне не нужно классифицировать мои изображения на данный момент. Этот код основан на https://github.com/rcmalli/keras-vggface.


person Eutherpy    schedule 14.06.2019    source источник


Ответы (1)


Вы не должны использовать utils.decode_predictions(preds) там, потому что это только для классификации. Вы можете увидеть определение функции здесь https://github.com/rcmalli/keras-vggface/blob/master/keras_vggface/utils.py#L66

Если вы хотите распечатать характеристики, используйте print('Predicted:',preds)

person Ha Bom    schedule 14.06.2019