使用flow_from_dataframe,y_col

时间:2019-06-05 12:33:04

标签: tensorflow keras generator tf.keras

我正在使用熊猫读取一个csv文件,并给出存储在colname中的列名

colnames=['file', 'label'] 
# Read data from file 
data = pd.read_csv('./Hand_Annotations_2.csv',names=colnames, header=None)
# Preview the first 5 lines of the loaded data 
data.head()

然后,我使用ImageDataGenerator()flow_fromdataframe()来获取批量数据

train_generator=datagen.flow_from_dataframe(dataframe=data,
                                            directory=None, 
                                            x_col=colnames[0], 
                                            y_col=colnames[1],
                                            class_indices=IDmap,
                                            class_mode="categorical", target_size=(224,224), batch_size=32)

但是我得到一个错误,如下:

  

TypeError:如果class_mode =“ categorical”,则y_col =“ label”列值   必须为字符串,列表或元组。

但是我的y_col是一个字符串。如果我仅输入"label",则会收到相同的错误。它似乎也可以与x_col一起使用。

有人可以指出我的错误吗?

谢谢


解决方案

读取具有dtype的csv,例如str:

data = pd.read_csv('./Hand_Annotations_2.csv',dtype=str,names=colnames, header=None)

2 个答案:

答案 0 :(得分:1)

您可以检查github中的代码以查看实际检查的内容,特别是here。 Keras预处理正在检查所有值是否都具有允许的类型(str,list或tuple),因此检查失败,您必须检查y_col列的所有值都具有正确的类型。

答案 1 :(得分:0)

如果你的标签是整数,设置 class_mode='raw'