Mam sieć neuronową z architekturą 1024, 512, 256, 1
(warstwa wejściowa ma jednostki 1024
, warstwa wyjściowa ma jednostkę 1
itd.). Chciałbym wyszkolić tę sieć za pomocą jednego z algorytmów optymalizacji w scipy.optimize
.Rozwiązywanie problemów z pamięcią w sieci o wielu masach
Problem polega na tym, że algorytmy te oczekują podania parametrów funkcji w jednym wektorze; Oznacza to, że w moim przypadku, muszę rozwinąć wszystkie ciężary w wektorze długości
1024*512 + 512*256 + 256*1 = 655616
Niektóre algorytmy (jak fmin_bfgs
) trzeba użyć macierzy tożsamości, a więc wykonać połączenie jak
I = numpy.eye(655616)
co, niezbyt zaskakująco, produkuje MemoryError
. Czy jest jakiś sposób, aby uniknąć konieczności rozwijania wszystkich wag w jednym wektorze, skoro nie dostosowuję algorytmów do moich własnych potrzeb?
Wow, to dużo ciężarów, które pasują. (+1) – NPE
@NPE Muszę przyznać, że tak naprawdę nie wiem, co robię. Szkolę się na obrazach o rozmiarze 32x32. Czy mogę sprawić, by obrazy były jeszcze mniejsze? –
Ponownie, zmniejszając rozmiar obrazów do '16x16' i używając architektury' 256, 128, 1', nadal miałbym i rozwinęłam wektor wagowy o długości '32896'. –