ニューラルネットワークの学習(確率的バックプロパゲーション法)
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static int fnFIE_neuro_learning( FHANDLE hneuro, DOUBLE_PTR vect_inp, DOUBLE_PTR vect_tch, ref double error ) |
Visual Basic |
---|
Public Shared Function fnFIE_neuro_learning ( hneuro As FHANDLE, vect_inp As DOUBLE_PTR, vect_tch As DOUBLE_PTR, ByRef error As Double ) As Integer |
Parameters
- hneuro
- Type: fvalgcli..::..FHANDLE
ニューラルネットワークオブジェクトのハンドル
- vect_inp
- Type: fvalgcli..::..DOUBLE_PTR
入力ベクトル
- vect_tch
- Type: fvalgcli..::..DOUBLE_PTR
教師ベクトル
- error
- Type: System..::..Double%
教師ベクトルとの誤差
Return Value
Type: Int32以下のエラーコードを返します。
エラーコード:
f_err | 内容 |
---|---|
F_ERR_NONE | 正常終了 |
F_ERR_INVALID_OBJECT | 不正なオブジェクトが渡された |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
Remarks
Examples
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { /// <summary> /// ニューラルネットワークの学習(確率的バックプロパゲーション法) /// </summary> /// <param name="hNeuro">ニューラルネットワークオブジェクトのハンドル</param> public void fnFIE_neuro_learning(FHANDLE hNeuro) { int status = (int)fvalgcli.f_err.F_ERR_NONE; DOUBLE_PTR vect_inp = DOUBLE_PTR.Zero; // 入力ベクトル. DOUBLE_PTR vect_tch = DOUBLE_PTR.Zero; // 教師ベクトル. // 入力ベクトル、教師ベクトル初期化用テーブル. double[,] data_tbl = { { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 1.0 }, { 1.0, 0.0, 1.0 }, { 1.0, 1.0, 0.0 } }; try { // 入力ベクトル、教師ベクトルの初期化. vect_inp = DOUBLE_PTR.alloc(INPUT_NEURON * LEARN_COUNT); vect_tch = DOUBLE_PTR.alloc(OUTPUT_NEURON * LEARN_COUNT); // --- 入力ベクトル. for (int i = 0; i < LEARN_COUNT; i++) { vect_inp[INPUT_NEURON * i + 0] = data_tbl[i % 4, 0]; vect_inp[INPUT_NEURON * i + 1] = data_tbl[i % 4, 1]; } // --- 教師ベクトル. for (int i = 0; i < LEARN_COUNT; i++) { vect_tch[OUTPUT_NEURON * i] = data_tbl[i % 4, 2]; } // 学習. for (int i = 0; i < LEARN_COUNT; i++) { DOUBLE_PTR _vect_inp = vect_inp.at(INPUT_NEURON * i); DOUBLE_PTR _vect_tch = vect_tch.at(OUTPUT_NEURON * i); double error = 0; // 教師ベクトルとの誤差. status = api.fnFIE_neuro_learning(hNeuro, _vect_inp, _vect_tch, ref error); Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (fvalgcli.f_err)status); // 確認. if (i < 10) Console.WriteLine("fnFIE_neuro_learning[{0}] : error = {1}", i, error); } } finally { vect_inp.Dispose(); vect_tch.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE ''' <summary> ''' ニューラルネットワークの学習(確率的バックプロパゲーション法) ''' </summary> ''' <param name="hNeuro">ニューラルネットワークオブジェクトのハンドル</param> Public Sub fnFIE_neuro_learning(hNeuro As FHANDLE) Dim status As Integer = CInt(fvalgcli.f_err.F_ERR_NONE) Dim vect_inp As DOUBLE_PTR = DOUBLE_PTR.Zero ' 入力ベクトル. Dim vect_tch As DOUBLE_PTR = DOUBLE_PTR.Zero ' 教師ベクトル. ' 入力ベクトル、教師ベクトル初期化用テーブル. Dim data_tbl As Double(,) = {{0.0, 0.0, 0.0}, {0.0, 1.0, 1.0}, {1.0, 0.0, 1.0}, {1.0, 1.0, 0.0}} Try ' 入力ベクトル、教師ベクトルの初期化. vect_inp = DOUBLE_PTR.alloc(INPUT_NEURON * LEARN_COUNT) vect_tch = DOUBLE_PTR.alloc(OUTPUT_NEURON * LEARN_COUNT) ' --- 入力ベクトル. For i As Integer = 0 To LEARN_COUNT - 1 vect_inp(INPUT_NEURON * i + 0) = data_tbl(i Mod 4, 0) vect_inp(INPUT_NEURON * i + 1) = data_tbl(i Mod 4, 1) Next ' --- 教師ベクトル. For i As Integer = 0 To LEARN_COUNT - 1 vect_tch(OUTPUT_NEURON * i) = data_tbl(i Mod 4, 2) Next ' 学習. For i As Integer = 0 To LEARN_COUNT - 1 Dim _vect_inp As DOUBLE_PTR = vect_inp.at(INPUT_NEURON * i) Dim _vect_tch As DOUBLE_PTR = vect_tch.at(OUTPUT_NEURON * i) Dim [error] As Double = 0 ' 教師ベクトルとの誤差. status = api.fnFIE_neuro_learning(hNeuro, _vect_inp, _vect_tch, [error]) Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, fvalgcli.f_err)) ' 確認. If i < 10 Then Console.WriteLine("fnFIE_neuro_learning[{0}] : error = {1}", i, [error]) End If Next Finally vect_inp.Dispose() vect_tch.Dispose() End Try End Sub End Class |