当前位置: 代码迷 >> 综合 >> ValueError: Input arrays should have the same number of samples as target arrays.
  详细解决方案

ValueError: Input arrays should have the same number of samples as target arrays.

热度:31   发布时间:2023-12-16 17:44:36.0

ValueError: Input arrays should have the same number of samples as target arrays. Found 32 input samples and 24 target samples.


问题:

训练条跑到一半的时候忽然中止,并且报错

原因:

1.可能是因为数据batch长度和标签batch长度不一致所造成的。逐一print出他们的size之后,发现并没有这个问题。而且从训练能够开始,只是后来中断了,从这一点分析排除这个原因

2.我设置的batch_size是32。可能是数据集总长度无法整除batch_size,导致训练需要喂入一个batch长度的数据时,某一个数据集的长度不足32,而是总长度除以batch_size的余数24。经检查确认是这个原因。

解决:

方法一:保证数据集大小为batch_size的倍数,如果不是就增加或者删除部分数据(我选择删除余数长度的数据)

# # 改变dataset的大小,变成batch_size的倍数
def change_dataset_size(x, y, batch_size):length = len(x)if (length % batch_size != 0):remainder = length % batch_sizex = x[:(length - remainder)]y = y[:(length - remainder)]print(len(x))print(len(y))return x, y

方法二:利用keras的flow_from_directory来生成每个batch的数据,这样就不需要对数据集长度进行处理,该方法自动帮你分配。可以参考https://blog.csdn.net/mieleizhi0522/article/details/82191331

  相关解决方案