Я использую трансферное обучение для распознавания объектов.В качестве базовой модели я использовал обученную модель VGG16 и добавил к ней свой классификатор с помощью Keras.Затем я обучил модель на своих данных, модель работает хорошо.Я хочу увидеть функцию, созданную промежуточными слоями модели для заданных данных.Для этой цели я использовал следующий код:
def ModeloutputAtthisLayer(model, layernme, imgnme, width, height):
layer_name = layernme
intermediate_layer_model = Model(inputs=model.input,
outputs=model.get_layer(layer_name).output)
img = image.load_img(imgnme, target_size=(width, height))
imageArray = image.img_to_array(img)
image_batch = np.expand_dims(imageArray, axis=0)
processed_image = preprocess_input(image_batch.copy())
intermediate_output = intermediate_layer_model.predict(processed_image)
print("outshape of ", layernme, "is ", intermediate_output.shape)
В коде я использовал np.expand_dims
, чтобы добавить одно дополнительное измерение для пакета, поскольку матрица ввода в сеть должна иметь форму (batchsize, height, width, channels)
,Этот код работает нормально.Форма вектора объектов 1, 224, 224, 64
.
Теперь я хочу отобразить это как изображение, для этого я понимаю, что в качестве пакета добавлено дополнительное измерение, поэтому я должен удалить его.После этого я использовал следующие строки кода:
imge = np.squeeze(intermediate_output, axis=0)
plt.imshow(imge)
Однако выдается ошибка:
«Неверные размеры для данных изображения»
Интересно, как я могу отобразить извлеченный вектор объектов в виде изображения?Любое предложение, пожалуйста.