**
flow-from-dataframe的坑
**
首先是keras版本问题
第一次使用flow-from-dataframe是因为数据集里边有一个CSV文件,放着图片名和标签,所以进行数据扩增的时候就用这个,我以为是flow-from-directory,所以改了半天都不知道怎么回事,后来问了大神才知道是因为keras版本的问题,要用2.2.4的才可以,pycharm上换版本挺方便的,我这小白很喜欢,用着不会出错哈哈,就试着换了下,居然成功了。因为突然改变了keras的版本,所以TensorFlow开始出错,不得不提TensorFlow版本,我用的1.12才可以,cuda 9.+,cvDNN V7+,代码才可以继续运行。
具体的版本对应可以看大佬们贴出来的照片
干货:TensorFlow1.2~2.1各个GPU版本CUDA和cuDNN对应版本整理
【Python】keras和tensorflow的版本对应关系
参数问题
只记几个常用的吧
flow_from_dataframe(
dataframe: Pandas dataframe,一列为图像的文件名,另一列为图像的类别, 或者是可以作为原始目标数据多个列,其实就是用pandas读出的CSV文件。
directory: 字符串,目标目录的真实路径,其中包含在 dataframe 中映射的所有图像
x_col='filename', 字符串,dataframe 中包含目标图像文件夹的目录的列,在pandas读的时候记着加上dtype=str
y_col='class', 字符串或字符串列表,dataframe 中将作为目标数据的列名,标签那一列。
target_size=(256, 256), 整数元组 (height, width),默认为 (256, 256)。 所有找到的图都会调整到这个维度。
color_mode='rgb', "grayscale", "rbg" 之一。默认:"rgb"。 图像是否转换为 1 个或 3 个颜色通道。
classes=None, 可选的类别列表 (例如, ['dogs', 'cats'])。默认:None。
如未提供,类比列表将自动从 y_col 中推理出来,y_col 将会被映射为类别索引)。
包含从类名到类索引的映射的字典可以通过属性 class_indices 获得。
class_mode='categorical': "categorical", "binary", "sparse", "input", "other" or None 之一。 默认:"categorical"。决定返回标签数组的类型:
"categorical" 将是 2D one-hot 编码标签,好像多分类标签用这个,
"binary" 将是 1D 二进制标签,
"sparse" 将是 1D 整数标签,
"input" 将是与输入图像相同的图像(主要用于与自动编码器一起使用),
"other" 将是 y_col 数据的 numpy 数组,
None, 不返回任何标签(生成器只会产生批量的图像数据,这对使用 model.predict_generator(), model.evaluate_generator() 等很有用)。
batch_size=32, 批量数据的尺寸(默认:32)。
shuffle=True, 是否混洗数据(默认:True)
seed=None, 可选的混洗和转换的随即种子。
save_to_dir=None, None 或 str (默认: None). 这允许你可选地指定要保存正在生成的增强图片的目录(用于可视化您正在执行的操作)。
save_prefix='', 字符串。保存图片的文件名前缀(仅当 save_to_dir 设置时可用)。
save_format='png', "png", "jpeg" 之一(仅当 save_to_dir 设置时可用)。默认:"png"。
subset=None, 数据子集 ("training" 或 "validation"),如果在 ImageDataGenerator 中设置了 validation_split。
interpolation='nearest' 在目标大小与加载图像的大小不同时,用于重新采样图像的插值方法。
支持的方法有 "nearest", "bilinear", and "bicubic"。 如果安装了 1.1.3 以上版本的 PIL 的话,同样支持 "lanczos"。
如果安装了 3.4.0 以上版本的 PIL 的话,同样支持 "box" 和 "hamming"。 默认情况下,使用 "nearest"。)