我正在尝试使用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,
)
我的问题是关于上面标记的???
。我有三个有用的信息来训练模型:age
、gender
和ethnicity
。如何将这些信息添加到模型中?再一次,我希望这个模型可以预测一个人的年龄。
我看了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'
发布于 2018-10-10 14:42:44
x
是输入/特征/自变量的数组/矩阵。
y
是输出(S)、/target(S)、/dependent变量(/dependent)的数组/矩阵。
您的x
数组应该包含从人的脸的数据集中提取的特征(但是您可以选择这样做)。您甚至可以将性别和种族与从数据集中提取的特征一起包括在内,如果在部署模型时这些信息对您可用。
您的y
数组应该包含目标变量,即与每个脸相关联的年龄。
对编辑的回应:
不幸的是,我实际上没有在R中使用Keras,但是从您看到的错误(以及函数的前缀)来看,我认为R列表与Keras所期望的最有可能的兼容性问题。Keras是用Python实现的,因此它可能需要一个Numpy数组或一个Python列表。我怀疑您会更幸运地为您的输入特性创建一个R data.frame
。
我发现本教程可能会有帮助,因为它使用Keras和R来构建一个CNN。
发布于 2019-05-13 21:39:03
您需要将您的要素输入转换为二进制矩阵,签出虚拟包装。
https://datascience.stackexchange.com/questions/39496
复制