Я пытаюсь извлечь объекты из последнего слоя модели VGG16 в Керасе, используя следующий код:
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np
model = VGG16(weights='imagenet', include_top=True )
img_path = 'E:\project\KERAS DEEP\poodle.png'
img = image.load_img(img_path, target_size=(224, 224))
img_data = image.img_to_array(img)
img_data = np.expand_dims(img_data, axis=0)
img_data = preprocess_input(img_data)
model.summary()
model.layers.pop();
model.outputs = [model.layers[-1].output]
model.layers[-1].outbound_nodes = []
feature = model.predict(img_data)[0]
переменная объекта предполагает, что это вектор объектов, но в нем много нулей.думать из-за слоя рэлу.Например, в Matlab извлеченный вектор объектов имеет как положительные, так и отрицательные значения, как я могу получить то же самое с моделью keras?
Код Matlab:
im=imread('poodle.png');
im=imresize(im,[224,224]);
net=vgg16;
trainingFeatures = activations(net, im, 'fc7', ...
'OutputAs', 'rows');
два выходных вектора feature
и trainingFeatures
, как показано ниже (выход Python слева и Matlab справа
А вот и проверенное изображение: