Багатозавдання навчання в Керасі


12

Я намагаюся реалізувати спільні шари в Керасі. Я бачу, що у Кераса є keras.layers.concatenate, але я не впевнений у документації про його використання. Чи можу я використовувати його для створення декількох загальних шарів? Який був би найкращий спосіб реалізувати просту спільну нейронну мережу, як показано нижче, використовуючи Keras?Спільна нейромережа

Зауважте, що всі форми вхідного, вихідного та загального шарів для всіх 3 NN однакові. У трьох NN є декілька спільних шарів (і нерозподілених шарів). Кольорові шари унікальні для кожного NN і мають однакову форму.

В основному, фігура являє собою 3 однакових NN з безліччю спільних прихованих шарів, за якими слідують декілька прихованих шарів, що не поділяються спільно.

Я не впевнений, як ділитися декількома шарами, як у прикладі Twitter, був лише один загальний шар (наприклад, в API doc).

Відповіді:


10

Input xDenseDense

x = Input(shape=(n, ))
shared = Dense(32)(x)
sub1 = Dense(16)(shared)
sub2 = Dense(16)(shared)
sub3 = Dense(16)(shared)
out1 = Dense(1)(sub1)
out2 = Dense(1)(sub2)
out3 = Dense(1)(sub3)

Зараз ми можемо визначити нашу модель так:

model = Model(inputs=x, outputs=[out1, out2, out3])

Зараз очікується кортеж / список трьох елементів, по одному на кожен вихід.

Ви можете піти набагато далі з цими поняттями. Скажімо, ми хотіли б вивчити індивідуальні ваги для особи шарів, але все ж хочемо мати однакові ваги для лінійної комбінації у напрямку вихідного шару, ми могли б досягти цього, зробивши це:

out = Dense(1)
out1 = out(sub1)
out2 = out(sub2)
out3 = out(sub3)

EDIT: Об’єднання в основному є протилежним тому, що ви хочете зробити, це вставлення (проміжні) виведення різних частин вашої мережі в новий рівень. Ви насправді хочете розділитись на кілька різних частин.


Дуже дякую. Коли ми зробимо це model.fit([data1, data2], [labels1, labels2]), це буде тренуватися (поширення спини) як єдина модель, правда?
Адітя

1
Так, це буде лише одне, якщо на етикетках пов’язані різні втрати, вам потрібно буде виконати ще одну роботу, це не дуже просто в Керасі, але не неможливо, якщо вони поділяють ту саму функцію втрат, не зважуючи її, вона просто працює з коробки
Ян ван дер Вегт

Це вимагало б перепідготовки єдиної моделі. Що робити, якщо у вас вже є тренувальні ваги для підмоделей? Чи є спосіб використовувати ці ваги для створення віз для об'єднаної моделі?
shahar_m

@shahar_m Вибачте, я не впевнений, що таке використання. якщо тренувальні ваги уніфікованої моделі фіксовані, ви можете завантажувати та заморожувати ці шари.
Адітя
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.