Pytorch -> 过拟合

检测过拟合 —— 交叉验证

  • 验证集,用来挑选模型参数(超参数),不参与训练
  • 测试集只用来测试,与验证集操作相同,只是数据集不同
# train=True
train_db = datasets.MNIST('../data', train=True, download=True,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,), (0.3081,))
                   ]))
# train和val划分
train_db, val_db = torch.utils.data.random_split(train_db, [50000,10000])

train_loader = torch.utils.data.DataLoader(train_db, batch_size=batch_size, shuffle=True)

val_loader = torch.utils.data.DataLoader(val_db, batch_size=batch_size, shuffle=True)

减少过拟合

  1. 更多数据
  2. 模型约束(变浅和正则化)
  3. dropout
  4. 数据增强
  5. 提前结束
optimizer = optim.SGD(net.parameters(), lr=learning_rate, weight_decay=0.01)

# L1范数
re_loss = 0
for param in model.parameters():
    re_loss += torch.sum(torch.abs(param))

loss = criteon(logits,y) + 0.01*reloss

optimizer.zero_grad()
loss.backward()
optimizer.step()

动量加速

optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum=0.9)

Dropout

net_dropped = torch.nn.Sequential(
                torch.nn.Linear(784,200),
                torch.nn.Dropout(0.5),
                torch.nn.ReLU())

BN层

方便调参、稳定、收敛加快、更好的表现

每个通道都有一个μ和σ

β和γ用来改变分布,学习出来的

 

# 与通道数一致
BN = nn.BatchNorm2d(3)

nn.Module

  1. 所有layer的父类,提供函数
  2. 提供容器
  3. 提供参数,传入函数方便
    • list(XX.parameters())[0]
    • list(XX.named_parameters())
    • dict(XX.named_parameters()).items()
  4. 根节点和子节点,调用方便
  5. cpu转换成gpu方便
  6. save和load
  7. train和test
  8. 自定义层 —— 例如定义打平类放入网络类,只有类才能放入类
  9. 自定义类 —— nn.Parameter(),这样参数就可以用优化器优化了

     

数据增强 —— 旋转、裁剪、随即移动、GAN、缩放、加噪声

都在torch.utils.data.DataLoader的参数设置里

缩放:

Pytorch transforms.Resize()的简单用法_xiongxyowo的博客-CSDN博客_transforms.resize

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值