kni4x Napisano Grudzień 15, 2011 Zgłoś Share Napisano Grudzień 15, 2011 Witam. Tworzę w Javie program ze sztucznej inteligencji, konkretniej sieć neuronową, którą następnie muszę wytrenować algorytmem wstecznej propagacji błędów. Udało mi się zaimplementować działającą sieć perceptronów i algorytm propagacji wstecznej jednak zaciąłem się na funkcji którą potrzebuję do tej sieci i nie mogę ruszyć dalej :confused:. Muszę stworzyć metodę tworzącą wszystkie możliwe macierze binarne 3x3 ( wypełnione tylko 0 i 1 ) tzn 2 do potęgi 9 = 512 macierzy i każdą z nich przepuścić przez napisaną przeze mnie sieć zapisując wyniki jakie moja sieć zwróci dla każdej z nich. W macierzy jest 9 elementów i poprostu nie mogę wpaść na to jak utworzyć rekurencyjną funkcję tworzącą wszystkie możliwe zestawienia tych 9 elementów. Bardzo proszę o pomoc:think:. Pozdrawiam Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Grudzień 16, 2011 Zgłoś Share Napisano Grudzień 16, 2011 Masz kod w Python 2.6. Przerób to sobie do Javy... tab="01" print "Zestaw znakow: ", print tab ciagi=[] def generuj(str, de): if de == 0: ciagi.append(str) return False for i in tab: if generuj(str + i, de - 1) == True: return True ilosc_znakow=9 generuj("", ilosc_znakow) print ciagi, len(ciagi) Generuje 512 ciągów znaków, chyba wiesz jak to upakować w te macierze W Pythonie jest jeszcze moduł itertools do robienia takich rzeczy, ale skoro większość masz już w Javie to stwierdziłem, ze Ci się to nie przyda Właściwie w Twoim przypadku można to załatwić iteracyjnie (odpowiednia ilość zagnieżdżeń pętli for ), skoro macierz ma stałą wielkość: tab="01" l=0 for a in tab: for b in tab: for c in tab: for d in tab: for e in tab: for f in tab: for g in tab: for h in tab: for i in tab: l+=1 print a+b+c+d+e+f+g+h+i print l Będzie trochę inna kolejność niż sposobem rekurencyjnym. Chyba, że Ci to nie przeszkadza ? Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.