我有一个包含3D numpy数组的功能列表,这些数组表示RGB图像,以及一个1D numpy数组的标签列表。我想使用ImageDataGenerator.flow()执行图像增强。当将两个列表传递给.flow()时,我得到:
ValueError: `x` (images tensor) and `y` (labels) should have the same length. Found: x.shape = (32, 32, 3), y.shape = (2, 4)
但是,当我打印x.shape和y.shape时,它告诉我它们是相同的长度。下面是我的代码:
dategen = ImageDataGenerator(
rescale = 1./255
)
labels = list(df["label"])
filepaths = list(df["photo"])
features = []
for filepath in filepaths:
img = Image.open(filepath)
img = img.resize((32,32))
features.append(np.array(img))
features = np.array(features)
labels = np.array(labels)
print(features.shape) #Prints (2, 32, 32, 3)
print(labels.shape) #Prints (2, 4)
train_gen = datagen.flow(
x = features,
y = labels,
batch_size = 1
)
我想可能是特征数组的第一个维度被修剪了,所以我尝试扩展特征数组的第一个维度
features = np.expand_dims(features, axis = 0)
print(features.shape) #Prints (1, 2, 32, 32, 3)
然后我得到了这个错误:
ValueError: ... Found: x.shape = (1, 2, 32, 32, 3), ...
这是怎么回事?
1条答案
按热度按时间avkwfej41#
我通过添加这行代码解决了这个问题。形状仍然是一样的,但不知何故,它的工作后,运行这个。