Machine learning 内部是否有培训/验证分离,或者只有一个培训集和测试集?

Machine learning 内部是否有培训/验证分离,或者只有一个培训集和测试集?,machine-learning,split,neural-network,pytorch,evaluation,Machine Learning,Split,Neural Network,Pytorch,Evaluation,因此,最近我一直在关注中的教程,我提出了以下问题:内部是否存在培训/验证分离 在本教程中,主要数据集被拼接到训练和测试中。这里,训练集用于evaluate()函数中的训练和测试 据我所知,在处理神经网络时,数据通常分为3组:训练、验证和测试。但在本教程中,它只分为培训和测试。据我所知,通常先对模型进行训练,然后进行评估,然后根据评估步骤中学习的内容更新权重。然而,我似乎找不到评估功能和培训之间的任何联系。因此,在本例中,使用相同的数据集对模型进行评估和测试 这里有什么我可能遗漏的吗?是否在培训期

因此,最近我一直在关注中的教程,我提出了以下问题:内部是否存在培训/验证分离

在本教程中,主要数据集被拼接到训练和测试中。这里,训练集用于evaluate()函数中的训练和测试

据我所知,在处理神经网络时,数据通常分为3组:训练、验证和测试。但在本教程中,它只分为培训和测试。据我所知,通常先对模型进行训练,然后进行评估,然后根据评估步骤中学习的内容更新权重。然而,我似乎找不到评估功能和培训之间的任何联系。因此,在本例中,使用相同的数据集对模型进行评估和测试

这里有什么我可能遗漏的吗?是否在培训期间(分为培训和验证)对培训数据集进行了内部拆分,并且函数evaluate()仅用于测试模型的性能

for epoch in range(num_epochs):
        # train for one epoch, printing every 10 iterations
        train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
        # update the learning rate
        lr_scheduler.step()
        # evaluate on the test dataset
        evaluate(model, data_loader_test, device=device)```
内部是否存在培训/验证分离

训练数据集在训练期间是否发生内部拆分 培训(进入培训和验证),函数evaluate()为 仅用于测试模型的性能

for epoch in range(num_epochs):
        # train for one epoch, printing every 10 iterations
        train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
        # update the learning rate
        lr_scheduler.step()
        # evaluate on the test dataset
        evaluate(model, data_loader_test, device=device)```
不,你没有遗漏任何东西。你看到的正是那里正在做的事情没有发生内部分裂。这只是一个示例,演示如何在pytorch中完成某些事情,而不会造成不必要的混乱

一些数据集,如
CIFAR10/CIFAR100
,只附带一个训练集/测试集,通常是仅训练然后在示例中对测试集进行评估的规范。然而,没有什么能阻止你分割训练集,不管你喜欢什么,这取决于你。在这些教程中,他们只是试图让一切尽可能简单

内部是否存在培训/验证分离

训练数据集在训练期间是否发生内部拆分 培训(进入培训和验证),函数evaluate()为 仅用于测试模型的性能

for epoch in range(num_epochs):
        # train for one epoch, printing every 10 iterations
        train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
        # update the learning rate
        lr_scheduler.step()
        # evaluate on the test dataset
        evaluate(model, data_loader_test, device=device)```
不,你没有遗漏任何东西。你看到的正是那里正在做的事情没有发生内部分裂。这只是一个示例,演示如何在pytorch中完成某些事情,而不会造成不必要的混乱


一些数据集,如
CIFAR10/CIFAR100
,只附带一个训练集/测试集,通常是仅训练然后在示例中对测试集进行评估的规范。然而,没有什么能阻止你分割训练集,不管你喜欢什么,这取决于你。在这样的教程中,他们只是试图让一切尽可能简单。

那么,我可以假设在培训过程中,数据正在进行内部拆分以进行培训和验证吗?然后在评估步骤中,正在使用另一个数据集(在本例中为数据加载程序测试)?不,在训练期间,只有训练集被送入网络。在评估过程中,只有指定的测试集被送入网络。嗯,好的,问题是为了评估网络的性能,据我所知,两个指标是必要的:训练损失和验证损失。函数的作用是:只返回一个包含训练集损失的字典,evaluate()只返回平均精度和召回率。因此,我正在努力获取验证集上的验证丢失,因为我似乎在任何地方都找不到。我在这里有点困惑。您是在谈论这个检测示例还是一般的网络培训?如果是一般意义上的,没有什么能阻止你展示损失。您是否正在寻找
train\u one\u epoch
实现?你可以查看它的实现,如果你想根据你的需要修改它的话。我说的是一般的网络培训,因为基于本教程,我已经为我的学士学位论文(基于工业数据集)构建了自己的检测器。这里,train_one_epoch函数只返回训练期间的损失(我已经检查了实现),但我也试图在验证期间以某种方式获得损失。那么,我可以假设在训练期间,数据正在内部分割以进行训练和验证吗?然后在评估步骤中,正在使用另一个数据集(在本例中为数据加载程序测试)?不,在训练期间,只有训练集被送入网络。在评估过程中,只有指定的测试集被送入网络。嗯,好的,问题是为了评估网络的性能,据我所知,两个指标是必要的:训练损失和验证损失。函数的作用是:只返回一个包含训练集损失的字典,evaluate()只返回平均精度和召回率。因此,我正在努力获取验证集上的验证丢失,因为我似乎在任何地方都找不到。我在这里有点困惑。您是在谈论这个检测示例还是一般的网络培训?如果是一般意义上的,没有什么能阻止你展示损失。您是否正在寻找
train\u one\u epoch
实现?你可以查看它的实现,如果你想根据你的需要修改它的话。我说的是一般的网络培训,因为基于本教程,我已经为我的学士学位论文(基于工业数据集)构建了自己的检测器。这里,train_one_epoch函数只返回训练期间的损失(我已经检查了实现),但我也尝试在验证期间以某种方式获得损失。