Keras Fit Function (R):训练具有多个标签的回归模型

数据挖掘 r 喀拉斯 美国有线电视新闻网
2022-02-16 05:44:24

我正在尝试使用 Keras 在 R 中实现深度学习模型。假设我有一个人脸数据集和一个包含有关人的年龄、性别和种族信息的 CSV。我想训练模型从照片中预测一个人的年龄。

为此,我必须使用卷积神经网络。这是我的伪代码:

library(keras)

model <- keras_model_sequential() 

model %>% ## define CNN model’s architecture. 
## I will figure this out later

# configure model
model %>% compile(
    loss='mean_squared_error',
    optimizer='adam',
    metrics='mae'
)

history <- model %>% fit(
# train_array is a 300x100x100x1 array
# train_array stores the pixel values of 300 grayscale images 
# of resolution 100x100
    x = train_array, y = ???,
    epochs = 10, batch_size = 30,
 )

我的问题是关于???上面标记的。我有三个有用的信息来训练模型:agegenderethnicity如何将此信息添加到模型中?同样,我希望模型能够预测一个单一的年龄预测。

我查看了 Keras 拟合函数文档,但无法弄清楚。它说这y是一个“目标(标签)数据的向量、矩阵或数组(如果模型有多个输出,则为列表)......”


编辑:这是有道理的。现在的问题是如何设置x列表?这是我到目前为止所拥有的:

trainFeatures <- list(pixels = train_array, gender = as.factor(trainGenders), ethnicity = as.factor(trainEthnicity))

history <- model %>% fit(
    x = trainFeatures, y = trainAge,
    epochs = 10, batch_size = 30,
)

我下载了一个玩具数据集并建立了一个快速的 CNN 模型。我收到以下错误消息:

Error in py_get_attr_impl(x, name, silent) : AttributeError: 'list' object has no attribute 'dtype'

2个回答

x是输入/特征/自变量的数组/矩阵。

y是输出/目标/因变量的数组/矩阵。

您的x数组应该包含从人脸数据集中提取的特征(但是您可以选择这样做)。如果您在部署模型时可以使用这些信息,您甚至可以将性别和种族与从数据集中提取的特征一起包含在内。

您的y数组应该包含您的目标变量,即与每张脸相关的年龄。


对编辑的回应:

不幸的是,我实际上并没有将 Keras 与 R 一起使用。但是从您看到的错误(以及函数的前缀)来看,我认为这很可能是 R 列表与 Keras 在下面所期望的任何内容之间的兼容性问题。Keras 是用 Python 实现的,因此它可能需要一个 Numpy 数组或只是一个 Python 列表。我怀疑你会更好地data.frame为你的输入特征创建一个 R。

我发现本教程可能会有所帮助,因为它使用 Keras 和 R 构建 CNN。

您需要将因子输入转换为二进制矩阵,检查dummy package