在回归模型中使用Keras的ImageDataGenerator

我想使用ImageDataGeneratorflow_from_directory方法来生成回归模型的训练数据,其中目标值可以是-1到1之间的任何浮点数。flow_from_directory有一个”class_mode”参数,其描述如下:

class_mode: “categorical”、”binary”、”sparse”或None之一。默认值为”categorical”。决定返回的标签数组的类型:”categorical”将是二维的独热编码标签,”binary”将是一维的二进制标签,”sparse”将是一维的整数标签。

这些值中我应该选择哪一个?似乎没有一个真正适合…


回答:

截至目前(2017年1月21日的最新版本Keras),flow_from_directory只能以以下方式工作:

  1. 您需要按以下方式组织目录结构:

    包含图像的目录\    第一个标签\        第一个标签的第一张图片        第一个标签的第二张图片        第一个标签的第三张图片        ...    第二个标签\        第二个标签的第一张图片        第二个标签的第二张图片        第二个标签的第三张图片        ...    ...
  2. flow_from_directory返回固定大小的批次,格式为(图片, 标签)

如您所见,它只能用于分类情况,并且文档中提供的所有选项仅指定类别提供给分类器的方式。但是,有一个巧妙的技巧可以使flow_from_directory在回归任务中派上用场:

  1. 您需要按以下方式组织目录结构:

    包含图像的目录\    第一个值(例如 -0.95423\)\        第一个值的第一张图片        第一个值的第二张图片        第一个值的第三张图片        ...    第二个值(例如 -0.9143242\)\        第二个值的第一张图片        第二个值的第二张图片        第二个值的第三张图片        ...   ...
  2. 您还需要有一个列表list_of_values = [第一个值, 第二个值, ...]。然后您的生成器定义如下:

    def regression_flow_from_directory(flow_from_directory_gen, list_of_values):    for x, y in flow_from_directory_gen:        yield x, list_of_values[y]

对于flow_from_directory_gen来说,设置class_mode='sparse'是至关重要的,这才能使其正常工作。当然,这有点麻烦,但它确实有效(我使用过这个解决方案 :))

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注