【发布时间】:2019-03-22 13:47:14
【问题描述】:
我的一项机器学习作业有问题。我们被要求使用机器学习来估计给定图像的个人的年龄。我们得到了一个包含 28360 个训练图像和 7090 个测试图像的数据集。
我遇到的问题是在我的代码的 sn-p #3 中,可以找到 HERE :)
特别是,我收到了ValueError: all input arrays must have the same shape。就像我上面提到的,我的火车数据集的大小为 28360。运行程序后,我可以从 temp.append(img) 到 print(len(temp)) 再次给我,28360。也许我没有全面了解究竟是什么np.stack(temp) 正在做或如何工作,但我的初始和最终数组的大小似乎相同,为什么会出现问题。?
四处询问,我被告知问题不一定与我的temp 列表的长度有关,而是我可能遇到了与其他人不同大小的图像。包含的一个或多个调整大小的图像(它们是数组)具有不同的形状,可能是因为调整大小失败或图像丢失或其他原因。如果是这种情况,如何在 28360 张图像的数据集中找到哪些不同以及为什么要修复它们或删除它们。这真的是问题吗,还是其他原因?
任何人,请帮忙。我究竟做错了什么?任何 cmets/建议将不胜感激。先感谢您。干杯和美好的一天。! :D
【问题讨论】:
-
当您遇到错误时,您应该告诉我们它发生在哪里。这可能需要显示部分或全部回溯。但是错误是
np.stack在尝试加入的数组形状不同时引发的那种事情。这意味着您需要查看数组列表并找到形状不同的数组。你知道如何查看数组的shape吗? -
所以错误出现在我的源代码的第45行。我还包括了上面的所有引用,但 HERE 又是这样。为了找到数组的形状,我使用了类似于
print('test x shape:', test_x.shape)的东西,对吗?不过有点迷茫。 “查看数组列表并找到形状不同的数组”是什么意思?再次感谢您的迅速回复。 -
[x.shape for x in temp]应该列出temp列表中所有元素的形状。 (我们倾向于使用复制粘贴到文本而不是链接的代码和回溯。但是 pastebin 链接比屏幕截图更好。我看到了您的链接但没有检查它,并且没有意识到它包含追溯。)
标签: python numpy tensorflow machine-learning numpy-ndarray