Skip to content

Instantly share code, notes, and snippets.

Created June 21, 2017 06:48
Show Gist options
  • Select an option

  • Save anonymous/93cb21761ae4748f0315f4fa315ec965 to your computer and use it in GitHub Desktop.

Select an option

Save anonymous/93cb21761ae4748f0315f4fa315ec965 to your computer and use it in GitHub Desktop.

Revisions

  1. @invalid-email-address Anonymous created this gist Jun 21, 2017.
    37 changes: 37 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    from random import choice # zwraca losowy element z listy
    from numpy import array # macierz (typ danych)
    from numpy import dot # iloczyn skalarny
    from numpy import random # losowanie macierzy (niestety konflikt nazw)

    dane_treningowe = [ # modelujemy AND
    [array([1, 0, 0]), 0], # pierwszy element to wzbudzenie, zawsze równy 1
    (array([1, 1, 1]), 1),
    (array([1, 1, 0]), 1),
    (array([1, 0, 1]), 1),
    ]

    pamiec = random.rand(3) # losuję trzyelementową macierz (typ array)

    wsp_ucz = 0.2 # współczynnik uczenia
    ile = 100 # liczba powtórzeń uczenia

    def proguj(liczba):
    if liczba < 0:
    return 0
    return 1

    # uczenie:

    bledy = []


    for i in range(ile):
    dane, spodziewane = choice(dane_treningowe) # losuję zestaw uczący
    wynik = dot(pamiec, dane) # iloczyn skalarny dwóch wektorów - pamięci i danych
    error = spodziewane - proguj(wynik) # obliczenie błędu - jesli różne od 0, to trzeba poprawić pamięć
    bledy.append(error)
    pamiec += wsp_ucz * error * dane # jesli error != 0 to dodamy do wektora pamięci wektor powstały z takiego mnożenia (bo dane to wektor, a reszta to liczby)

    for dane, odrzut in dane_treningowe:
    wynik = dot(dane, pamiec)
    print("{}: {} -> {}".format(dane[1:], wynik, proguj(wynik)))