无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)错误

Posted

技术标签:

【中文标题】无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)错误【英文标题】:Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray) error 【发布时间】:2022-01-10 03:21:18 【问题描述】:

我尝试训练一个张量流模型。但我得到了错误。

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 个样本,它们的大小是 28x28,它是 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 中的所有数据都是浮点数并且具有相同的形状。

【问题讨论】:

“另一个错误”是什么。 trainImages.dtype 是什么? @hpaulj 我检查它是对象,但它的值是数字。 @hpaulj 如果我将 dtype 转换为 numpy.float 32,我会收到此错误:setting an array element with a sequence. 这告诉我数组是object dtype,其中元素的形状各不相同。它不能转换为多维数字 dtype 数组。这是张量转换错误的根源。 @hpaulj 我检查了self.trainImages中的元素形状,它们都具有相同的大小(28,28) 【参考方案1】:

是否可以打印出某种类型的错误输出?

就我个人而言,我遇到了类似的问题,通过用“np.stack()”覆盖我的输入,它添加了一个额外的维度,改变了数组的形状并允许它工作。

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

编辑:删除无关信息

【讨论】:

感谢您的回答,您的第一个回答解决了我的问题。但这很奇怪,因为我可能在 4-6 个月之前使用了相同的方法并且它有效并且我没有更新我的 tensorflow 版本。我遇到了另一个错误,我会为新的错误打开新帖子。 抱歉,我误读了您所做的 fit() 调用,我的答案的第二部分是 2 个输入 1 个输出。 没问题,我明白你的意思,再次感谢一切。

以上是关于无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)错误的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)

Tensorflow - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)

Keras:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)

自己的数据集:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 int)

“ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)。在 TensorFlow CNN 中进行图像分类

尝试连接 keras 模型:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)