Witam, czy implementował może ktoś z forumowiczów sieć Hopfielda w Ruby’m? Potrzebuję pomocy w implementacji tej sieci neuronowej.
http://ruby-fann.rubyforge.org/ i http://ai4r.rubyforge.org/ to jedyne co znalazlem do sieci neuronowych do Ruby, ale to bylo z rok temu. Wyglada ze AI4R ma Hopfield nets.
Witam, mam problem z klasą Matrix z którym napotkałem się w czasie tworzenia projektu
Przy tworzeniu klasy Hopfield:
tworzę macierz postaci
tablica = [[1,1,1,1], [1,1,1,1], [1,1,1,1], [1,1,1,1]]
chcę wywołać metodę diagonal dla zmiennej macierz_wag tak aby na przekątnej tej macierzy 4x4 pojawiły się zera: macierz_wag.diagonal
Niestety pojawia mi się błąd że nie można wywołać tej metody.
Gdy na przykład stworzę macierz poleceniem Matrix[ [1,2], [1,3]].diagonal to ta funkcja zadziała i robi co trzeba
piszesz o Matrix z stdlib ?
bo tam metoda diagonal jest klasowa, więc ten ostatni kod nie może działać
Ma na przykła coś takiego:
[code]@macierz_wzorca_2 = Matrix[ *[].fill([].fill(0, 0, @tablica_2.numRows), 0, @tablica_2.numColumns) ]
tablica_2 = [[0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0]]
for i in (0…6) do
for j in (0…4) do
tablica_2[i][j] = Integer(@tablica_2.getItemText(i,j))
end
end
@macierz_wzorca_2 = Matrix.rows(tablica_2)
@macierz_wzorca_2.diagonal(0,0,0,0,0,0,0)[/code]
i zwraca mi błąd
undefined method `diagonal’ for #Matrix:0xbaf3d44 (NoMethodError)
a może inaczej jak napisać metodę która nie wykorzystywała by metod z klasy Matrix aby ustawić przekątną diagonalną na same zera w takiej macierzy ?
undefined method `diagonal' for #<Matrix:0xbaf3d44> (NoMethodError)
bo jak pisałem, takiej metody instancyjnej nie ma
ciekawa nazwa
class Matrix
def zero_diagonal
row_size.times {|i| @rows[i][i] = 0}
end
end
nie najładniej bo polegam na wewnętrznej implementacji, no ale Matrix nie ma settera dla elementów
Oczywiście chodziło mi o macierz diagonalną. Metoda działa. Dziekuje Cube za pomoc.