Chciałbym użyć ANN dla mojego problemu, ale problem polega na tym, że moje numery wejściowe i wyjściowe węzłów nie są naprawione.
Zanim zadałem pytanie, przeprowadziłem wyszukiwanie w Google i okazało się, że RNN może mi pomóc w rozwiązaniu mojego problemu. Ale wszystkie przykłady, które znalazłem, mają w jakiś sposób określoną liczbę węzłów wejściowych i wyjściowych.
Tak więc szukam strategii, jak ją urzeczywistnić, a przynajmniej kilka przykładów, najlepiej w Keras lub PyTorch.
Więcej szczegółów na temat mojego problemu:
Mam dwie listy danych wejściowych, w których długość pierwszej jest stała i wynosi dwie, np .:
in_1 = [2,2]
ale długość drugiej listy jest elastyczna, długość może wynosić od trzech do inf, np .:
in_2 = [1,1,2,2]
lub
in_2 = [1,1,1,2,2,2,3,3,3]
Również listy wejściowe zależą od siebie. Pierwsza lista pokazuje wymiar listy wyników. Więc jeśli in_1 = [2,2], oznacza, że wyjście musi mieć możliwość przekształcenia do postaci [2,2].
Obecnie myślę o połączeniu dwóch list wejściowych w jedną:
in = in_1 + in_2 = [2, 2, 1, 1, 2, 2]
Ponadto dane wyjściowe mają taką samą długość jak lista in_2 , fi:
jeśli listy wejściowe to:
in_1 = [2, 2]
in_2 = [1, 1, 2, 2]
Dane wyjściowe powinny wynosić:
out = [1, 2, 1, 2]
Wszelkie pomysły są mile widziane!
Myślę, że mogłeś źle zrozumieć stałą liczbę danych wejściowych dla RNN. Jest to liczba wejść przypadających na czas . Wszystkie twoje przykłady mają stałą liczbę danych wejściowych na czas: 1! Podajesz je pojedynczo do swojej sieci neuronowej, kończąc specjalnym tokenem „końca” (zawsze możesz mieć do tego drugi wkład). Naucz go, aby nie dawał wyjścia, dopóki nie zobaczy tokenu końcowego, a następnie wypisywać składniki wyniku pojedynczo, kończąc na specjalnym końcowym tokenie wyjściowym.
źródło
Wiedząc, że pierwsza lista jest prawie niezmienna (tylko opisuje pewną geometrię), możesz również spróbować stworzyć wiele różnych, wyspecjalizowanych NN dla każdej odrębnej konfiguracji in_1 i użyć tylko in_2 do zasilania sieci.
Więc in_1 może prowadzić różne sieci
W pierwszym kroku określasz konfigurację (tj. Tworzysz słownik), a następnie odpowiednio szkolisz / karmisz wyspecjalizowane sieci.
źródło