自学答疑使用,持续更新...
在目标检测任务中,通常将整个数据集划分为训练集(training set)、验证集(validation set)和测试集(test set)。这三个数据集在训练和评估过程中具有不同的作用:
训练集(Training Set): 用于模型的训练,即通过反向传播和梯度下降等优化算法来调整模型的权重,使其能够从数据中学到有用的特征和模式。
验证集(Validation Set): 用于在训练过程中评估模型的性能和调整超参数。在每个训练周期(epoch)结束时,模型会在验证集上进行评估,以判断模型是否过拟合、欠拟合,以及选择最佳的超参数。
测试集(Test Set): 用于最终评估模型的泛化性能。测试集是模型在训练和验证阶段都没有见过的数据,用于模拟模型在实际应用中的表现。在训练完成后,通过测试集评估模型的性能,获取最终的性能指标。
在YOLOv8中,通常使用model.train()函数进行训练,而这个函数会处理训练集 和验证集的批处理(batching)以及相应的训练过程。model.train()的主要作用是在模型上执行训练步骤,其中包括前向传播、计算损失、反向传播和权重更新等步骤。
也就是说 在训练过程中,通常是通过 model.train() 来迭代训练集的数据。而验证集的使用通常在每个训练周期结束时进行 ,以评估模型的性能,并在需要时进行超参数调整。 这也是训练结果中train与val各种参数对于每一轮同时出现的原因