Почему моя настроенная нейронная сеть не работает и с высоким MAE

#tensorflow #neural-network #deep-learning #regression

#tensorflow #нейронная сеть #глубокое обучение #регрессия

Вопрос:

Это проблема регрессии с использованием DNN, которая оценивает доход.
Сеть выглядит следующим образом: введите описание изображения здесь

Изображение структуры сети

Правая ветвь — это полностью подключенная нейронная сеть, и ее результат означает эффективность.
Левая ветвь — это известная переменная для каждого образца, что означает часы работы в Сети.
В настоящее время я хочу изучить только правильную ветвь сети. Сетевой код выглядит следующим образом:

 def neural_net(x, hours):
    layer_1 = tf.nn.relu(tf.add(tf.matmul(x, weights_h1), biases_h1))
    layer_2 = tf.nn.relu(tf.add(tf.matmul(layer_1, weights_h2), biases_h2))
    efficient_out_layer = tf.nn.relu(tf.add(tf.matmul(layer_2, weights_out), biases_out))
    delta_efficient = tf.add(efficient_out_layer, 1)
    delta_online_hours = tf.add(hours, 1)
    out_layer = tf.multiply(delta_online_hours, delta_efficient)
    return out_layer    
  

Но mae очень высокий.
Когда я не использую левую ветвь, а использую только dnn для оценки результата, mae низкий.

Я хочу знать, в чем проблема с моей сетью, и почему левая ветвь многократно обученной сети правой ветви увеличила бы mae, заранее спасибо.

Ответ №1:

Нет смысла умножать x на вывод нужной сети, если вы не можете точно определить, что x означает. Переменная x может быть особенностью вашего образца. Если это так, вам лучше ввести его в нужную сеть с другими функциями, а не просто умножать его на результат.

Комментарии:

1. Спасибо за ваш ответ. ‘x’ левой ветви действительно является функцией, которая означает рабочее время работника. Правильная ветвь означает эффективность работы, и я добавил потерю средней эффективности работы рабочего, чтобы уменьшить потерю правой ветви.