深度学习结构

1. 数据集

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

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

说完了含义,再来说说划分。
在这里插入图片描述
常用的分配比例是训练集:验证集:测试集=6:2:2
这种划分会带来一些问题。想想看,一旦选定了划分比例,就只能对整个数据集中训练集的那部分进行训练,如果没有提前划分好,导致训练集中的数据没有囊括所有类型,那最后得到的模型肯定是无法对不同情形的样本进行拟合或分类的。也就是说这种将数据集划分成训练集和测试集的验证方式很大程度上依赖于你的划分方式,无法对所有的样本数据进行训练。
因此有了交叉验证(cross-validation)法
在这里插入图片描述
可以看到,交叉验证是将已经划分好的train data再进行细分,比如5折交叉验证会将train data细分成5份,然后在这5份里选一份作为验证集,剩下的作为训练集,这一个iteration结束之后会计算准确率,再更换验证集,重复5次,直到所有的小fold都作为过一次验证集。最后取这5次准确率最高的模型。
按照前面考试的例子,交叉验证就是将验证集进行了扩展,以前可能是月考模拟,现在是日考模拟,但最终的测试集(高考)还是有且仅有一次的。

2. 训练

初始化
数据集准备好之后就是选取网络模型并进行权重参数的初始化。由于参数初始化是随机的,这会导致相同的超参数模型得到的结果有细微不同,也就是无法重现模型,因此有需要可以固定随机数种子再初始化。
损失函数
损失函数衡量的是模型的输出和真实预期之间的差距。
优化方式
优化就是寻找一种方式,使得损失函数越小越好。
典型的比如基于梯度的SGD(随机梯度 下降),在这种方法里为了求梯度,需要用到反向传播算法。
关于batch size,epoch,iteration
在这里插入图片描述
首先epoch和iteration衡量的都是训练次数,不过epoch是整个train data训练完才计一次数。而iteration是batch size大小的样本训练完计数一次。
batch衡量的是样本大小,是train data中的一小部分数据。
比如一个训练集大小为2000,batch size是200,那么一个epoch需要10个iteration才能完成。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习代码文件结构可以根据个人的喜好和项目需求进行设计,但通常会包含以下几个常见的组件和文件夹[^1][^2]: 1. 数据集(Dataset):用于存放训练验证和测试数据的文件夹。可以根据需要创建不同的子文件夹来存放不同类别或不同数据集。 2. 数据预处理(Data Preprocessing):用于对数据进行预处理的代码文件或文件夹。包括数据加载、数据增强、数据转换等操作。 3. 模型定义(Model Definition):用于定义深度学习模型的代码文件或文件夹。包括模型的网络结构、层定义、参数初始化等。 4. 损失函数(Loss Function):用于定义模型的损失函数的代码文件或文件夹。包括常见的交叉熵损失、均方误差损失等。 5. 优化器(Optimizer):用于定义模型的优化器的代码文件或文件夹。包括常见的随机梯度下降(SGD)、Adam等优化算法。 6. 训练(Training):用于进行模型训练的代码文件或文件夹。包括训练循环、批量训练、模型保存等。 7. 验证和测试(Validation and Testing):用于进行模型验证和测试的代码文件或文件夹。包括验证集和测试集的评估、模型加载等。 8. 实用工具(Utilities):用于存放一些实用工具函数或类的代码文件或文件夹。包括数据可视化、模型评估等。 9. 配置文件(Configuration):用于存放项目的配置文件的文件夹。包括模型超参数、训练参数等。 10. 日志和结果(Logs and Results):用于存放训练过程中的日志和结果的文件夹。包括训练日志、模型权重、评估结果等。 这些组件和文件夹可以根据实际需求进行调整和扩展,以适应不同的深度学习项目。同时,可以参考开源项目的代码结构,了解其他人是如何组织和管理深度学习代码的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值