2016-06-12 3 views
1

このCSV(GoogleSheets)が指定されています。私は数値のままにしておきたいと思います。実際にこのデータをフィードフォワードネットワークのトレーニングに使用するにはどうすればよいですか?Encogのcsv ouput coloumnを正規化するには?

私は、実行時に取得EncogErrorだ
// Load and prepare training data 
var dataSource = new CSVDataSource("trainingData.csv", true, CSVFormat.DecimalPoint); 
var data = new VersatileMLDataSet(dataSource); 
ColumnDefinition outputColumn = data.DefineSourceColumn("Action", ColumnType.Nominal); 
data.DefineSingleOutputOthersInput(outputColumn); 
data.Analyze(); 

// Build neural net 
var neuralNet = BuildNeuralNet(); 

// Train neural net 
var train = new Backpropagation(neuralNet, data); 
int epoch = 1; 

do 
{ 
train.Iteration(); 
Console.WriteLine(@"Epoch #" + epoch + @" Error : " + train.Error); 
epoch++; 
} while (train.Error > errorThreshold); 

: 「機械学習方法は、5の入力の長さがありますが、トレーニングデータは、彼らが同じでなければなりません0を持っています。」

private static BasicNetwork BuildNeuralNet() 
{ 
     var net = new BasicNetwork(); 
     net.AddLayer(new BasicLayer(null, true, m_inputNodeCount)); // input layer 
     net.AddLayer(new BasicLayer(new ActivationSigmoid(), true, m_hiddenNodeCount)); // #1 hidden layer 
     net.AddLayer(new BasicLayer(new ActivationSigmoid(), false, m_outputNodeCount)); // output layer 
     net.Structure.FinalizeStructure(); 
     net.Reset(); // initializes the weights of the neural net 
     return net; 
} 
+0

BuildNeuralNet()の内容は何ですか? –

+0

これは、BasicNetworkを初期化し、レイヤーを追加し、構造を完成させ、ウェイトをリセットすることです。入力ノード数は5と指定されています。 – MarcoMeter

答えて

0

に分割しなければならないということです私はちょうど3つの新しいもの(GoogleSheets)に出力列を分割します。そして、私がしなければならないことは、このようにCSVをロードすることです:

var trainingSet = EncogUtility.LoadCSV2Memory("trainingData.csv", neuralNet.InputCount, neuralNet.OutputCount, true, CSVFormat.English, false); 
0

次のように試してください。主なポイントは、後方伝播のためのデータを入力し、理想的な

// Load and prepare training data 
    var dataSource = new CSVDataSource(@"C:\dev\SO\learning\encog\SO-Test\trainingData.csv", true, CSVFormat.DecimalPoint); 
    var data = new VersatileMLDataSet(dataSource); 
    data.DefineSourceColumn("EnemyHitPoints", ColumnType.Continuous); 
    data.DefineSourceColumn("EnemyCount", ColumnType.Continuous); 
    data.DefineSourceColumn("FriendlySquadHitPoints", ColumnType.Continuous); 
    data.DefineSourceColumn("FriendlySquadCount", ColumnType.Continuous); 
    data.DefineSourceColumn("LocalHitPoints", ColumnType.Continuous); 
    //EnemyHitPoints,EnemyCount,FriendlySquadHitPoints,FriendlySquadCount,LocalHitPoints,Action 
    ColumnDefinition outputColumn = data.DefineSourceColumn("Action", ColumnType.Nominal); 
    data.DefineSingleOutputOthersInput(outputColumn); 
    data.Analyze(); 

    EncogModel model = new EncogModel(data); 
    model.SelectMethod(data, MLMethodFactory.TypeNEAT); 

    // Now normalize the data. Encog will automatically determine the 
    // correct normalization 
    // type based on the model you chose in the last step. 
    data.Normalize(); 
    model.SelectTrainingType(data); 

    // Build neural net 
    var neuralNet = BuildNeuralNet(); 


    var datainput = data.Select(x => new double[5] { x.Input[0], x.Input[1], x.Input[2], 
    x.Input[3], x.Input[4] }).ToArray(); 
    var dataideal = data.Select(x => new double[1] { x.Ideal[0] }).ToArray(); 

     IMLDataSet trainingData = new BasicMLDataSet(datainput, dataideal); 
     var train = new Backpropagation(neuralNet, trainingData); 
     int epoch = 1; 

     do 
     { 
      train.Iteration(); 
      Console.WriteLine(@"Epoch #" + epoch + @" Error : " + train.Error); 
      epoch++; 
     } while (train.Error > errorThreshold);