Пишу нейронную сеть для распознавания цифр, вылезла ошибка - не могу разобраться как изменить размерность массива, код ниже
import numpy as np
from keras.utils import np_utils
from keras.models import model_from_json
from keras.preprocessing import image
import matplotlib.pyplot as plt
%matplotlib inline
json_file = open("fully_mesh_network.json", "r")
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
loaded_model.load_weights("fully_mesh_network.h5")
loaded_model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
img_path = '2.png'
img = image.load_img(img_path, target_size=(28,28), grayscale=True)
x = image.img_to_array(img)
x = 255 - x
x/= 255
x = np.expand_dims(x, axis = 0)
prediction = loaded_model.predict(x)
prediction = np_utils.categorical_probas_to_classes(prediction)
print(prediction)
---------------------------------------------------------------------------
ValueError: Error when checking : expected dense_1_input to have 2 dimensions, but got array with shape (1, 28, 28, 1)
Ответ
Судя по ошибке ваша модель ожидает 2D массив на входе.
попробуйте так:
x = x.reshape(28, 28)
PS метод np_utils.categorical_probas_to_classes() - отсутствует в современных версиях Keras. Вместо него можно попробовать использовать метод: keras.utils.to_categorical()
Комментариев нет:
Отправить комментарий