Código de Visual Basic.NET - Perseptron simple

Imágen de perfil
Val: 26
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Perseptron simplegráfica de visualizaciones


Visual Basic.NET

Publicado el 26 de Abril del 2021 por Rafael Angel (81 códigos)
2.830 visualizaciones desde el 26 de Abril del 2021
Mi primer neur
Neurona-artificial-modificada-por-Rafael-Angel-Montero-Fernandezona Perseptron, si bien desde el 2012 ya sabia hacer neuronas artificiales, yo estaba consciente que le faltaba algunas cosas.
No estaba 100% seguro de los conceptos.
En aquellos días era difícil ver tutoriales por video; hoy día es diferente, rápidamente se puede aprender viendo un video.
Nada como la comunicación verbal en combinación con el lenguaje corporal de un ser humano.
.
Dicha neurona es capaz de aprender, tiene todos los objetos que tiene una neurona, más un extra, la función de nacionalización de los pesos, con lo cual no es necesario usar un valor aleatorio.

Requerimientos

Tener Visual Basic.Net 2017 o superior.

1.0
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 26 de Abril del 2021gráfica de visualizaciones de la versión: 1.0
2.831 visualizaciones desde el 26 de Abril del 2021
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Un simple ejemplo, practica y aprendizaje.
En mi caso me ha servido para enriquecer más mis conocimientos de las redes neuronales artificiales.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
Public MustInherit Class PerseptronSimple
 
    'Autor: Rafael Angel Montero Fernández.
    'Correo Sharkyc12@gmail.com
    'Fecha de creacion de la neurona domingo 18 de abril del 2021.
    'Hora 3:18am.
    'Esta es mi primera neurona que si he comprobado que esta correctamente diseñada.
    'Basada en el video de youTube:
    'Redes Neuronales Artificiales | El Perceptrón Simple | Algoritmo de entrenamiento | Python
 
    Private mEntradas(2) As Double ' 0 to 4 (1 to 3)
    Private mPesos(2) As Double
 
    Public Overridable Sub InicializarPesos()
        'Procedimiento para inicializar los pesos.
        Const NUMERO_DE_ENTRADAS As Double = 2
 
        For i As Integer = 0 To mPesos.Length - 1
            mPesos(i) = 1 / (1 + NUMERO_DE_ENTRADAS)
        Next
    End Sub
 
    Public Overridable Property prPeso1() As Double
        Get
            Return mPesos(0)
        End Get
        Set(value As Double)
            mPesos(0) = value
        End Set
    End Property
 
    Public Overridable Property prPeso2() As Double
        Get
            Return mPesos(1)
        End Get
        Set(value As Double)
            mPesos(1) = value
        End Set
    End Property
 
    Public Overridable Property prPeso3() As Double
        Get
            Return mPesos(2)
        End Get
        Set(value As Double)
            mPesos(2) = value
        End Set
    End Property
 
    Public Overridable Property prPeso4() As Double
        Get
            Return mPesos(3)
        End Get
        Set(value As Double)
            mPesos(3) = value
        End Set
    End Property
 
    Public Overridable Property prEntrada1() As Double
        Get
            Return mEntradas(0)
        End Get
        Set(value As Double)
            mEntradas(0) = value
        End Set
    End Property
 
    Public Overridable Property prEntrada2() As Double
        Get
            Return mEntradas(1)
        End Get
        Set(value As Double)
            mEntradas(1) = value
        End Set
    End Property
 
    Public Overridable Property prEntrada3() As Double
        Get
            Return mEntradas(2)
        End Get
        Set(value As Double)
            mEntradas(2) = value
        End Set
    End Property
 
    Public Overridable Property prEntrada4() As Double
        Get
            Return mEntradas(3)
        End Get
        Set(value As Double)
            mEntradas(3) = value
        End Set
    End Property
 
    Private vUmbralDeActivacion As Double
 
    Public Overridable Property prUmbralDeActivacion() As Double
        'Si el valor de la funcion de activacion es mayor al umbral entonces, se activa la neurona y produce una salida.
        Get
            Return vUmbralDeActivacion
        End Get
        Set(value As Double)
            vUmbralDeActivacion = value
        End Set
    End Property
 
    Protected Overridable Function Activacion() As Double
        ' On Error Resume Next
        Dim sumatoria_de_entradas_y_pesos As Double = 0
        For i As Integer = 0 To mEntradas.Length - 1
            sumatoria_de_entradas_y_pesos += mEntradas(i) * mPesos(i)
        Next
        sumatoria_de_entradas_y_pesos -= vUmbralDeActivacion
        Debug.Print("En Activacion sumatoria=" & sumatoria_de_entradas_y_pesos)
        'El condicional if no es necesario aquí, se ocnserva por si acaso.
        If sumatoria_de_entradas_y_pesos > vUmbralDeActivacion Then
            'En la activacion es donde se verifica si se activa o no de acuerdo al umbral de activacion.
            Return sumatoria_de_entradas_y_pesos 'intencional
        Else
            Return 0 'sumatoria_de_entradas_y_pesos 'intencional
        End If
    End Function
 
    Public Overridable Function Salida() As Double
        Debug.Print("Activacion en salida = " & Activacion())
        If Activacion() >= 0 Then
            '    'En la salida es donde se verifica si el valor es igual o menor a cero o es mayor o igual a cero.
            Return 1
        End If
        If Activacion() < 0 Then
            '    'En la salida es donde se verifica si el valor es igual o menor a cero o es mayor o igual a cero.
            Return 0
        End If
 
        'If Activacion() = 0 Then
        '    '    'No se usa porque da problemas al entrenar la neurona.
        '    Return 0
        'End If
        Return Activacion()
    End Function
 
    Public Overridable Sub AjustarUmbral()
        'Dim v As Double = vUmbralDeActivacion - (vFactorDeAprendizage * vError_calculado)
        vUmbralDeActivacion += (vFactorDeAprendizage * vError_calculado)
    End Sub
 
    Public Sub AjustarPesos()
        For i As Integer = 0 To mPesos.Length - 1
            mPesos(i) += vFactorDeAprendizage * vError_calculado * mEntradas(i)
        Next
    End Sub
 
    Private vError_calculado As Double
    Public Overridable Sub CalcularError()
        'Se debe ejecutar primero antes de ajustar umbral y pesos.
        vError_calculado = Salida() - vValorDeseado
    End Sub
 
    Protected Overridable Sub CambioDeUmbral()
        'Despues de CalcularError, se procede a cambiar el umbral.
        vUmbralDeActivacion = vFactorDeAprendizage * vError_calculado
    End Sub
 
    Private vValorDeseado As Double
    Public Overridable Property prValorDeseado() As Double
        'Util para calcular el error de aprendizaje.
        Get
            Return vValorDeseado
        End Get
        Set(value As Double)
            vValorDeseado = value
        End Set
    End Property
 
    Private vFactorDeAprendizage As Double
 
    Public Overridable Property prFactorDeAprendizage() As Double
        'Util para calcular el error de aprendizaje.
        Get
            Return vFactorDeAprendizage
        End Get
        Set(value As Double)
            vFactorDeAprendizage = value
        End Set
    End Property
End Class



Comentarios sobre la versión: 1.0 (1)

Walter Ordoñez
25 de Agosto del 2023
estrellaestrellaestrellaestrellaestrella
Buen proyecto, de casualidad, tendrás el proyecto como tal, que me lo puedas compartir a mi correo en formato .RAR, soy catedrático de universidad y estoy enseñando redes neuronales en el cursos de Sistemas Expertos y me intereso bastante tu proyecto.

Muchas gracias desde ya, quedo al pendiente,

saludos.
Responder

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7024