如何为大量输出构建模型?

数据挖掘 rnn 预报
2022-03-03 00:33:29

我之前曾研究过小规模的前馈神经网络问题。

但我已经开始着手一个新项目,目标是提前一天预测全国 25 个地点的空气质量。现在,我非常熟悉空气质量方面的事情。

我的问题:

在这样的问题中,我会开发 25 个独立模型(它们共享相同的输入结构)还是一个具有 25 个输出的模型。

我想我想做什么 - 有没有类似并行神经网络的东西?或者这是 25 个不同的问题?我主要研究物理模型,其中所有 25 个位置共享物理。而且输入会有所不同。

这是一个问题data parallelism还是一个model parallelism问题?

2个回答

神经网络可以有 25 个输出。使用 25 个独立模型,您可能会得到稍微准确的结果,但计算和训练时间将是一个独立模型的 25 倍。一个具有 25 个输出的模型只需要比一个独立模型稍长的时间。

很少有模型类型允许“多输出”回归/分类。

sklearn文档提供了一个很好的概述:

在此处输入图像描述

然而MultiOutputRegressor,每个目标只适合一个回归器。同时与 RegressorChain

每个模型使用提供给模型的所有可用特征加上链中较早模型的预测,按照链指定的顺序进行预测。

Keras 的功能 API允许同时对多个目标进行建模。这种模型的一般结构是(完整的最小示例在这里):

# Input and model architecture
Input_1=Input(shape=(YOUR_SHAPE_HERE, ))
x = LAYERS_HERE

# Outputs
out1 = Dense(1)(x)
out2 = Dense(1)(x)

# Compile/fit the model
model = Model(inputs=Input_1, outputs=[out1,out2])
model.compile(optimizer = "rmsprop", loss = 'mse')

# Add actual data in the fit statement
model.fit(train_data, [train_targets,train_targets2], epochs=500, batch_size=4, verbose=0, validation_split=0.2)