1

变量输入是一个锯齿状数组,即 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
        }

每个 epoch 至少需要 5 分钟。

如何减少这个时间?

4

2 回答 2

1

好吧,在我看来,你可以:

  1. 运行分析器
  2. 找出什么是慢的
  3. 优化

根据需要重复。

于 2013-01-30T11:08:01.190 回答
1

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

只要我知道训练波相互依赖,那么下一个取决于前一个的结果。因此订购是绝对必须的。

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

于 2013-01-31T03:11:11.557 回答