Тренировка адалина - PullRequest
       0

Тренировка адалина

0 голосов
/ 02 января 2012

Я хочу узнать, как работает нейрон Adaline.

Я написал пример кода для VB.NET и хочу обучить функцию И или функцию ИЛИ для нейрона.

Вот мой код:

    Dim Valid As Boolean
    Dim c As Integer = 0
    Do
        Valid = True
        c += 1

        For i As Integer = 0 To ListBox1.Items.Count - 1
            Dim s() As String = Microsoft.VisualBasic.Split(ListBox1.Items(i), " ")
            Dim y As Single = (W(1) * CInt(s(0)) + W(2) * CInt(s(1)))' + W(3) * 1)
            W(1) += Alpha * CSng(CInt(s(2)) - y) * CSng(CInt(s(0)))
            W(2) += Alpha * CSng(CInt(s(2)) - y) * CSng(CInt(s(1)))
            'W(3) += Alpha * CSng(CInt(s(2)) - y) * 1.0
        Next
        For i As Integer = 0 To ListBox1.Items.Count - 1
            Dim s() As String = Microsoft.VisualBasic.Split(ListBox1.Items(i), " ")
            Dim y As Single = (W(1) * CInt(s(0)) + W(2) * CInt(s(1)))' + W(3) * 1)
            If CInt(s(2)) = 1 Then
                If y < 1 Then
                    Valid = False
                End If
            Else
                If y >= 1 Then
                    Valid = False
                End If
            End If
        Next
    Loop Until ((Valid) Or (c > 100000))
    If c > 10000 Then
        MsgBox("I Can't Learn!", MsgBoxStyle.Exclamation)
    End If

Я пытался с предвзятостью и без предвзятости.(Если вы удалите отметку комментария из прокомментированных частей, смещение будет добавлено к нейрону)

, и я попытался использовать эти обучающие наборы для И & ИЛИ:

-1 -1 -1
-1 1 -1
1 -1 -1
1 1 1

0 0 0
0 1 0
1 0 0
1 1 1

0 0 0
0 1 1
1 0 1
1 1 1

-1 -1 -1
-1 1 1
1 -1 1
1 1 1

Но нейронне тренировался ни с одним из этих учебных наборов ...

Как мне решить мою проблему?

1 Ответ

0 голосов
/ 03 января 2012

Проблема в том, что моя функция жесткого ограничения изменяет выходной сигнал на 1, но он должен изменить ответ на 0.

Это измененная часть кода:

        If CInt(s(2)) = 1 Then
            If y < 0 Then
                Valid = False
            End If
        Else
            If y >= 0 Then
                Valid = False
            End If

Iпопробовал с включенным смещением и успешно обучил функции И & ИЛИ.

...