最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

BP神经网络源代码(basic)

来源:动视网 责编:小OO 时间:2025-09-28 21:06:21
文档

BP神经网络源代码(basic)

PrivateSubCommand5_Click() DimtempNumAsDoubleFactTimes=0Forloopt=0Totimes-1'学习次数     FactTimes=FactTimes+1tempNum=0IfFactTimes<2000Then'学习率的变化前大后小    alpha=0.5    beta=0.5Else    IfFactTimes>2000AndFactTimes<5000Then          alpha=0.4          beta
推荐度:
导读PrivateSubCommand5_Click() DimtempNumAsDoubleFactTimes=0Forloopt=0Totimes-1'学习次数     FactTimes=FactTimes+1tempNum=0IfFactTimes<2000Then'学习率的变化前大后小    alpha=0.5    beta=0.5Else    IfFactTimes>2000AndFactTimes<5000Then          alpha=0.4          beta
Private Sub Command5_Click()

 Dim tempNum AsDouble

FactTimes = 0

For loopt = 0 To times - 1 '学习次数

      FactTimes= FactTimes + 1

tempNum = 0

If FactTimes < 2000 Then '学习率的变化前大后小

     alpha = 0.5

     beta = 0.5

Else

     IfFactTimes > 2000 And FactTimes < 5000 Then

           alpha= 0.4

           beta= 0.4

     Else

           alpha = 0.3

           beta= 0.3

     End If

End If

 

'开始神经网络计算

'/*---Beginning of neural computting---*/

