Как решить AttributeError: объект ‘str’ не имеет атрибута ‘ndim’?

#python

#python

Вопрос:

Я хочу протестировать свою модель keras. Но я столкнулся с этой проблемой. У меня есть изображение для проверки в «пути».

 path = 'C:\Users\Администратор\AppData\Local\Programs\Python\Python36-32\577793008_ef4345205b.jpg'

model = keras.models.load_model('C:\Users\Администратор\AppData\Local\Programs\Python\Python36-32\model1.h5')
predictions = model.predict(path)
print (predictions[0])
 

Ошибка.

 Traceback (most recent call last):
  File "C:UsersАдминистраторAppDataLocalProgramsPythonPython36-32load1.p
y", line 11, in <module>
    predictions = model.predict(path)
  File "C:UsersАдминистраторAppDataLocalProgramsPythonPython36-32libsit
e-packageskerasenginetraining.py", line 1441, in predict
    x, _, _ = self._standardize_user_data(x)
  File "C:UsersАдминистраторAppDataLocalProgramsPythonPython36-32libsit
e-packageskerasenginetraining.py", line 579, in _standardize_user_data
    exception_prefix='input')
  File "C:UsersАдминистраторAppDataLocalProgramsPythonPython36-32libsit
e-packageskerasenginetraining_utils.py", line 99, in standardize_input_data
    data = [standardize_single_array(x) for x in data]
  File "C:UsersАдминистраторAppDataLocalProgramsPythonPython36-32libsit
e-packageskerasenginetraining_utils.py", line 99, in <listcomp>
    data = [standardize_single_array(x) for x in data]
  File "C:UsersАдминистраторAppDataLocalProgramsPythonPython36-32libsit
e-packageskerasenginetraining_utils.py", line 34, in standardize_single_array

    elif x.ndim == 1:
AttributeError: 'str' object has no attribute 'ndim'
 

Комментарии:

1. Вы не должны передавать path model.predict() методу. Просто запустите model.predict() , и он должен работать

2. Из документов : » predict(x, ...) x : Входные образцы. Это может быть: массив Numpy (или подобный массиву) или список массивов (в случае, если модель имеет несколько входных данных). Тензор тензорного потока или список тензоров (в случае, если модель имеет несколько входных данных). Набор данных tf.data . Генератор или keras.утилиты. Экземпляр последовательности » . Но это не может быть строкой…

Ответ №1:

predict Метод может принимать несколько типов входных данных, но не строку. Он не может напрямую прочитать файл на основе пути.

Вам нужно преобразовать этот файл во все, что может быть прочитано Model классом. Прочитайте файл и сделайте содержимое, например, массивом.

Комментарии:

1. Я проверю. Спасибо!