能否在Keras卷积自编码器中使用image_dataset_from_directory()方法?
关于
image_dataset_from_directory()是否可作为Keras卷积自编码器输入的解答 结论:image_dataset_from_directory()完全可以作为Keras中卷积自编码器的输入数据源,无需改用其他数据加载方案。
自编码器的训练逻辑是要求输入和训练目标为同一份数据,image_dataset_from_directory()默认返回(图像张量, 类别标签)的二元组,仅需要对返回的数据集做简单的格式转换即可适配自编码器的训练要求,具体操作步骤如下:
- 第一步:根据你的卷积自编码器输入要求,调用
image_dataset_from_directory()配置参数加载数据集,可自行设置匹配的image_size、batch_size、color_mode等参数,数据集目录结构不需要做额外调整 - 第二步:对加载得到的
tf.data.Dataset对象做映射转换,丢弃自带的类别标签,将数据二元组修改为自编码器需要的(输入图像, 目标图像)格式,参考代码如下:# 仅转换格式 train_ds = train_ds.map(lambda x, _: (x, x)) # 如果需要同步做像素归一化,可使用如下写法 train_ds = train_ds.map(lambda x, _: (x/255.0, x/255.0)) - 第三步:如果需要做数据打乱、预加载等优化,按常规的
tf.data流水线操作配置即可,完成后直接传入模型fit方法即可正常训练
补充说明:哪怕你的数据集是按类别拆分了子文件夹存储,也不会影响使用,上述映射步骤会直接忽略自带的类别标签,不会对自编码器的训练造成干扰。
内容的提问来源于stack exchange,提问作者dosvarog
相关产品推荐
相关产品推荐

