)
参考以上cifar10训练已经看到86.4分以前动量一直不成功没使用权重衰减时没搞定使用权重衰减后混在一起还是没搞定一个想起来挺容易的东西成了最后一个才达成的目标明明知道站不住脚的假动量放在程序中很久了或许是自我安慰假动量如下sgd_update_Wb (替代 255) / 256, 256 (weight, grad_weight, lr, 替代, 0.99);就是这个函数//心里上似乎好受一些__global__ void sgd_update_Wb(float* W, float* dW, float lr, int n,float alpha) {int i blockIdx.x * blockDim.x threadIdx.x;if (i n) {W[i] - lr * dW[i];dW[i] * alpha ;//重新来过时这个就不起作用了当下也没起到作用}//奇诡的是有这句话成绩就是要好一丢丢}说到假动量了还带出来一个假86分版本他给人带来了极大的希望但是确实存在近期训练又上不去86了查看了训练记录发现bn层类方差和均值比较稳定时86出现的机率大ai训练中这种事经常发生但这一次86.4版本出现动量的加持他就再也掉不下去86了补充参考以前deepseek泄露的动量代码改进了自己的卷积核类的更新函数voidupdate(float lr) override {int w_size _out_channels * _in_channels * _kernel_size * _kernel_size;int b_size _out_channels;float beta -lr; float momentum_ 0.9f;//v momentum * vcublasSscal(handleV, w_size, momentum_, 动量wwTest, 1);//动量不参与权重衰减//v v - lr * gradcublasSaxpy(handleV, w_size, beta, _grad_weight, 1, 动量wwTest, 1);//开始引入权重衰减03170839权重更新与yolov3已经核对确认正确202607200810axpy_kernelV (w_size 255) / 256, 256 (w_size, 0.0005f * _batch, _weight, 0, 1, _grad_weight, 0, 1);cublasSaxpy(handleV, w_size, beta, _grad_weight, 1, _weight, 1);//W W vfloat alpha 1.0f;cublasSaxpy(handleV, w_size, alpha, 动量wwTest, 1, _weight, 1);//bias更新cublasSaxpy(handleV, b_size, beta, _grad_bias, 1, _bias, 1);cudaDeviceSynchronize();}