【问题标题】:Multiple Input types in a keras Neural Networkkeras 神经网络中的多种输入类型
【发布时间】:2018-05-27 21:48:12
【问题描述】:

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

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

任何信息、资源、来源将不胜感激,在此先感谢。

【问题讨论】:

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


    【解决方案1】:

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

    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

    【讨论】:

    • 非常感谢,这将非常有帮助。还有一个问题,简单的密集层最适合数字数据,还是使用 cnns 中的更复杂的层(池化、批处理、卷积层等)有意义?
    • @nuric,非常感谢。解释得很好。
    • @nuric 在训练时如何保持图像与其对应的数字输入之间的一致性?
    【解决方案2】:

    如果您想根据这四个特征进行预测,那么我建议您使用 cnn + rnn

    所以将图像提供给 cnn 并在之后获取 logits,然后制作一个类似的序列

    logits=np.array(output).flatten()
    

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

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

    【讨论】:

    • 您能否进一步说明您的建议?之后在 RNN 中使用 logits 的阶段是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2021-03-04
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2018-11-25
    • 2019-09-09
    • 1970-01-01
    相关资源
    最近更新 更多