深度学习总结(四)——正则项系数、Batch_size设置

本文介绍了深度学习中正则项系数(λ)和Batch Size的设置策略。对于正则项系数,建议从0开始,先确定合适的学习率,再通过验证准确率进行粗调和细调。对于Batch Size,全数据集适用于小数据集,而Mini-batch适合大规模数据,平衡计算效率与模型优化。Mini-batch大小的选择需考虑数据集规模和计算设备能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述


1. 正则项系数(λ)的设置

建议一开始将正则项系数λ设置为0,先确定一个比较好的learning rate。然后固定该learning rate,给λ一个值(比如1.0),然后根据validation accuracy,将λ增大或者减小10倍(增减10倍是粗调节,当你确定了λ的合适的数量级后,比如λ = 0.01,再进一步地细调节,比如调节为0.02,0.03,0.009之类。)

2. Batch size三种情况

Batch_Size(批尺寸)是机器学习中一个重要参数。

  1. 如果数据集比较小,完全可以采用全数据集 ( Full Batch Learning )的形式,这样做至少有 2 个好处:其一,由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。其二,由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。
  2. Batch_Size = 1。这就是在线学习(Online Learning)。使用在
### 深度学习中的训练集与验证集 #### 训练集的作用 在深度学习领域,训练集(Training Set)主要用于模型的学习过程。通过这个集合,算法可以识别输入特征与目标输出之间的关系,并据此调整内部参数以最小化预测误差。具体来说,在每次迭代中,模型会接收一批来自训练集的数据样本作为输入,经过前向传播计算损失函数值之后再执行反向传播来更新权重和其他可调参数[^2]。 ```python import torch from torch.utils.data import DataLoader, random_split from torchvision.datasets import MNIST from torchvision.transforms import ToTensor # 加载MNIST数据集并转换为张量形式 dataset = MNIST(root='./data', train=True, download=True, transform=ToTensor()) # 将整个数据集划分为训练子集和验证子集 train_size = int(0.8 * len(dataset)) val_size = len(dataset) - train_size train_dataset, val_dataset = random_split(dataset, [train_size, val_size]) # 创建DataLoader实例用于批量加载数据 batch_size = 64 train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) ``` #### 验证集的功能 不同于训练集的是,验证集(Validation Set)并不参与实际的参数优化流程;相反,它被用来评估不同配置下的模型表现情况——比如改变隐藏层数目、激活函数种类或是正则项系数等超参设置的效果如何。更重要的是,借助验证集可以帮助检测是否存在过拟合现象,从而指导后续改进措施的选择,例如提前终止训练或应用Dropout技术防止复杂度过高引发的记忆型学习行为[^3][^4]。 ```python def evaluate_model(model, dataloader): model.eval() # 切换至评估模式 correct = 0 total = 0 with torch.no_grad(): # 关闭自动求导机制提高效率 for images, labels in dataloader: outputs = model(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() accuracy = 100 * correct / total return accuracy # 使用验证集评估模型性能 val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False) accuracy = evaluate_model(your_trained_model, val_loader) print(f'Accuracy on validation set: {accuracy:.2f}%') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值