Нейронная сеть - несколько столбцов на элемент (Pytorch) - PullRequest
0 голосов
/ 27 апреля 2018

Я использую нейронную сеть для классификации, но для каждого пациента / элемента, который я хочу классифицировать, у меня есть 4 различных набора чисел для изучения (каждый со своим собственным результатом для сравнения), и, очевидно, я хочу Единый результат для каждого пациента. Я могу просто взять окончательные результаты, разделить их на группы по 4 и сделать что-то там, но это кажется хакерским и может вызвать проблемы позже, когда я попытаюсь выйти за рамки самой основной сети или попытаться сначала перемешать записи.

Есть ли стандартный метод для этого? Все, что я пытаюсь, вызывает у меня чувство, когда вы склеиваете решение, которое не изящно и неэффективно и не способствует дальнейшему расширению

1 Ответ

0 голосов
/ 29 апреля 2018

Из информации, которую вы добавили в комментариях, я понимаю (и исправляю меня, если я ошибаюсь), что у вас есть N пациентов, у каждого по K образцов - каждый образец состоит из определенных функций и промежуточного результата. У вас также есть способ взять эти промежуточные результаты K и объединить их в один конечный результат, который действительно вас интересует. Я также предполагаю, что каждый из промежуточных результатов не является взаимозаменяемым.

Допустим, например, что у вас определенное заболевание и вы берете K образцов крови у каждого пациента. каждый образец крови проверяется на наличие отдельного компонента, и по результатам вы можете определить, инфицированы они или нет. В этом примере K-тесты не являются взаимозаменяемыми, поскольку каждый тест для отдельного компонента.

Эта настройка может привести к двум общим конвейерам:

  1. Сквозной трубопровод
  2. Двухступенчатый трубопровод

В сквозном конвейере вы встраиваете все функции вместе. В вашем случае у вас есть K массивов из 4 чисел, поэтому ваш вход для нейронной сети будет 4 * K массивом. Вы должны всегда соблюдать порядок конкатенации (если ваши промежуточные результаты взаимозаменяемы, тогда это не обязательно), и ваш прогноз будет просто последним прогнозом, который вас действительно интересует.

В двухэтапном конвейере вы будете обучать K различных нейронных сетей, каждая получит один массив из 4 чисел и выведет промежуточный результат. Затем вам нужно будет объединить эти результаты для прогноза, который вы ищете. Два замечания о двухэтапном решении:

  1. Если массивы K являются взаимозаменяемыми, тогда этот подход не имеет смысла
  2. При необходимости вы можете продвинуться к этому подходу еще дальше и использовать промежуточные прогнозы K в качестве входных данных для другой сети, которая использует эти промежуточные результаты для получения окончательного прогноза.
...