Wyszukaj
Wyświetlanie wyników dla tagów 'SSN' .
-
Witam Mam mały problem ze skryptem z sieci neuronowych (to jest mój pierwszy program z ANN) i miałbym prośbę o wskazówkę jak wyuczyć poniższą sieć: 1. Mam sieć złożoną z węzłów: wejściowego in, wyjściowego out oraz 8 neuronów n_1, ..., n_8. 2. Dla każdego neuronu mam takie połączenia: in -> n_i z wagą w_i oraz bias równe u_i . n_i -> out z wagami v_i oraz bias dla out równe v_0 3. Chcę wyuczyć taką sieć następującej funkcji 0->1, 1->0, 2->0, 3->1. 4. Korzystam z funkcji sigmoidalnej: sigma = function(x) (1 / (1 + exp(- x * beta))) # Beta stałe 5. Początkowe wartości wektorów w, v, u oraz liczbę v0 losuję: w = sample(seq(-10, 10, by = 0.1), n, replace = FALSE) u = sample(seq(-10, 10, by = 0.1), n, replace = FALSE) v = sample(seq(-10, 10, by = 0.1), n, replace = FALSE) v0 = sample(seq(0, 10), 1) 6. Sieć trenuję za pomocą następującej funkcji: train = function(argument, value, eta) { h <- sigma(w * argument - u) o <- sigma(sum(v * h) - v0) d0 <- o * (1 - o) * (value - o) dh <- h * (1 - h) * v * d0 dv <- eta * d0 * h dv0 <- - eta * d0 dw <- eta * dh * argument du <- - eta * dh w <<- w + dw u <<- u + du v <<- v + dv v0 <<- v0 + dv0 } 7. Moje pytanie jest następujące: jak powinienem wytrenować tą sieć i dobrać współczynniki beta oraz eta? Do tej pory próbowałem wybierać beta = 1, ..., 10 oraz trenować poprzez for (eta in seq(0.7, 0.0001, by = -0.000001) {...} , ale coś nie działa. Z góry dziękuję za pomoc i pozdrawiam