用C语言存储训练和测试精度

2024-04-20 03:06:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为我的caffe模型绘制训练图并测试其准确性。设置如下: 我有1200个培训样本和300个开发集样本。(为简化问题,请输入小数字)。我把火车分成100个小批次,每个小批次有12个样本,Dev分成100个小批次,每个小批次有3个样本。我的目标是每1个epoch=100次迭代循环训练和测试。在

解算器文件:

test_iter: 3
test_interval: 100
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.001
#momentum: 0.9
weight_decay: 0.0005
# The learning rate policy
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# Display every 100 iterations
display: 10000
# The maximum number of iterations
max_iter: 200

现在我要在测试集上迭代,每1个epoch我都要保存和测试:

^{pr2}$

输出:

I1128 15:24:50.677237 24165 sgd_solver.cpp:105] Iteration 0, lr = 0.001
('Train loss at itr', 0, ' = ', 9.5767021179199219)
('Train accuracy at itr ', 0, ' = ', 0.3333333432674408)
I1128 15:26:05.196552 24175 data_layer.cpp:73] Restarting data prefetching from start.
I1128 15:26:09.776504 24165 solver.cpp:330] Iteration 100, Testing net (#0)
I1128 15:26:10.819236 24165 solver.cpp:397]     Test net output #0: accuracy = 0.888889
I1128 15:26:10.819289 24165 solver.cpp:397]     Test net output #1: loss = 0.141346 (* 1 = 0.141346 loss)
I1128 15:26:10.819301 24165 solver.cpp:397]     Test net output #2: prob = 3.90094e-18
I1128 15:26:10.819314 24165 solver.cpp:397]     Test net output #3: prob = 0.333333
I1128 15:26:10.819324 24165 solver.cpp:397]     Test net output #4: prob = 0.666667
I1128 15:26:10.819335 24165 solver.cpp:397]     Test net output #5: prob = 0.333331
I1128 15:26:10.819345 24165 solver.cpp:397]     Test net output #6: prob = 0.333336
I1128 15:26:10.819356 24165 solver.cpp:397]     Test net output #7: prob = 0.333333
I1128 15:26:10.819366 24165 solver.cpp:397]     Test net output #8: prob = 0.0934135
I1128 15:26:10.819376 24165 solver.cpp:397]     Test net output #9: prob = 0.23992
I1128 15:26:10.819387 24165 solver.cpp:397]     Test net output #10: prob = 0.666667
('Train loss at itr', 100, ' = ', 19.135543823242188)
('Train accuracy at itr ', 100, ' = ', 0.58333331346511841)
Mean TEST acc at iteration = 100 is 0.777777791023
I1128 15:27:25.426235 24175 data_layer.cpp:73] Restarting data prefetching from start.
I1128 15:27:27.963992 24165 solver.cpp:330] Iteration 200, Testing net (#0)
I1128 15:27:28.392573 24165 solver.cpp:397]     Test net output #0: accuracy = 0.777778
I1128 15:27:28.392724 24165 solver.cpp:397]     Test net output #1: loss = 1.75344 (* 1 = 1.75344 loss)
I1128 15:27:28.392793 24165 solver.cpp:397]     Test net output #2: prob = 0.333333
I1128 15:27:28.392859 24165 solver.cpp:397]     Test net output #3: prob = 0.333333
I1128 15:27:28.392925 24165 solver.cpp:397]     Test net output #4: prob = 0.333333
I1128 15:27:28.392989 24165 solver.cpp:397]     Test net output #5: prob = 0.357607
I1128 15:27:28.393054 24165 solver.cpp:397]     Test net output #6: prob = 0.642377
I1128 15:27:28.393160 24165 solver.cpp:397]     Test net output #7: prob = 1.57992e-05
I1128 15:27:28.393239 24165 solver.cpp:397]     Test net output #8: prob = 0.333334
I1128 15:27:28.393307 24165 solver.cpp:397]     Test net output #9: prob = 0.333333
I1128 15:27:28.393416 24165 solver.cpp:397]     Test net output #10: prob = 0.333333
('Train loss at itr', 200, ' = ', 4.1576399803161621)
('Train accuracy at itr ', 200, ' = ', 0.75)
Mean TEST acc at iteration = 200 is 0.666666686535

我的问题是为什么我正在计算的Dev set的精度与解算器的输出不同?。在

迭代#100:

  • 解算器输出:测试净输出#0:精度=0.888889
  • 按规范计算:平均测试精度为0.7777791023

迭代#200:

  • 解算器输出:测试净输出#0:精度=0.777778
  • 按规范计算:平均测试精度为0.6666686535

Tags: testoutputnet精度traincppat算器