Tensorflow TypeError: объект 'numpy.ndarray' не вызывается - PullRequest
0 голосов
/ 26 июня 2019

при попытке предсказать модель я получаю эту ошибку numpy.ndarray. Это может быть возвращающим оператором функции prepare.что можно сделать, чтобы избавиться от этой ошибки.import cv2 import tenorflow, так как tf

CATEGORIES = ["Dog", "Cat"]


def prepare(filepath):
    IMG_SIZE = 50  # 50 in txt-based
    img_array = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE)
    new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
    return new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 1)


model = tf.keras.models.load_model("64x3-CNN.model")

prediction = model.predict([prepare('dog.jpg')])
print(prediction)  # will be a list in a list.

пытался указать полный путь, но ошибка сохраняется.

TypeError                                 Traceback (most recent call last)
<ipython-input-45-f9de27e9ff1e> in <module>
     15 
     16 prediction = model.predict([prepare('dog.jpg')])
---> 17 print(prediction)  # will be a list in a list.
     18 print(CATEGORIES[int(prediction[0][0])])

TypeError: 'numpy.ndarray' object is not callable

Ответы [ 2 ]

2 голосов
/ 26 июня 2019

Не уверен, как выглядит остальная часть вашего кода. Но если вы используете «печать» в качестве переменной в Python 3, вы можете получить эту ошибку:

import numpy as np
x = np.zeros((2,2))
print = np.ones((2,2))
print(x)

Выход:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'numpy.ndarray' object is not callable
1 голос
/ 30 июня 2019

Этот тип ошибок чаще всего возникает при попытке печати массива вместо простых строк или отдельных переменных, поэтому я бы порекомендовал вам изменить:

17 print(prediction)  # will be a list in a list.
 18 print(CATEGORIES[int(prediction[0][0])])

Тогда вы получите:

17 print(str(prediction))  # will be a list in a list.
 18 print(str(CATEGORIES[int(prediction[0][0])]))
...