如何使这种神经网络训练功能更快

时间:2013-01-30 10:45:23

标签: c# multithreading neural-network

变量输入是锯齿状数组,即90 x 600。

理想也是90 x 1的锯齿状阵列

BeginTraining()
{
    FeedforwardNetwork network = new FeedforwardNetwork();
    network.AddLayer(new FeedforwardLayer(600));
    network.AddLayer(new FeedforwardLayer(1000));
    network.AddLayer(new FeedforwardLayer(90));
    network.Reset();

    // train the neural network
    Train train = new  HeatonResearchNeural.Feedforward.Train.Backpropagation.Backpropagation(network, input, ideal,
                0.7, 0.9);

    int epoch = 1;

    do
    {
        lblNoEpochs.Text= epoch.ToString();
        lblNoEpochs.Update();
        train.Iteration();
        lblPcError.Text = train.Error.ToString();
        lblPcError.Update();
        epoch++;
    } while((epoch < 5000) && (train.Error > 0.001));

        // test the neural network
        for (int i = 0; i < input.Length; i++)
        {
            //testing code
        }

每个时期至少需要5分钟。

如何缩短这段时间?

2 个答案:

答案 0 :(得分:1)

嗯,我认为你可以:

  1. Run a profiler
  2. 找出什么是慢的
  3. 优化
  4. 根据需要重复。

答案 1 :(得分:1)

我认为真正的问题是 - do / while可以并行吗?

只要我知道训练波依赖于彼此,所以接下来取决于前一个的结果。因此排序绝对是必须的。

所以我认为答案是 - 这不可能更快。