私はAccord.NETのさまざまな深い学習アルゴリズムを使いこなしています。私は嘘をついたスペクトルデータでこれを行うことにしました。 PCAはデータをAccordの統計ツールボックスを使用して10データ点に変換するように変換します。チュートリアルを手紙に従ってください:Accord.NETでBackPropagationを実行しているときにOutofRangeExceptionが発生するのはなぜですか?
// Setup the deep belief network and initialize with random weights.
DeepBeliefNetwork network = new DeepBeliefNetwork(transformedInputs.First().Length, 10, 10);
new GaussianWeights(network, 0.1).Randomize();
network.UpdateVisibleWeights();
// Setup the learning algorithm.
DeepBeliefNetworkLearning teacher = new DeepBeliefNetworkLearning(network)
{
Algorithm = (h, v, i) => new ContrastiveDivergenceLearning(h, v)
{
LearningRate = 0.1,
Momentum = 0.5,
Decay = 0.001,
}
};
// Setup batches of input for learning.
int batchCount = Math.Max(1, transformedInputs.Length/100);
// Create mini-batches to speed learning.
int[] groups = Accord.Statistics.Tools.RandomGroups(transformedInputs.Length, batchCount);
double[][][] batches = transformedInputs.Subgroups(groups);
// Learning data for the specified layer.
double[][][] layerData;
// Unsupervised learning on each hidden layer, except for the output layer.
for (int layerIndex = 0; layerIndex < network.Machines.Count - 1; layerIndex++)
{
teacher.LayerIndex = layerIndex;
layerData = teacher.GetLayerInput(batches);
for (int i = 0; i < 200; i++)
{
double error = teacher.RunEpoch(layerData)/transformedInputs.Length;
if (i % 10 == 0)
{
Console.WriteLine(i + ", Error = " + error);
}
}
}
// Supervised learning on entire network, to provide output classification.
var teacher2 = new BackPropagationLearning(network)
{
LearningRate = 0.1,
Momentum = 0.5
};
// Run supervised learning.
for (int i = 0; i < 500; i++)
{
double error = teacher2.RunEpoch(transformedInputs, output: outputs);
if (i % 10 == 0)
{
Console.WriteLine(i + ", Error = " + error);
}
}
私は入力されたデータをチェックしました。入力と出力の両方が正しいdouble [] []フォーマットfrになっています。私も元のアプリをチェックした:https://github.com/primaryobjects/deep-learning それは完璧に機能していたので、単純に入力されたデータを変更することがそんなに面倒であるのを見て苦労している。どんな助けでも大歓迎です。私が得ているエラーは次のとおりです。
An unhandled exception of type 'System.IndexOutOfRangeException' occurred in Accord.Neuro.dll
追加情報:インデックスが配列の範囲外です。
私はまったく同じことをやった。ご報告いただきありがとうございます。 – Bagaboo