神经网络回归在输出中产生负值

问题描述 投票:0回答:1

我有 45 个输入变量,用于预测 10 个输出变量。输出的所有值均为正值。我使用 Tensorflow Keras 创建了一个神经网络模型。训练数据集中的所有值都从 0 缩放到 1。如果我使用下面的函数创建 keras.function () 架构,我只会对正训练和测试数据得到一些负预测。我需要在一个模型中对所有输出变量进行建模,因为它们密切相关并且正在减少,我希望模型能够从相关性中学习。不过我不知道这是否有效。我尝试了很多架构来消除负预测值,但没有任何效果。

我的预测中得到负值有什么原因吗?我对输入数据使用最小-最大缩放,然后在做出预测后将其恢复到原始缩放。 任何见解将不胜感激。

两个隐藏层的激活函数是 relu,每个 512 个节点。输出函数是线性的。

def build_multi_output_model(): input_layer=layers.Input(shape=(X.shape[1],))

# Loop through units and activation functions for each layer
x = input_layer
for units, activation_function in zip(units_list, activation_functions):
    x = layers.Dense(units=units, activation=activation_function)(x)
    x = layers.Dropout(0.01)(x)

# Create multiple output layers
outputs = []
for i in range(y.shape[1]):
    output_layer = layers.Dense(1, name=f'output_{i}')(x)
    outputs.append(output_layer)

model = keras.Model(inputs=input_layer, outputs=outputs)

optimizer = keras.optimizers.Adam(learning_rate=learning_rate)
model.compile(optimizer=optimizer, loss='mean_squared_error', metrics=['mse'])
return model

model1 = build_multi_output_model() model1.fit(X_train, [y_train[:, i] for i in range(y.shape[1])], epochs=epochs, batch_size=batch_size, verbose=0)

python tensorflow keras neural-network regression
1个回答
0
投票

我认为你的预测是 logits,为了获得真正的预测,你需要 sigmoid 或 softmax 函数,这取决于你的任务。

© www.soinside.com 2019 - 2024. All rights reserved.