如何解决图像增强后调用np.squeeze时的‘cannot select an axis...’错误?
问题解决:ValueError: cannot select an axis to squeeze out which has size not equal to one
错误原因
你遍历x_train时,每次获取的images是一整个批次的图片(比如形状为(batch_size, height, width, channels)),第0轴是批次大小(通常是32、64这类大于1的数值),而np.squeeze(images,0)强制要挤压第0轴——只有当轴的尺寸为1时才能执行挤压操作,因此触发错误。
解决步骤
先确认图片形状(可选但推荐):
在循环内添加打印语句,查看批次图片的维度:plt.figure(figsize=(10, 10)) for images, labels in x_train: print(images.shape) # 比如输出 (32, 256, 256, 3),第一个数是批次大小 break修改代码,先从批次中取出单张图片,再处理:
plt.figure(figsize=(10, 10)) for images, labels in x_train: # 取出批次中的第一张图片 single_img = images[0] # 挤压所有尺寸为1的冗余轴(如果有的话) single_img = np.squeeze(single_img) plt.imshow(single_img) # 对应取出第一张图片的标签 plt.title(f'Color map: Magma{labels[0][0]}') plt.axis("off") break
补充说明
如果你的单张图片本身存在尺寸为1的轴(比如形状是(1, 256, 256, 3)),np.squeeze()会自动去掉这些轴;如果没有这类冗余轴,直接用images[0]即可显示,无需额外挤压。
内容的提问来源于stack exchange,提问作者Amresh
相关产品推荐
相关产品推荐

