Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使这种神经网络训练功能更快_C#_Multithreading_Neural Network - Fatal编程技术网

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

C# 如何使这种神经网络训练功能更快,c#,multithreading,neural-network,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 FeedforwardL

变量输入为锯齿状数组,即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
        }
BeginTraining()
{
前馈网络=新的前馈网络();
添加层(新的前馈层(600));
添加层(新的前馈层(1000));
添加层(新的前馈层(90));
Reset();
//训练神经网络
训练训练=新热学神经网络前馈训练反向传播反向传播(网络,输入,理想,
0.7, 0.9);
int epoch=1;
做
{
lblNoEpochs.Text=epoch.ToString();
lblNoEpochs.Update();
train.Iteration();
lblPcError.Text=train.Error.ToString();
lblPcError.Update();
epoch++;
}而((历元<5000)和&(列次误差>0.001));
//测试神经网络
for(int i=0;i
每个历元至少需要5分钟


如何减少这一时间?

我认为您可以:

  • 找出什么是慢的
  • 优化

  • 根据需要重复。

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

    只要我知道训练波是相互依赖的,那么下一个训练波就取决于上一个训练波的结果。因此,排序是绝对必要的


    所以我想答案是-这再快不过了。

    不,只是编辑了代码,请刷新。你的
    do{
    没有结束括号我不知道
    train.iteration()是什么
    确实如此,但如果这是一个长迭代,执行了大量代码,我可以想象这是罪魁祸首。因为该迭代也执行了5000次。(更不用说它在代码中出现了两次)重新格式化的代码请刷新。输入集由90个符号组成,每个符号有600个双倍值。每个输入集迭代到5000个纪元。我对train()知之甚少。为此,我使用jeff heaton的nn库。