【问题标题】:Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray) error无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)错误
【发布时间】: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)

标签: python numpy tensorflow


【解决方案1】:

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

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

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

编辑:删除无关信息

【讨论】:

  • 感谢您的回答,您的第一个回答解决了我的问题。但这很奇怪,因为我可能在 4-6 个月之前使用了相同的方法并且它有效并且我没有更新我的 tensorflow 版本。我遇到了另一个错误,我会为新的错误打开新帖子。
  • 抱歉,我误读了您所做的 fit() 调用,我的答案的第二部分是 2 个输入 1 个输出。
  • 没问题,我明白你的意思,再次感谢一切。
猜你喜欢
  • 2021-04-25
  • 2020-07-05
  • 1970-01-01
  • 2021-10-11
  • 2021-04-18
  • 2020-10-15
  • 2021-09-20
  • 2020-11-22
  • 1970-01-01
相关资源
最近更新 更多