многозадачное обучение с использованием оценок в качестве функций - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть многозадачная сеть с 3 классификационными головками [A, B, C].Я хочу использовать выходные данные head A в качестве входных данных для первых плотных слоев B and C.

Должно ли быть сделано что-то особенное для обратного распространения, так как я считаю, что градиенты из B and C не должны течьвернуться к A, как это уже было рассчитано и должно рассматриваться как константа.

У кого-нибудь есть пример кода для чего-то подобного?

1 Ответ

0 голосов
/ 06 апреля 2019

Вы можете попробовать:

A_layer = tf.keras.layers.Dense(5)(x)
A_head= tf.keras.layers.Dense(5)(A_layer)
A_logic = tf.keras.layers.Dense(1)(A_head)
A_loss = tf.losses.sigmoid_cross_entropy(A_y,A_logic)

B_layer = tf.keras.layers.Dense(5)(tf.stop_gradient(A_logic))
B_head= tf.keras.layers.Dense(5)(B_layer)
B_logic = tf.keras.layers.Dense(1)(B_head)
B_loss = tf.losses.sigmoid_cross_entropy(B_y,B_logic)

C_layer = tf.keras.layers.Dense(5)(tf.stop_gradient(A_logic))
C_head= tf.keras.layers.Dense(5)(C_layer)
C_logic = tf.keras.layers.Dense(1)(C_head)
C_loss = tf.losses.sigmoid_cross_entropy(C_y,C_logic)

total_loss = A_loss + B_loss + C_loss

train_op = tf.train.AdamOptimizer().minimize(total_loss)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...