我是深度学习的新手,我无法弄清楚您在每个时期结束时获得的验证准确度与准确度之间的区别> 您可以通过使用 .org 0
start:
ldi r16, 10
ldi r17, 20
ldi r18, 10
lsl r16
brvs OVERFLOW
lsl r16
brvs OVERFLOW
mov r20,r17
brvs OVERFLOW
lsl r20
brvs OVERFLOW
add r20,r17
brvs OVERFLOW
add r20, r16
brvs OVERFLOW
sub r20,r18
brvs OVERFLOW
asr r20
brvs OVERFLOW
asr r20
brvs OVERFLOW
asr r20
brvs OVERFLOW
brvc OK
OVERFLOW:
ldi r30, 0x11
OK:
ldi r30, 0x11
konec:
rjmp konec
方法获得。例如:
model.evaluate()
和
model.fit(train_dataset, validation_data=test_dataset, epochs=1)
这两个脚本会返回相同的准确度吗?
答案 0 :(得分:1)
是的,两者将返回相同的结果,但是它们用于不同的目的。
通常您不会evaluate
验证集。相反,您将评估另一个集合 test_set,但是在您的情况下,您似乎只有一个火车和一个 test_dataset,因此这两种方法(.fit
中方法的最后一个时期)将输出相同的准确度。< /p>
validation_data
参数用于在模型训练时输出准确度/损失指标,让您了解模型如何随着时间的推移对它没有学习的数据进行学习调整模型权重,即“看不见的”数据。
但是,鉴于您查看这些结果并调整模型以尝试获得最佳验证准确度/损失,您引入了一定程度的偏差,因此您可能会对模型的执行方式产生过度乐观的印象在真正看不见的数据上 - 想想看,您正在针对非常具体的验证集进行优化,因此另一个数据集可能会给出不同的结果。
因此,将另一组 test_dataset
放在一边是有意义的,您尚未对其进行优化,但仍然希望能够说“我的模型提供了 X% 的准确度”或得到关于模型如何执行的一般性意见。这就是 model.evaluate
的用武之地,因为您可以使用它来查看准确度,而无需再次调用 model.fit
。
答案 1 :(得分:0)
当你这样做
model.fit(train_dataset, validation_data=test_dataset, epochs=3)
这样,您使用 train_dataset
训练模型,并使用 test_dataset
在每个 epoch 后评估您的模型。因此,在每个 epoch 之后,keras
API 将调用 model. evaluate(test_dataset)
并以下列方式为您提供训练日志:
Epoch 1/3
20ms/step - loss: 0.494 - accuracy: 0.8904 - val_loss: 0.6392 - val_accuracy: 0.8841
Epoch 2/3
16ms/step - loss: 0.1594 - accuracy: 0.9204 - val_loss: 0.5392 - val_accuracy: 0.9041
Epoch 3/3
17ms/step - loss: 0.0594 - accuracy: 0.9904 - val_loss: 0.2392 - val_accuracy: 0.9741
但是,如果您按以下方式进行操作,在 test_dataset
中没有使用 model. fit
,那么您将仅通过以下方式获得训练日志。
model.fit(train_dataset, epochs=1)
Epoch 1/3
20ms/step - loss: 0.494 - accuracy: 0.8904
Epoch 2/3
16ms/step - loss: 0.1594 - accuracy: 0.9204
Epoch 3/3
17ms/step - loss: 0.0594 - accuracy: 0.9904
在完成所有 epoch 后,当您执行以下操作时,它会一次性评估您的模型(与之前的 3 次不同)并给出最后的验证分数。
loss, scores = model.evaluate(test_dataset)
[0.2392, 0.9741]
因此,当您在 test_dataset
中使用 model. fit
时,此数据集将在 每个 epoch 之后由 model. evaluate
使用,并为您提供每个epoch 但如果您在 test_dataset
中单独使用 model. evaluate
,它只会计算一次。另注意,在最后的训练日志中,验证分数在您稍后计算时是相同的。
model.fit(..., test_dataset)
Epoch 3/3
17ms/step - ... val_loss: 0.2392 - val_accuracy: 0.9741
----
loss, scores = model.evaluate(test_dataset)
[0.2392, 0.9741]
看我的另一个答案,它可能会给你更多的见识。 Splitting data to training, testing, and valuation.