作为一个例子,我想训练一个神经网络来预测图片的位置(经度,纬度),图像,温度,湿度和一年中的时间作为模型的输入 .
我的问题是,将这些附加信息添加到cnn的最佳方法是什么?我应该将数字输入与最后一个密集层或开头的cnn合并吗?我应该编码数值(温度,湿度和一年中的时间)吗?
任何信息,资源,来源都将非常感谢,提前感谢 .
您可以单独处理数字输入,然后在进行最终预测之前将它们合并:
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 .
如果你想预测这四个特征的基础,那么我建议去cnn rnn
所以将图像提供给cnn并在之后进行logits制作类似的序列
logits=np.array(output).flatten()
[[logits] , [temperature], [humidity] , [time_of_year]] 并将其提供给
[[logits] , [temperature], [humidity] , [time_of_year]]
rnn,Rnn将它视为序列输入 .
2 回答
您可以单独处理数字输入,然后在进行最终预测之前将它们合并:
从本质上讲,您将它们视为单独的输入并学习有用的功能,这些功能可以让您的模型进行预测 . 如何编码数字输入实际上取决于它们的类型 . 对于像温度这样的连续输入,您可以在-1,1之间进行标准化,对于离散输入,常常是单热输入 . 这是一个快速guide .
如果你想预测这四个特征的基础,那么我建议去cnn rnn
所以将图像提供给cnn并在之后进行logits制作类似的序列
[[logits] , [temperature], [humidity] , [time_of_year]]
并将其提供给rnn,Rnn将它视为序列输入 .