训练成绩不进步时我们希望调整学习率如下int batch_size 32;float lr 0.01f;float bijiao 0;LeNet LeNet_net(cublas, cudnn, batch_size);for (int i 0; i 80; i){train(1562, batch_size, lr, LeNet_net, 0, stream, Datasets);float jilu test(LeNet_net, stream, DatasetsTest);if (jilu bijiao){bijiao jilu;}else{lr lr - 0.01f / 25;}std::cout learn ratelr std::endl;std::cout 轮次 i std::endl;}有时候我们发现成绩掉下去虽然调整学习率有所上升我们需要稳住学习率但是上面程序做不到会一直减小学习率所以想能不能只对比临时两个值当成绩上升时学习率不变而下降时学习率也下降想起来简单程序有时并不好处理我想到用堆栈存储临时相邻两值这个需要用到头文件#includestack及变量声明std::stackfloat 记住两次结果;记住两次结果.push(jilu);if (2 记住两次结果.size()){float jg1 记住两次结果.top();记住两次结果.pop();float jg2 记住两次结果.top();记住两次结果.pop();//testif (jg1 jg2){learningRate - 0.01f / 25;}if(记住两次结果.empty())记住两次结果.push(jg1);}当我们训练两次栈中就压入两次成绩然后我们对比后清空栈底保留后入然后再压入一次栈中又是两个值很方便写到这里其实我也想到用正态分布函数的半径在局部作用判断应该也可以