如何解决从CIFAR-10训练集移除指定图片的形状异常问题
解决CIFAR-10训练集移除指定索引样本时数组形状异常的问题
问题出在你调用np.delete时没有指定axis参数。
默认情况下,np.delete会将多维数组先扁平化(变成一维),再删除指定索引的元素,最后返回一维数组。你的inputs原本是(50000, 32, 32, 3),扁平化后总元素数是50000*32*32*3 = 153600000,删除4个元素后长度为153599996,看起来形状“增大”其实是数组被降维成一维了,并非实际元素数量增加。
要沿着样本维度(也就是第一个维度,对应50000这个轴)删除指定索引的图片,必须给np.delete加上axis=0参数:
data = tfds.as_numpy(tfds.load(name=FLAGS.dataset, batch_size=-1, data_dir=DATA_DIR)) inputs = data['train']['image'] labels = data['train']['label'] inputs = (inputs/127.5)-1 # 指定axis=0,沿样本维度删除 inputs = np.delete(inputs, [0, 4, 3, 2], axis=0) labels = np.delete(labels, [0, 4, 3, 2], axis=0)
修改后,inputs的形状会变成(49996, 32, 32, 3),labels变成(49996,),符合你移除4个样本的预期。
内容的提问来源于stack exchange,提问作者stats_residue
相关产品推荐
相关产品推荐

