ニューラルネットワークの生成

Namespace: fvalgcli
Assembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)

Syntax

C#
public static FHANDLE fnFIE_neuro_create(
	F_NN_COND_PTR layer_cond,
	int layer_num
)
Visual Basic
Public Shared Function fnFIE_neuro_create ( 
	layer_cond As F_NN_COND_PTR,
	layer_num As Integer
) As FHANDLE

Parameters

layer_cond
Type: fvalgcli..::..F_NN_COND_PTR
各階層毎の生成条件の配列 layer_num 分の要素を確保した配列です。
  • (バイアス素子を除く)素子数( elem_num )
  • 応答関数の種類( func_type )
    • F_NN_LINEAR_FUNC:線形出力関数
    • F_NN_SIGMOID_FUNC:シグモイド(ロジスティック)関数
    • F_NN_TANH_FUNC:双曲線正接関数
  • 応答関数のパラメータ( func_param )
layer_num
Type: System..::..Int32
階層数( layer_cond の要素数 )

Return Value

Type: FHANDLE
正常に終了した場合は、ニューラルネットワークオブジェクトのハンドルを返します。 ライセンスエラー、メモリ不足や不正なパラメータを与えた場合には、IntPtr.Zero を返します。

Remarks

Examples

C# Copy imageCopy
//    $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        /// <summary>
        /// ニューラルネットワークの生成
        /// </summary>
        [FvPluginExecute]
        public void fnFIE_neuro_create()
        {
            FHANDLE hNeuro = FHANDLE.Zero;
            F_NN_COND_PTR cond = F_NN_COND_PTR.Zero;    // 階層毎の生成条件の配列.

            try
            {
                // 生成条件の初期化.
                cond = F_NN_COND_PTR.alloc(DEF_LAYER_N);

                cond[0] = F_NN_COND.init(INPUT_NEURON, f_nn_func_type.F_NN_LINEAR_FUNC, 1.0);
                cond[1] = F_NN_COND.init(HIDDEN_NEURON, f_nn_func_type.F_NN_SIGMOID_FUNC, 1.0);
                cond[2] = F_NN_COND.init(OUTPUT_NEURON, f_nn_func_type.F_NN_SIGMOID_FUNC, 1.0);

                // ニューラルネットワークの生成.
                hNeuro = api.fnFIE_neuro_create( cond, DEF_LAYER_N );

                Assert.IsTrue(hNeuro != FHANDLE.Zero, "エラーが発生しました。");

                // 以下、関連関数のテスト.
                fnFIE_neuro_set_coeff(hNeuro);

                fnFIE_neuro_performance(hNeuro);
                fnFIE_neuro_learning(hNeuro);
                fnFIE_neuro_recognition(hNeuro);

                fnFIE_neuro_get_coeff(hNeuro);
                fnFIE_neuro_get_count(hNeuro);
                fnFIE_neuro_get_layer(hNeuro);
                fnFIE_neuro_get_neuron(hNeuro);
            }
            finally
            {
                hNeuro.Dispose();
                cond.Dispose();
            }
        }

        /// <summary>
        /// レイヤー数.
        /// </summary>
        private const int DEF_LAYER_N = 3;

        /// <summary>
        /// 入力レイヤーのニューロン数.
        /// </summary>
        private const int INPUT_NEURON = 2;

        /// <summary>
        /// 中間レイヤーのニューロン数.
        /// </summary>
        private const int HIDDEN_NEURON = 2;

        /// <summary>
        /// 出力レイヤーのニューロン数.
        /// </summary>
        private const int OUTPUT_NEURON = 1;

        /// <summary>
        /// 学習数.
        /// </summary>
        private const int LEARN_COUNT = 4000;
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' ニューラルネットワークの生成
    ''' </summary>
    <FvPluginExecute> _
    Public Sub fnFIE_neuro_create()
        Dim hNeuro As FHANDLE = FHANDLE.Zero
        Dim cond As F_NN_COND_PTR = F_NN_COND_PTR.Zero
        ' 階層毎の生成条件の配列.
        Try
            ' 生成条件の初期化.
            cond = F_NN_COND_PTR.alloc(DEF_LAYER_N)

            cond(0) = F_NN_COND.init(INPUT_NEURON, f_nn_func_type.F_NN_LINEAR_FUNC, 1.0)
            cond(1) = F_NN_COND.init(HIDDEN_NEURON, f_nn_func_type.F_NN_SIGMOID_FUNC, 1.0)
            cond(2) = F_NN_COND.init(OUTPUT_NEURON, f_nn_func_type.F_NN_SIGMOID_FUNC, 1.0)

            ' ニューラルネットワークの生成.
            hNeuro = api.fnFIE_neuro_create(cond, DEF_LAYER_N)

            Assert.IsTrue(hNeuro <> FHANDLE.Zero, "エラーが発生しました。")

            ' 以下、関連関数のテスト.
            fnFIE_neuro_set_coeff(hNeuro)

            fnFIE_neuro_performance(hNeuro)
            fnFIE_neuro_learning(hNeuro)
            fnFIE_neuro_recognition(hNeuro)

            fnFIE_neuro_get_coeff(hNeuro)
            fnFIE_neuro_get_count(hNeuro)
            fnFIE_neuro_get_layer(hNeuro)
            fnFIE_neuro_get_neuron(hNeuro)
        Finally
            hNeuro.Dispose()
            cond.Dispose()
        End Try
    End Sub

    ''' <summary>
    ''' レイヤー数.
    ''' </summary>
    Private Const DEF_LAYER_N As Integer = 3

    ''' <summary>
    ''' 入力レイヤーのニューロン数.
    ''' </summary>
    Private Const INPUT_NEURON As Integer = 2

    ''' <summary>
    ''' 中間レイヤーのニューロン数.
    ''' </summary>
    Private Const HIDDEN_NEURON As Integer = 2

    ''' <summary>
    ''' 出力レイヤーのニューロン数.
    ''' </summary>
    Private Const OUTPUT_NEURON As Integer = 1

    ''' <summary>
    ''' 学習数.
    ''' </summary>
    Private Const LEARN_COUNT As Integer = 4000
End Class

See Also