📄 参考vb批处理神经网络.frm.txt
字号:
Tempinputdata(k, i) = Temp
End If
Next k
Next p
max(i) = Tempinputdata(RecordNumber, i)
Next i
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Open "F:\批处理神经网络\PP.txt" For Output As #1
For i = 1 To InputNumber + OutputNumber
Print #1, max(i);
Next i
Close #1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'将初始数组进行归一化处理
For i = 1 To InputNumber + OutputNumber
For p = 1 To RecordNumber
standardinputdata(p, i) = Val(Format((standardinputdata(p, i) / max(i)), "#.#####"))
Next p
Next i
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Open "F:\批处理神经网络\PPP.txt" For Output As #1
m = 0
For p = 1 To RecordNumber
For i = 1 To InputNumber + OutputNumber
Print #1, standardinputdata(p, i);
m = m + 1
If m Mod (InputNumber + OutputNumber) = 0 Then
Print #1,
End If
Next i
Next p
Close #1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行输入层隐含层间连接权重的赋值
For j = 1 To InputNumber
For k = 1 To HideNumber
WIH(j, k) = 1
Do While WIH(j, k) < (-0.3) Or WIH(j, k) > 0.3
Randomize
WIH(j, k) = Val(Format(Rnd(), "##.#####"))
Loop
Next k
Next j
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行隐含层输出层间连接权重的赋值
For k = 1 To HideNumber
For l = 1 To OutputNumber
WHO(k, l) = 1
Do While WHO(k, l) < (-0.3) Or WHO(k, l) > 0.3
Randomize
WHO(k, l) = Val(Format(Rnd(), "##.#####"))
Loop
Next l
Next k
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行隐含节点阈值的赋值
For k = 1 To HideNumber
thresholdhide(k) = 1
Do While thresholdhide(k) < (-0.3) Or thresholdhide(k) > 0.3
Randomize
thresholdhide(k) = Val(Format(Rnd(), "##.#####"))
Loop
Next k
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行输出节点阈值的赋值
For l = 1 To OutputNumber
thresholdoutput(l) = 1
Do While thresholdoutput(l) < (-0.3) Or thresholdoutput(l) > 0.3
Randomize
thresholdoutput(l) = Val(Format(Rnd(), "##.#####"))
Loop
Next l
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'提取标准的输出数据
For p = 1 To RecordNumber
For l = 1 To OutputNumber
expect(p, l) = standardinputdata(p, InputNumber + l)
Next l
Next p
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'求对应每组数据隐含节点的输出值
For p = 1 To RecordNumber
For k = 1 To HideNumber
Temp1 = 0
For j = 1 To InputNumber
Temp1 = Temp1 + standardinputdata(p, j) * WIH(j, k)
Next j
Temp1 = Val(Format(Temp1, "##.#####"))
hidedata(p, k) = 1 / (1 + (Exp(-(Temp1 - thresholdhide(k)))))
hidedata(p, k) = Val(Format(hidedata(p, k), "##.#####"))
Next k
Next p
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'求对应每组数据输出节点的输出值
For p = 1 To RecordNumber
For l = 1 To OutputNumber
Temp2 = 0
For k = 1 To HideNumber
Temp2 = Temp2 + hidedata(p, k) * WHO(k, l)
Next k
Temp2 = Val(Format(Temp2, "##.#####"))
outputdata(p, l) = 1 / (1 + (Exp(-(Temp2 - thresholdoutput(l)))))
outputdata(p, l) = Val(Format(outputdata(p, l), "##.#####"))
Next l
Next p
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
wuchamatrix = 0
For p = 1 To RecordNumber
For l = 1 To OutputNumber
wuchamatrix = wuchamatrix + (expect(p, l) - outputdata(p, l)) * (expect(p, l) - outputdata(p, l))
Next l
Next p
wuchamatrix = 0.5 * wuchamatrix
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
cishu = 1
Do While wuchamatrix > wucha
'求输出层节点传播误差
For p = 1 To RecordNumber
For l = 1 To OutputNumber
wuchaoutput(p, l) = (expect(p, l) - outputdata(p, l)) * outputdata(p, l) * (1 - outputdata(p, l))
wuchaoutput(p, l) = Val(Format(wuchaoutput(p, l), "##.#####"))
Next l
Next p
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'求隐含层节点传播误差
For p = 1 To RecordNumber
For k = 1 To HideNumber
wuchahide(p, k) = 0
For l = 1 To OutputNumber
wuchahide(p, k) = wuchahide(p, k) + wuchaoutput(p, l) * WHO(k, l) * hidedata(p, k) * (1 - hidedata(p, k))
Next l
wuchahide(p, k) = Val(Format(wuchahide(p, k), "##.#####"))
Next k
Next p
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行输出节点阈值的调整
For l = 1 To OutputNumber
For p = 1 To RecordNumber
thresholdoutput(l) = thresholdoutput(l) - pace * wuchaoutput(p, l)
Next p
thresholdoutput(l) = Val(Format(thresholdoutput(l), "##.#####"))
Next l
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行隐含输出权重的调整
For k = 1 To HideNumber
For l = 1 To OutputNumber
For p = 1 To RecordNumber
WHO(k, l) = WHO(k, l) + pace * wuchaoutput(p, l) * hidedata(p, k)
Next p
WHO(k, l) = Val(Format(WHO(k, l), "##.#####"))
Next l
Next k
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行隐含节点阈值的调整
For k = 1 To HideNumber
For p = 1 To RecordNumber
thresholdhide(k) = thresholdhide(k) - pace * wuchahide(p, k)
Next p
thresholdhide(k) = Val(Format(thresholdhide(k), "##.#####"))
Next k
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'进行输入隐含层间权重的调整
For j = 1 To InputNumber
For k = 1 To HideNumber
For p = 1 To RecordNumber
WIH(j, k) = WIH(j, k) + pace * wuchahide(p, k) * standardinputdata(p, j)
Next p
WIH(j, k) = Val(Format(WIH(j, k), "##.#####"))
Next k
Next j
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'求对应每组数据隐含节点的输出值
For p = 1 To RecordNumber
For k = 1 To HideNumber
Temp1 = 0
For j = 1 To InputNumber
Temp1 = Temp1 + standardinputdata(p, j) * WIH(j, k)
Next j
Temp1 = Val(Format(Temp1, "##.#####"))
hidedata(p, k) = 1 / (1 + (Exp(-(Temp1 - thresholdhide(k)))))
hidedata(p, k) = Val(Format(hidedata(p, k), "##.#####"))
Next k
Next p
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'求对应每组数据输出节点的输出值
For p = 1 To RecordNumber
For l = 1 To OutputNumber
Temp2 = 0
For k = 1 To HideNumber
Temp2 = Temp2 + hidedata(p, k) * WHO(k, l)
Next k
Temp2 = Val(Format(Temp2, "##.#####"))
outputdata(p, l) = 1 / (1 + (Exp(-(Temp2 - thresholdoutput(l)))))
outputdata(p, l) = Val(Format(outputdata(p, l), "##.#####"))
Next l
Next p
cishu = cishu + 1
wuchamatrix = 0
For p = 1 To RecordNumber
For l = 1 To OutputNumber
wuchamatrix = wuchamatrix + (expect(p, l) - outputdata(p, l)) * (expect(p, l) - outputdata(p, l))
Next l
Next p
wuchamatrix = 0.5 * wuchamatrix
'If cishu Mod 100 = 0 Then
'r = MsgBox(maxwucha & "是当前的误差,你想退出吗?", 36, "提醒!")
'If r = 6 Then End
'End If
Loop
Text1(6).Visible = True
Text1(6).Text = Str(cishu)
Open "F:\批处理神经网络\OUTPUT.txt" For Output As #1
For p = 1 To RecordNumber
For l = 1 To OutputNumber
Print #1, outputdata(p, l) * max(InputNumber + l)
Next l
Next p
Close #1
End Sub
'Open "F:\批处理神经网络\WIH.txt" For Append As #1
' Print #1,
' m = 0
' For i = 1 To InputNumber
' For j = 1 To HideNumber
' Print #1, WIH(i, j);
' m = m + 1
' If m Mod HideNumber = 0 Then
' Print #1,
' End If
' Next j
' Next i
'Close #1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -