如何将TF的“ImageDataGenerator.flow\u from\u dataframe”用于onehot编码输出?

2024-03-29 01:52:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图训练一个模型,输入形状(227,227,3)和输出形状(23,)以及softmax作为激活函数。我尝试使用^{}如下:

 train_data_generator = idg.flow_from_dataframe(
     dataframe=training_data,
     x_col="image_name",
     y_col="age",
     class_mode="categorical",
     shuffle=True,
     target_size=(227, 227),
 )

我的df看起来像这样:

                                     image_name                                              age
0      /home/.../data/age/077/588.png            [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0]

我得到了以下错误:

ValueError: invalid literal for int() with base 10: '[1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]'

我也尝试过class_mode="raw",但没有成功。我应该如何转换数据,以便使用flow_from_dataframe进行训练


1条回答
网友
1楼 · 发布于 2024-03-29 01:52:51

根据您的输出错误消息,数据帧的age列是一个字符串,而不是您想要的列表。要使用flow_from_directory,可以将该列转换为类似以下内容的列表(而不是字符串):

df['age'].apply(lambda val: [int(item) for item in str_val.replace('[', '').replace(']', '').split()])

相关问题 更多 >