Ошибка типа: __массив__() принимает 1 позиционный аргумент, но было дано 2 (Керас классификации изображений)

#python #numpy #tensorflow #keras #python-imaging-library

Вопрос:

Как устранить эту проблему? Я пытался установить dtype=None в image.img_to_array method .

 import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import matplotlib.pyplot as plt
from keras.preprocessing import image

image_size = (180, 180)
batch_size = 32


model = keras.models.load_model('best_model.h5')

img = keras.preprocessing.image.load_img(
    "GarnetCreek_7-15-2019.jpeg", target_size=image_size
)

img_array = image.img_to_array(img)
img_array = tf.expand_dims(img_array, 0)  # Create batch axis

predictions = model.predict(img_array)
score = predictions[0]
 

Это вызывает следующую ошибку:

 Traceback (most recent call last):
img_array = image.img_to_array(img, dtype=None)
return image.img_to_array(img, data_format=data_format, **kwargs)
x = np.asarray(img, dtype=dtype)
    return array(a, dtype, copy=False, order=order)
TypeError: __array__() takes 1 positional argument but 2 were given
 

Кто-нибудь видел это раньше? Большое спасибо!

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

1. Что это за тип и форма img ? Пожалуйста, расскажите мне версию ПИЛА. import PIL тогда PIL.__version__ . И попробуйте заменить from keras.preprocessing import image на from tensorflow.keras.preprocessing import image

2. Форма изображения (686, 1140, 3). Версия PIL-8.3.0. Я попытался заменить импорт, как предлагалось, но проблема не исчезла. Спасибо!

3. Иногда работает понижение подушки с 8.3.0 до 8.2. Попробовать это. Понизить рейтинг PIL до 8.2.0.

4. Ух ты, это сработало! Не могу отблагодарить тебя как следует

Ответ №1:

Эта ошибка иногда возникает из-за ошибки, Pillow 8.3.0 как здесь. (Вы не можете использовать import PIL непосредственно в своем коде, однако некоторые библиотеки, например, tf.keras.preprocessing.image.load_img используются PIL внутри)

Итак, понижение рейтинга с PIL 8.3.0 до 8.2.0 может сработать.

Проверьте PIL версию:

 import PIL
print(PIL.__version__)
 

Если это 8.3.0, то вы можете понизить рейтинг до 8.2.0:

 !pip install pillow==8.2.0
 

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

1. Я пытался понизить рейтинг,но безрезультатно. Платформа tf2.5,py3.7