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