Я хотел бы использовать ANNs для моей проблемы, но проблема заключается в том, что номера входов и выходов не являются фиксированными.
Я сделал поиск в Google, прежде чем задавать вопрос, и обнаружил, что RNN может помочь мне с моей проблемой. Но все примеры, которые я нашел, так или иначе определили количество входных и выходных узлов.
Итак, я ищу стратегию, как сделать ее реальной или хотя бы несколько примеров, предпочтительнее в Keras или PyTorch.
Подробнее о моей проблеме:
У меня есть два списка входов, где длина первого фиксирована и равна двум, например:
in_1 = [2,2]
но длина второго списка гибкая, длина может быть от трех до inf, например:
in_2 = [1,1,2,2]
или
in_2 = [1,1,1,2,2,2,3,3,3]
Кроме того, списки ввода зависят друг от друга. Первый список показывает размерность выходного списка. Таким образом, если in_1 = [2,2], значит, выход должен иметь возможность изменить форму [2,2].
В настоящее время я думаю объединить два списка ввода в один:
in = in_1 + in_2 = [2, 2, 1, 1, 2, 2]
Кроме того, выходные данные имеют ту же длину, что и список in_2 , например:
если входные списки:
in_1 = [2, 2]
in_2 = [1, 1, 2, 2]
Вывод должен быть:
out = [1, 2, 1, 2]
Любые идеи приветствуются!
Я думаю, что вы, возможно, неправильно поняли фиксированное количество входов для RNN. Это количество входов за такт . Все ваши примеры имеют фиксированное количество входов за такт: 1! Вы подаете их по одному в свою нейронную сеть, заканчивая специальным токеном «конца» (у вас всегда может быть второй вход для этого). Научите его не выводить до тех пор, пока он не увидит конечный токен, а затем выводить компоненты результата по одному, заканчивая специальным конечным выходным токеном.
источник
Зная, что первый список в значительной степени инвариантен (просто описывает определенную геометрию), вы также можете попробовать создать много разных специализированных NN для каждой отдельной конфигурации in_1 и использовать только in_2 для подачи в сеть.
Таким образом, in_1 может управлять различными сетями.
На первом этапе вы определяете конфигурацию (т.е. создаете диктат), а затем соответственно обучаете / кормите специализированные сети.
источник