0

ニューラルネットワークのコードを書き始めました。
トレーニング データ セットは Excel シート (2 つの入力と 2 つの出力) にあります。
ネットワークをトレーニングできるように、データを VBA にインポートするのに苦労しています。

トレーニング部分のコード

Private Sub Train_Click()
alpha = 0.3
mu = 0.8
n = 4
m = 4
Dim I, J, K As Integer
Dim TrainError As Double
Dim TrainingData As String
NumCases = 123
For J = 0 To NumCases - 1
For I = 0 To m
X1(J, I) = Sheets("Sheet1").Cells(I, J).String
Next I
targval(J) = X1(J, n)
Next J

Call Init(n, m)
J = 0
Do Until J = 1000 And TrainError = 0
For I = 0 To NumCases - 1
For K = 0 To n - 1
InputNeuron(K) = X1(I, K)
Next
Call HiddenInput(n, m)
Call HiddenTransfer(m)
Call OutputInput(m)
Call OutputTransfer
Call UpdateOut(I, m)
Call UpdateHidden(n, m)
TrainError = TrainError + (targval(I) - oout) ^ 2
Next I
TrainError = Sqrt(TrainError / NumCases)
If TrainError < 0.01 Then
Exit Do
End If
J = J + 1
Loop
End Sub
4

1 に答える 1

2

問題がデータのインポートである場合、問題は最初のループ内にあると思います。

X1(J, I) = Sheets("Sheet1").Cells(I, J).String

もしそうなら、与えられたデータを読み取るメソッドを使用してみることができますRange. 入力レイヤーを保持する配列を宣言します。

Public inputv() As Double   '// the input layer data

次に、データの範囲を指定して入力します。たとえば、「C19:C27」としましょう。次のメソッドを使用します。

Private Sub loadInput(ByRef r As Range)

    Dim s As Range
    Set s = r.Resize(1, 1)

    // this way you can even evaluate the number of trainning examples, m
    m = r.Rows.Count


    ReDim inputv(0 To m - 1, 0 To n - 1)
    Dim i, j As Integer

    For i = 0 To m - 1
        For j = 0 To n - 1
            inputv(i, j) = s(i + 1, j + 1).Value
        Next j
    Next i

End Sub
于 2013-07-29T20:08:26.663 に答える