#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’ левой ветви действительно является функцией, которая означает рабочее время работника. Правильная ветвь означает эффективность работы, и я добавил потерю средней эффективности работы рабочего, чтобы уменьшить потерю правой ветви.