Не удалось преобразовать массив NumPy в тензор (Неподдерживаемый тип объекта numpy.ndarray) ошибка

#python #numpy #tensorflow

#питон #тупица #тензорный поток

Вопрос:

Я пытаюсь обучить модель тензорного потока. Но я ошибся.

Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).

Вот мои подходящие коды:

model.fit(self.datas.trainImages, self.datas.trainLabels,self.datas.batch_size, epochs =self.datas.epochs)

Мой self.datas.trainImages-это numpy.array (), его форма (16), в нем 16 образцов, а их размеры 28×28, это набор данных mnist.

 self.train_dataset = [[cv2.imread(image0),0],[cv2.imread(image1),1],[cv2.imread(image2),2],[...],[...]] self.trainDataset = numpy.array(self.train_dataset)   self.trainImages, self.trainLabels = numpy.asarray(self.trainDataset[:,0])/255,self.trainDataset[:,1] #.astype(numpy.float32)/    self.val_dataset = [[cv2.imread(image0),0],[cv2.imread(image1),1],[cv2.imread(image2),2],[...],[...]]  self.valDataset = numpy.array(self.val_dataset)#.astype(numpy.float32) self.valImages, self.valLabels = numpy.asarray(self.valDataset[:,0])/255,self.valDataset[:,1] #.astype(numpy.float32)/255     

Я попытался использовать astype или numpy.ndarray, но получил еще одну ошибку. Я уверен, что все данные в self.datas.trainImages являются числами с плавающей точкой и имеют одинаковую форму.

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

1. Каковы были «еще одни ошибки». В чем дело trainImages.dtype ?

2. @hpaulj Я проверил, что это объект, но его значения-число.

3. @hpaulj если я преобразую dtype в numpy.float 32, я получу эту ошибку : setting an array element with a sequence.

4. Это говорит мне о том, что массив имеет object тип dtype, с элементами, которые различаются по форме. Он не может быть преобразован в многомерный числовой массив dtype. Что является корнем ошибки преобразования тензора.

5. @hpaulj Я проверил формы элементов в self.trainImages, и все они имеют одинаковый размер (28,28)

Ответ №1:

Можно ли было бы распечатать какой-то тип вывода об ошибке?

Лично у меня была аналогичная проблема, и, покрыв свой ввод «np.stack ()», он добавил дополнительное измерение, изменил форму массива и позволил ему работать.

т.е.

 images = np.stack(self.data.trainImages)  

ИЗМЕНИТЬ: Удалена не относящаяся к делу информация

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

1. Спасибо за ваш ответ, ваш первый ответ решил мою проблему. Но это странно, потому что я использовал тот же метод раньше, может быть, 4-6 месяцев, и он работал, и я не обновил свою версию tensorflow. Я получил еще одну ошибку, я открою новый пост для новой ошибки.

2. Извините, я неправильно прочитал ваш вызов fit (), вторая часть моего ответа была для 2 входов и 1 выхода.

3. Не проблема, я понял, что ты имеешь в виду, еще раз спасибо за все.