Неверный размер при отображении изображения

1

Я пытался извлечь скрытый слой VGG16 и отобразить карту объектов в Keras. То, что я пытаюсь сделать, - это получить block1_conv1 функций block1_conv1 и отобразить ее. Но, к сожалению, я получаю следующую ошибку:

TypeError: Invalid dimensions for image data

Вы найдете следующий код:

from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
from keras.models import Model
import matplotlib.pyplot as plt
import numpy as np
from keras import backend as K


img_path = "bombiliki.jpeg"
img = image.load_img (img_path, target_size=(224,224))
imgArr = image.img_to_array (img)
imgArr = np.expand_dims(imgArr, axis=0)
img = preprocess_input (imgArr)


model = VGG16(weights='imagenet', include_top=False)
layer_name = 'block1_conv1'

interMediateOutput = Model(inputs=model.inputs, outputs=model.get_layer(layer_name).output)
features = interMediateOutput.predict (img)
print ("Shape of the feature is ", features.shape)
pic = features[:,:,:,1]
print ("pic shape ", pic.shape)
data = np.asarray(pic)
print ("Data Dimension is ", data.ndim)

plt.imshow (pic)
plt.show()

Выход:

('Shape of the feature is ', (1, 224, 224, 64))
('pic shape ', (1, 224, 224))
('Data Dimension is ', 3)
Traceback (most recent call last):
  File "vgg16.py", line 28, in <module>
    plt.imshow (pic)
  File "/home/navals/anaconda2/envs/musarni/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3205, in imshow
    **kwargs)
  File "/home/navals/anaconda2/envs/musarni/lib/python2.7/site-packages/matplotlib/__init__.py", line 1855, in inner
    return func(ax, *args, **kwargs)
  File "/home/navals/anaconda2/envs/musarni/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 5487, in imshow
    im.set_data(X)
  File "/home/navals/anaconda2/envs/musarni/lib/python2.7/site-packages/matplotlib/image.py", line 653, in set_data
    raise TypeError("Invalid dimensions for image data")
TypeError: Invalid dimensions for image data
  • 0
    IMG загружен? Вы можете построить изображение?
  • 0
    Нет, изображение не отображается. Я получил ошибку «ypeError: Неверные размеры для данных изображения»
Показать ещё 1 комментарий
Теги:
matplotlib
keras
conv-neural-network
neural-network

1 ответ

0

Метод predict возврат формы (n_samples, model_output_shape...). Поэтому, если вы даете ему один образец, чтобы получить прогнозы для данного образца, вы должны сделать:

pic = features[0]

И особенно в вашем примере, если вы хотите выбрать выход определенного фильтра, вам нужно указать его индекс как четвертую ось:

pic = features[0, :, :, desired_filter_index]

Они вы можете легко построить:

plt.imshow(pic)
  • 0
    Я попытался с pic = features [0:,:,:, 4], все та же ошибка.
  • 1
    @Whoami Первая ось не должна быть 0: она должна быть 0 .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню