如何从ImageDataGenerator获取x_train和y_train?

3

我正在处理一些图像分类问题,为此我创建了一个Y网络。 Y网络是一种神经网络,它具有两个输入和一个输出。如果我们想要将Tensorflow模型拟合到数据上,我们必须将x_train和y_train输入model.fit()中。 就像这样 -

model.fit([x_train, x_train], y_train, epochs=100, batch_size=64)

但是如果我的数据来自 ImageDataGenerator ,我该如何获得 x_trainy_train ?像这样 -

train_generator = train_datagen.flow_from_dataframe(... , batch_size=64, ...)

我尝试通过以下方法获取x_train和y_train:

x_train, y_train = train_generator.next()

但是,得到的x_train和y_train仅包含64张图片,我希望使用全部8644张图片。然而,我无法将batch_size增加到8644,因为这将需要更多的内存,并使Google Colab崩溃。我该怎么办?


1
一次性加载所有图像不会导致Colab崩溃吗? - yudhiesh
抱歉,我没有理解你的问题。@yudhiesh - Adarsh Wase
你说如果一次性加载所有图像进行训练,会导致Colab环境崩溃,但是你想基于这个问题做同样的事情。为什么不循环range(0, NUM_IMAGES//BATCH_SIZE + 1)并产生图像呢? - yudhiesh
1
@Hobo,感谢您对theta转置x的解释。 - Lijin Durairaj
1个回答

1
你可以从以下位置获取所有图像和标签列表:
class_dict=train_generator.class_indices
labels= train_generator.labels
file_names= train_generator.filenames 

类字典对于将类索引与类名称相关联非常有用,它的格式为 {类名称,索引}。我发现将顺序反转以获得形式为 {索引,类名称} 的字典非常有用,使用以下代码:

for key,value in class_dict.items():
        new_dict[value]=key 

所以当您进行预测并使用 index= np.argmax(p) 获取预测的索引时,您可以从中获取相应的类名。
class_name=new_dict[index]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接