For loopl = 1 To LearnExampleNums  '学习模式个数

      '/*forward computting */

      '/* inputlayer */

      For i = 1To InputUnitNums

           OutofInputLayer(i) = inDatas(loopl, i)

      Next i

      '/* hidelayer */

      For i = 1To HideUnitNums

          inival = CDbl(0)

           For j= 1 To InputUnitNums

                inival = inival + w_InputHide(i, j) * OutofInputLayer(j)

           Nextj

          inival = inival + Cw_Hide(i)

          OutofHideLayer(i) = Sigmf(inival)

      Next i

      '/* outputlayer */

      For i = 1To OutUnitNums

          inival = 0#

           For j= 1 To HideUnitNums

                 inival = inival + w_HideOut(i, j) *OutofHideLayer(j)

           Nextj

           inival = inival + Cw_Out(i)

           OutofOutLayer(i) = Sigmf(inival)

      Next i

      '/*---Backpropagation---*/

      '/* deltacaclculate*/

      Error = 0#

      For i = 1To OutUnitNums

                wk = OutofOutLayer(i)

                wkb = Teacher(loopl, i) - wk

                '计算每个学习模式中各个输出结点的误差平方和

                Error = Error + wkb * wkb

                 DEL_Out(i) = wkb * wk * (1# - wk)

      Next i

      '/* deltacaclculate*/

      For i = 1To HideUnitNums

           inival = 0#

            Forj = 1 To OutUnitNums

                 inival = inival + (DEL_Out(j) * w_HideOut(j, i))

            Nextj

            wk =OutofHideLayer(i)

           DEL_Hide(i) = inival * wk * (1# - wk)

      Next i

 

      '/*updating for weights from Hide Layer */

      For i = 1To OutUnitNums

           DCw_Out(i) = alpha * DEL_Out(i)

            Forj = 1 To HideUnitNums

                  Dw_HideOut(i, j) = alpha *DEL_Out(i) * OutofHideLayer(j)

               Next j

          Next i

          '/*updating for weights from Input Layer */

          For i= 1 To HideUnitNums

               DCw_Hide(i) = beta * DEL_Hide(i)

               For j = 1 To InputUnitNums

                     Dw_InputHide(i, j) = beta * DEL_Hide(i) * OutofInputLayer(j)

               Next j

          Next i

          '*input layer to hide layer

          For i= 1 To HideUnitNums

                wk = moment * OCw_Hide(i) +DCw_Hide(i)

               Cw_Hide(i) = Cw_Hide(i) + wk

               OCw_Hide(i) = wk

               For j = 1 To InputUnitNums

                     wk = moment * Ow_InputHide(i, j) + Dw_InputHide(i, j)

                      w_InputHide(i, j) =w_InputHide(i, j) + wk

                     Ow_InputHide(i, j) = wk

               Next j

          Next i

 

           '*hide layer to output layer

           For i= 1 To OutUnitNums

               wk = moment * OCw_Out(i) + DCw_Out(i)

               Cw_Out(i) = Cw_Out(i) + wk

               OCw_Out(i) = wk

               For j = 1 To HideUnitNums

                     wk = moment * Ow_HideOut(i, j) + Dw_HideOut(i, j)

                     w_HideOut(i, j) = w_HideOut(i, j) + wk

                     Ow_HideOut(i, j) = wk

               Next j

           Nexti

           '所有学习模式的误差总和

          tempNum = tempNum + Error

     Next loopl

 

     '如果达到了要求的误差范围,就可以退出循环

     If((tempNum / 2) <= ErLimit) Then

           ExitFor

     End If

Next loopt

List1.Clear

For i = 1 To OutUnitNums

     For j = iTo HideUnitNums

          List1.AddItem "w_HideOut(" & i & 

     Next j

    List1.AddItem "OutofOutLayer(" & i & ") "& OutofOutLayer(i)

Next i

For i = 1 To HideUnitNums

     For j = 1To InputUnitNums

          List1.AddItem "w_InputHide( " & i & ", "& j & ")=" & w_InputHide(i, j)

     Next j

    List1.AddItem "OutofHideLayer(" & i & ")="& OutofHideLayer(i)

Next i

List1.AddItem "全局误差=" & Format$(tempNum/ 2, "##.###,#")

List1.AddItem "预测误差=" &Format$(Sqr(tcmpNum / 2), "##.###")

List1.AddItem "循环次数=" & FactTimes

'cmdSave. Enabled= True

'cmdNetCal.Enabled = False

Beep

vsFlexArray3.Rows = HideUnitNums + 1

vsFlexArray3.Cols = InputUnitNums + 1

vsFlexArray5.Rows = HideUnitNums + 1

For i = 1 To HideUnitNums

    vsFlexArray5.TextMatrix(i, 1) = Cw_Hide(i)

     For j = 1To InputUnitNums

          vsFlexArray3.TextMatrix(i, j) = w_InputHide(i, j)

     Next j

Next i

vsFlexArray3.SaveGrid App.Path &"WeightlN_HD.dat", flexFileAll

vsFlexArray5.SaveGrid App.Path &"OffsetHIDE.dat", flexFileAll

vsFlexArray4.Rows = OutUnitNums + 1

vsFlexArray4.Cols = HideUnitNums + 1

vsFlexArray6.Rows = OutUnitNums + 1

For i = 1 To OutUnitNums

     vsFlexArray6.TextMatrix(i, 1) = Cw_Out(i)

      For j = 1To HideUnitNums

          vsFlexArray4.TextMatrix(i, j) = w_HideOut(i, j)

     Next j

Next i

vsFlexArray4.SaveGrid App.Path &"WeightHD_OT.dat", flexFileAll

vsFlexArray6.SaveGrid App.Path & "OffsetOUT.dat", flexFileAll

End Sub

 

Private Sub Command6_Click()

vsFlexArray1.Rows = 2

vsFlexArray1.Cols = Text1.Text + 1

vsFlexArray2.Rows = 2

vsFlexArray2.Cols = Text3.Text + 1

vsFlexArray3.Rows = Text2.Text + 1

vsFlexArray3.Cols = Text1.Text + 1

vsFlexArray4.Rows = Text3.Text + 1

vsFlexArray4.Cols = Text2.Text + 1

vsFlexArray5.Rows = Text2.Text + 1

vsFlexArray5.Cols = 2

vsFlexArray6.Rows = Text3.Text + 1

vsFlexArray6.Cols = 2

LearnExampleNums = 1 '每次只验证一个数据

vsFlexArray1.Clear

vsFlexArray2.Clear

vsFlexArray2.Enabled = False

vsFlexArray2.Editable = False

vsFlexArray1.SetFocus

MsgBox "请在学习样本网格中输入数据!"

End Sub

 

Private Sub Command7_Click()

Dim Nums() As Double

ReDim Nums(vsFlexArray1.Cols - 1)

For i = 1 To Text1.Text

      Nums(i) =vsFlexArray1.TextMatrix(1, i)

Next i

'读入 INPUT TO HIDE 权值文件

vsFlexArray3.LoadGrid App.Path &"WeightlN_ttD.dat", flexFileAll

'读入 HIDE TO OUTPUT 权值文件

vsFlexArray4.LoadGrid App.Path &"WeightHD_OT.dat", flexFileAll

'读入 HIDE 层偏置文件

vsFlexArray5.LoadGrid App.Path &"OffsetHIDE.dat", flexFileAll

'读入 OUTPUT 层偏置值文件

vsFlexArray6.LoadGrid App.Path &"OffsetOUT.dat", flexFileAll

'/* hide layer */

For i = 1 To HideUnitNums

     inival = 0#

     For j = 1To InputUnitNums

          inival = inival + vsFlexArray3.TextMatrix(i, j) * Nums(j)

     Next j

      inival =inival + vsFlexArray5.TextMatrix(i, 1)

    OutofHideLayer(i) = Sigmf(inival)

Next i

'/* output layer */

For i = 1 To OutUnitNums

      inival = 0#

      For j = 1To HideUnitNums

          inival = inival + vsFlexArray4.TextMatrix(i, j) * OutofHideLayer(j)

     Next j

      inival =inival + vsFlexArray6.TextMatrix(i, 1)

     OutofOutLayer(i) = Sigmf(inival)

     Label2.Caption = "验证结果:"

     vsFlexArray2.TextMatrix(1, i) = Format(OutofOutLayer(i),"#,###.###,#")

Next i

Command9.Enabled = True

End Sub

 

Private Sub Command8_Click()

End

End Sub

文档

BP神经网络源代码(basic)

PrivateSubCommand5_Click() DimtempNumAsDoubleFactTimes=0Forloopt=0Totimes-1'学习次数     FactTimes=FactTimes+1tempNum=0IfFactTimes<2000Then'学习率的变化前大后小    alpha=0.5    beta=0.5Else    IfFactTimes>2000AndFactTimes<5000Then          alpha=0.4          beta
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top