我正在使用熊猫读取一个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)
答案 0 :(得分:1)
您可以检查github中的代码以查看实际检查的内容,特别是here。 Keras预处理正在检查所有值是否都具有允许的类型(str,list或tuple),因此检查失败,您必须检查y_col
列的所有值都具有正确的类型。
答案 1 :(得分:0)
如果你的标签是整数,设置 class_mode='raw'