昨天,终于迎来转折点,可喜可贺!
突然想起当年写机器视觉软件追赶visionpro的感觉!(一点一点的突破)
16:22 2026/7/28
rb均值: 0.5299172997,rb方差:5.616769313812
rb均值: 0.8221317530,rb方差:5.748197555542
rb均值: 1.8689491749,rb方差:21.491924285889
时间: 14686.394531 ms
train Classification result: 96.88% ok (used 49984 images)
时间: 1241.422974 ms
Test Classification result:80.03% ok (used 9984 images)
learn rate:1e-05
轮次:22
rb均值: 0.5264742970,rb方差:5.625975131989
rb均值: 0.8160899878,rb方差:5.764341354370
rb均值: 1.8772314787,rb方差:21.502000808716
时间: 14667.544922 ms
train Classification result: 97.09% ok (used 49984 images)
时间: 1248.618042 ms
Test Classification result: 80.00% ok (used 9984 images)
learn rate:1e-05
轮次:23
rb均值: 0.5251821280,rb方差:5.630886077881
rb均值: 0.8136169910,rb方差:5.776707649231
rb均值: 1.8869775534,rb方差:21.506217956543
时间: 14657.096680 ms
train Classification result: 97.25% ok (used 49984 images)
时间: 1247.119019 ms
Test Classification result: 79.90% ok (used 9984 images)
learn rate:1e-05
轮次:24
rb均值: 0.5233923197,rb方差:5.641663074493
rb均值: 0.8129897118,rb方差:5.789339542389
rb均值: 1.8915946484,rb方差:21.541009902954
时间: 14695.947266 ms
train Classification result: 97.30% ok (used 49984 images)
时间: 1240.376953 ms
Test Classification result: 79.97% ok (used 9984 images)
learn rate:1e-05
轮次:25
rb均值: 0.5249222517,rb方差:5.652767658234
rb均值: 0.8187047839,rb方差:5.801507949829
rb均值: 1.8960354328,rb方差:21.584915161133
时间: 14620.066406 ms
train Classification result: 97.26% ok (used 49984 images)
时间: 1246.831055 ms
Test Classification result: 79.93% ok (used 9984 images)
learn rate:1e-05
轮次:26
rb均值: 0.5240346789,rb方差:5.664512157440
rb均值: 0.8175171018,rb方差:5.819054603577
rb均值: 1.9005300999,rb方差:21.629970550537
时间: 14700.644531 ms
train Classification result: 97.30% ok (used 49984 images)
时间: 1227.864014 ms
Test Classification result:80.01% ok (used 9984 images)
learn rate:1e-05
轮次:27
rb均值: 0.5255746245,rb方差:5.671960830688
rb均值: 0.8173997998,rb方差:5.833096981049
rb均值: 1.9070935249,rb方差:21.651679992676
时间: 14676.238281 ms
train Classification result: 97.45% ok (used 49984 images)
时间: 1244.552979 ms
Test Classification result:80.03% ok (used 9984 images)
learn rate:1e-05
轮次:28
rb均值: 0.5242957473,rb方差:5.688605785370
rb均值: 0.8174471259,rb方差:5.848959445953
rb均值: 1.9097890854,rb方差:21.693126678467
时间: 14633.943359 ms
train Classification result: 97.47% ok (used 49984 images)
时间: 1240.036011 ms
Test Classification result: 80.02% ok (used 9984 images)
learn rate:1e-05
轮次:29
rb均值: 0.5264126062,rb方差:5.699140071869
rb均值: 0.8221742511,rb方差:5.861934185028
rb均值: 1.9115831852,rb方差:21.732776641846
时间: 14671.561523 ms
train Classification result: 97.41% ok (used 49984 images)
时间: 1236.954956 ms
Test Classification result: 79.94% ok (used 9984 images)
learn rate:1e-05
轮次:30
请按任意键继续. . .
这是昨天所有的尝试:

架构没怎么变,关键是屏蔽了卷积层和线性层的bias的动量更新!
layers.emplace_back(std::make_shared<Conv2D>(cudnn, batch, 5, 64, 32, 32, 3, 1, 1));
layers.emplace_back(std::make_shared<residualExt3>(cudnn, batch, 64, 32, 32));
layers.emplace_back(std::make_shared<Conv2D>(cudnn, batch, 64, 128, 32, 32, 3, 2, 1));
layers.emplace_back(std::make_shared<residualbase>(cudnn, batch, 128,16, 16));
layers.emplace_back(std::make_shared<averPool2D>(cudnn, batch, 128, 16, 16, 2, 2, 0, 2));
layers.emplace_back(std::make_shared<Linear>(cublas, batch, 128 * 64, 500));
layers.emplace_back(std::make_shared<LeakyRL>(cudnn, batch, 500, 1, 1));
layers.emplace_back(std::make_shared<Linear>(cublas, batch, 500, 10));
你说奇怪不奇怪!以下是卷积层的动量屏蔽:
void update(float lr) override {
int w_size = _out_channels * _in_channels * _kernel_size * _kernel_size;
int b_size = _out_channels;
axpy_kernel << <(w_size + 255) / 256, 256 >> > (w_size, 0.0005f * _batch, _weight, 0, 1, _grad_weight, 0, 1);
sgd_update_Wb << <(w_size + 255) / 256, 256 >> > (_weight, _grad_weight, lr, w_size,0.98);
sgd_update << <(b_size + 255) / 256, 256 >> > (_bias, _grad_bias, lr, b_size);
//sgd_update_Wb << <(b_size + 255) / 256, 256 >> > (_bias, 动量vbTest, lr, b_size, 0.98);
cudaDeviceSynchronize();
// ---- 打印中间输出 ----
cudaMemcpy(www, _weight, _out_channels * _in_channels * _kernel_size * _kernel_size * sizeof(float), cudaMemcpyDeviceToHost);//取出权重,可以一试,保存加载不必再训练喽
}
以下是线性层的动量屏蔽:
void update(float lr) override {
const float alpha = -lr;
int 替代 = out_features * in_features;
axpy_kernel << <(替代 + 255) / 256, 256 >> > (替代,
0.0005f * batch, weight, 0, 1, grad_weight, 0, 1);
sgd_update_Wb << <(替代 + 255) / 256, 256 >> > (weight, grad_weight, lr, 替代, 0.98);
cublasSaxpy(handle, out_features, &alpha, grad_bias, 1, bias, 1);
//sgd_update_Wb << <(out_features + 255) / 256, 256 >> > (bias, 动量vbTest, lr, out_features, 0.98);
cudaDeviceSynchronize();//需要这句话吗?先试一试
cudaMemcpy(www, weight, sizeof(float) * in_features * out_features, cudaMemcpyDeviceToHost);//暂时未获取bias
}
最初,本以为是图像应该增加高斯模糊图像,应该有所改善!
但研究后,并非如此!
奇葩的是:cifar100也上了48.54分,竟然高斯图像起作用了!而且除了bias动量更新不能用,weight的动量更新不也能用!(研究的新成果就这样作废了)
所以cifar10与cifar100还是在图像处理输入上有差别!cifar100的图像集更加复杂!