训练集(train data)、验证集(validation data)和测试集(test data)

数据集涉及到训练集(train data)、验证集(validation data)和测试集(test data)。
利用训练集(train data)来训练出最好的网络权重,但怎么保证训练过程中参数的更新方向是有效的呢?于是用验证集(validation data)在训练的时候边训练边验证,相当于训练的时候是根据验证集的效果得到反馈,继而可以及时地往对的方向更新权重参数。
举个例子,网络模型就是需要拿着你给的一大堆数据在黑暗中摸索出一条可以到达数据对应标签的路径,怎么保证这个摸索过程是有效可行的呢?有可能一摸黑就偏离大道了。验证集就像一个黑暗中的提醒者,一旦你没训练好,它就喊一句,偏了偏了,这时候你就能及时调整,走向正确的道路。
测试集(test data)则是对训练好的网络进行测试,看看你最终训练完成的模型效果怎么样。
还是上面那个例子,训练结束了就好比天亮了,测试集就是一个拿着标尺的检查者,它能够清楚定量地对你摸黑走出的路进行评估。
当然,还是下面这个经典的比喻更好。

训练集相当于上课学知识
验证集相当于课后的的练习题,用来纠正和强化学到的知识
测试集相当于期末考试,用来最终评估学习效果

深度学习结构_边训练边验证和训练完之后验证-CSDN博客

在C++中,可以使用随机数生成器或者手动指定数据集的方式将数据集划分为训练集验证集测试集。 下面是一个简单的示例代码,演示了如何使用随机数生成器将数据集划分为训练集验证集测试集: ```c++ #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { // 生成数据集 vector<int> data_set(1000); for (int i = 0; i < data_set.size(); i++) { data_set[i] = i; } // 将数据集随机打乱 random_shuffle(data_set.begin(), data_set.end()); // 划分数据集 int train_size = 700; int valid_size = 200; int test_size = 100; vector<int> train_set(data_set.begin(), data_set.begin() + train_size); vector<int> valid_set(data_set.begin() + train_size, data_set.begin() + train_size + valid_size); vector<int> test_set(data_set.begin() + train_size + valid_size, data_set.begin() + train_size + valid_size + test_size); // 输出数据集大小 cout << "Train set size: " << train_set.size() << endl; cout << "Validation set size: " << valid_set.size() << endl; cout << "Test set size: " << test_set.size() << endl; return 0; } ``` 在上面的代码中,我们先生成了一个大小为1000的数据集,然后使用 `random_shuffle` 函数将数据集随机打乱。接着,我们指定了训练集大小为700,验证集大小为200,测试集大小为100,并使用 `vector` 类型将数据集划分为训练集验证集测试集。最后,我们输出了每个数据集的大小。 当然,还有其他的方式可以进行数据集的划分,例如使用交叉验证等方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值