Я выполняю предварительную обработку изображений в форме массива Numpy (28,28, 3). Когда я пытаюсь уместить свои данные, я получаю сообщение об ошибке. Если я пропущу весь предварительно подготовленный фрейм данных, я получу ошибку ValueError: Ошибка при проверке ввода: ожидалось, что conv2d_20_input будет иметь 4 измерения, но получит массив с формой (360, 1)
Когда я передаю одно значение, я получаю ошибку: Ошибка при проверке ввода: ожидалось, что conv2d_16_input будет иметь 4 измерения, но получил массив с формой (28, 28, 3
Я пытался обработать данные. Я попытался индивидуально сбросить модель и тренироваться на 1: 1, и это все еще не работает
Код для предварительной обработки
from tensorflow.python.keras.preprocessing.image import load_img, img_to_array
def read_and_prep_images(img_paths):
z = load_img(img_paths, target_size=(28,28))
z= img_to_array(z)
return z
df['arrays'] = df['filepath'].apply(read_and_prep_images)
создание модели
model = Sequential()
добавление слоев модели
model.add(Conv2D(filters = 24, kernel_size = (5),padding = 'Same',
activation ='relu', input_shape = (28, 28,3)))
model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same',
activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same',
activation ='relu'))
model.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same',
activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256, activation = "relu"))
model.add(Dropout(0.5))
model.add(Dense(10, activation = "softmax"))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Дважды проверьте форму
np.shape(df['arrays'].iloc[0])
(28, 28, 3)
Предварительные данные
X_train, X_test, y_train, y_test = train_test_split(df.arrays, df.label, test_size=0.4, random_state=101)
Фитинг Модель
model.fit(X_train, y_train, batch_size=100, epochs=4, validation_split=0.2)
модель должна соответствовать, и я могу использовать model.predict для новых изображений, которые модель не видела раньше.