Я использую модель нейронной сети на некоторых изображениях.Первоначально, для обучения, я преобразовал все изображения в кадр данных pandas размером (# of images in the dataset) x r x g x b
, где r
, g
, b
- это значения цвета каждого изображения.Теперь, когда я пытаюсь протестировать модель на одном внешне загруженном изображении, он выдает ошибку измерения, поскольку размер изображения, очевидно, составляет всего r x g x b
.Как добавить количество изображений в качестве измерения в это изображение?
РЕДАКТИРОВАТЬ: Вот код:
#load the data as a pandas data frame
import pandas as pd
dataset = pd.read_csv(os.path.join(data_path, 'data.csv'))
# split into input (X) and output (Y) variables
X = dataset.values[:,0]
Y = dataset.values[:,1]
# Load all the images and resize them into a single numpy array of consistent dimension
from scipy.misc import imresize
from scipy.misc import imread
import numpy as np
temp = []
for img_name in X:
img_path = os.path.join(data_dir, 'Train', img_name)
img = imread(img_path)
img = imresize(img, (32, 32))
img = img.astype('float32')
temp.append(img)
X = np.stack(temp)
# Convert the data classes from words into a number format readable by the program
from sklearn.preprocessing import LabelEncoder
lb = LabelEncoder()
Y = lb.fit_transform(Y)
Y = keras.utils.np_utils.to_categorical(Y)
# Split the data into 67% for training and 33% for testing
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.33)
### Define the neural network model
### Compile and train the model on the data
### Evaluate it
# Test it on an externally downloaded image
img = imread(os.path.join(image_folder, downloaded_image)).astype('float32')
plt.imshow(imresize(img, (128, 128)))
print('X_train shape: ', X_train.shape)
print('Downloaded image shape: ', img.shape)
Это возвращает:
X_train shape: (13338, 32, 32, 3)
Downloaded image shape: (448, 720, 3)
Я хочу, чтобы форма загруженного изображения была (1, 448, 720, 3), чтобы она соответствовала размерам формы X_train
, потому что, когда я пытаюсь предсказать класс загруженного изображения,возвращает ошибку измерения:
pred = cnn_model.predict_classes(img)
print('Predicted:', lb.inverse_transform(pred))
Возвращает:
ValueError: Error when checking : expected conv2d_71_input to have 4 dimensions, but got array with shape (960, 640, 3)