Можно ли в Keras кластеризовать входные данные и затем передавать данные в разные подсети в зависимости от кластера? - PullRequest
0 голосов
/ 11 апреля 2019

По сути, я пытаюсь сделать следующее:

  • Выполнить некоторую базовую кластеризацию, например, K-средних, для входных данных.

  • Получить членство в кластере входных выборок.

  • Подготовка отдельной подмодели глубокой нейронной сети для каждого кластера.

Ниже приведена базовая схема идеи.Visualization of my idea

Можно ли сделать это, используя модель с одним керасом?

Я пытался сделать это, используя sklearn KMeans для разделения моих входных данных на кластеры, а затем обучая отдельную модель Keras для каждого кластера, но этот подход затрудняет вычисление ошибки теста позже, так как мне приходитсяполучить тестовую ошибку из каждого кластера, а затем вручную рассчитать общую ошибку.

1 Ответ

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

Мне кажется, проблема в том, что вы группируете данные по трем группам и хотите использовать модель для изучения различного распределения каждой группы. У меня есть несколько грубых идей.

  1. Вы можете позволить кластерному индексу быть меткой каждой группы и соответствовать этому метке и вашей первоначальной цели одновременно. Как:

    output1 = Плотный (cluster_numbers, активация = 'softmax') (x)

    output2 = Плотный (output_dimensions, активация = 'softmax') (x)

  2. Или, если ваши данные сгруппированы в соответствии с вашей первоначальной целью, и они являются взаимоисключающими, вы также можете использовать серию паратактических слоев для вывода результатов. Но это сделает вашу модель очень большой. Как:

    output = [Плотный (output_dimensions, активация = 'softmax') (x) для _ in cluster_numbers]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...