#python #python_3x #нейронные_сети #numpy #keras
Пишу нейронную сеть для распознавания цифр, вылезла ошибка - не могу разобраться как изменить размерность массива, код ниже 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)
Ответы
Ответ 1
Судя по ошибке ваша модель ожидает 2D массив на входе. попробуйте так: x = x.reshape(28, 28) PS метод np_utils.categorical_probas_to_classes() - отсутствует в современных версиях Keras. Вместо него можно попробовать использовать метод: keras.utils.to_categorical()
Комментариев нет:
Отправить комментарий