keras神经网络中的多种输入类型

时间:2018-05-27 21:48:12

标签: python tensorflow neural-network keras conv-neural-network

作为一个例子,我想训练神经网络来预测图片的位置(经度,纬度),图像,温度,湿度和一年中的时间作为模型的输入。

我的问题是,将此附加信息添加到cnn的最佳方法是什么?我应该将数字输入与最后一个密集层或开头的cnn合并吗?我应该编码数值(温度,湿度和一年中的时间)吗?

任何信息,资源,消息来源都会非常感谢,提前谢谢。

2 个答案:

答案 0 :(得分:3)

您可以单独处理数字输入,然后在进行最终预测之前合并它们:

img_in = Input(shape=(width, height, channels))
# Your usual CNN whatever it may be
img_features = SomeCNN(...)(img_in)
aux_in = Input(shape=(3,))
aux_features = Dense(24, activation='relu')(aux_in)
# Possibly add more hidden layers, then merge
merged = concatenate([img_features, aux_features])
out = Dense(num_locations, activation='softmax')(merged)
model = Model([img_in, aux_in], out)
model.compile(loss='categorical_crossentropy', ...)

基本上,您将它们视为单独的输入并学习有用的功能,这些功能可以让您的模型进行预测。如何编码数字输入实际上取决于它们的类型。对于像温度这样的连续输入,您可以在-1,1之间进行标准化,对于离散输入,常常是单热输入。这是一个快速guide

答案 1 :(得分:0)

如果你想预测这四个特征的基础,那么我建议你去cnn + rnn

然后将图像提供给cnn并在之后执行logits,生成类似

的序列
logits=np.array(output).flatten()

[[logits] , [temperature], [humidity] , [time_of_year]]并将其提供给

rnn,Rnn将其视为序列输入。