内部是否进行了培训/验证拆分,还是只有一个培训集和测试集?

时间:2020-10-05 11:58:18

标签: machine-learning split neural-network pytorch evaluation

所以最近我一直遵循https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html中的教程,并且提出了以下问题:内部是否进行了培训/验证拆分?

问题是,在本教程中,主要数据集被拼接为训练和测试。在这里,训练集用于评估()函数中的训练和测试。

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

这里是否有我可能会想念的东西?培训过程中是否发生了培训数据集的内部拆分(分为培训和验证),而函数validate()仅用于测试模型的性能?

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)```

1 个答案:

答案 0 :(得分:2)

内部是否进行了培训/验证拆分?

培训数据集是否在内部发生分裂 培训(进行培训和验证),函数评估()为 只是用来测试模型的性能?

不,您没有丢失任何东西。您所看到的正是在那里所做的。 没有内部分裂。这只是一个示例,显示了如何在pytorch中完成某些操作而不会造成不必要的混乱。

CIFAR10/CIFAR100之类的某些数据集仅带有训练/测试集,通常规范只是训练然后对示例中的测试集进行评估。但是,没有什么可以阻止您随意分割训练集的,这取决于您。在此类教程中,他们只是试图使所有内容尽可能简单。