C# 如何使这种神经网络训练功能更快
变量输入为锯齿状数组,即90 x 600 理想也是90 x 1的锯齿阵列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
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库。