Не удалось найти адаптер данных, который может обрабатывать ввод: <class 'numpy.ndarray'>, (<class 'list'>, содержащий значения типов {«<class 'int'>»})

12
history = model.fit(X, y, batch_size=32, epochs=40, validation_split=0.1)

проблема линии была в этом

Отображение ошибки:

ValueError: Failed to find data adapter that can handle input: <class 'numpy.ndarray'>, (<class 'list'> containing values of types {"<class 'int'>"})
Нео
источник
Пожалуйста, отредактируйте свой вопрос и добавьте больше кода и контекста, а также полную трассировку ошибок. Читайте, как спросить .
Валентино
Что такое model? Он не является частью какого-либо из отмеченных пакетов. Показать полный трекбек.
hpaulj

Ответы:

11

ValueError в TensorFlow

https://pythonprogramming.net/convolutional-neural-network-deep-learning-python-tensorflow-keras/

Я попробовал следующий код и работал для меня:

IMG_SIZE = 50

X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)

y = np.array(y)

history = model.fit(X, y, batch_size=32, epochs=40, validation_split=0.1)
Ростам
источник
Я должен был также сделать y = np.array (y).
Бикрам
Спасибо. y = np.array (y) добились цели.
Сайкат Холдер
8

Так что это происходит с более новой версией tenorflow, я не уверен, откуда, но я был на версии 2.0.0, и то же самое произошло

Я предполагаю, что вы конвертируете только массив X в массив numpy. Вместо этого попробуйте преобразовать X и y в массив numpy, используя dtype в качестве np.uint8.

Это должно решить проблему

VIKI
источник
Спасибо за помощь, теперь она отлично работает для моей программы. Это показывает, что я собираюсь понизить свой тензорный поток, и все, кажется, работает
Neo
6

Я столкнулся с той же проблемой. Оказывается, это было в виде списка. Я должен был преобразовать поля в массив, как:

training_padded = np.array(training_padded)
training_labels = np.array(training_labels)
testing_padded = np.array(testing_padded)
testing_labels = np.array(testing_labels)

это оно!

Atharva
источник
2

Вики уже сказала хороший ответ. Я добавляю больше информации. Раньше он также приводил к краху хоста colab, прежде чем я добавил оболочки np.array ().

# Need to call np.array() around pandas dataframes.
# This crashes the colab host from TF attempting a 32GB memory alloc when np.array() wrappers are not used around pandas dataframes.
# Wrapping also cures warning about "Failed to find data adapter that can handle input"
history = model.fit(x=np.array(tr_X), y=np.array(tr_Y), epochs=3, validation_data=(np.array(va_X), np.array(va_Y)), batch_size=batch_size, steps_per_epoch=spe, validation_freq=5)

Сбой хоста из-за нехватки памяти как-то связан с этим:

Объяснение плотного градиентного потока?

Джеффри Андерсон
источник
2

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

y = np.array (y)

Махмуд
источник
1

Ответ Махмуда исправляет ошибку TensorFlow Tutorial «Базовая регрессия: прогнозирование эффективности использования топлива» в разделе [30]. Это 2 строки:

Изменить это:

example_batch = normed_train_data[:10]
example_result = model.predict(example_batch)

К этому:

example_batch = np.array(normed_train_data[0:10]) 
example_result = model.predict(example_batch)

Спасибо Махмуд

user2074145
источник
0

Просто введите приведение массивов.

например:

import numpy as np
features = np.array(features,dtype='float64')
labels = np.array(labels, dtype ='float64')
Икбал Хоссейн Джой
источник