Pytorch 之torch.nn进阶第1关:正则化

经过“ Pytorch 之 torch.nn初探“ 实训的学习,想必同学们对torch.nn有了一个初步的认识。接下来,本实训将介绍更多内容帮助同学们运用神经网络的特性。

任务描述

本关任务:

本关提供了一个Variable 类型的变量input,要求利用BatchNorm1d创建一个4维的 带有学习参数的正则化量 m,并输出其weightbias

相关知识

正则化项即罚函数,该项对模型向量进行“惩罚”,从而避免单纯最小二乘问题的过拟合问题。在本节中,我们将介绍正则化方面的知识,这有助于预防过拟合的问题的产生。

首先,先引入我们要使用的包

 
  1. import torch
  2. import torch.nn
  3. from torch.autograd import Variable

BatchNorm

BatchNorm 描述
BatchNorm1d 将2维或3维的输入视为mini-batch,应用 Batch 正则化
BatchNorm2d 将4维的输入视为3维的mini-batch,应用 Batch 正则化
BatchNorm3d 将5维的输入视为4维的mini-batch,应用 Batch 正则化
下面以
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PyTorch中,可以使用weight_decay参数来实现L2正则化。同时,由于CrossEntropyLoss已经包含了Softmax操作,因此不需要在模型中额外添加Softmax层。 下面是一个使用CrossEntropyLoss和L2正则化的例子: ```python import torch import torch.nn as nn import torch.optim as optim # 定义模型 class MyModel(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(MyModel, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.fc2 = nn.Linear(hidden_size, output_size) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x # 定义超参数 input_size = 10 hidden_size = 20 output_size = 5 learning_rate = 0.01 weight_decay = 0.001 epochs = 10 # 创建模型和优化器 model = MyModel(input_size, hidden_size, output_size) optimizer = optim.SGD(model.parameters(), lr=learning_rate, weight_decay=weight_decay) loss_fn = nn.CrossEntropyLoss() # 准备数据 X = torch.randn(100, input_size) y = torch.randint(0, output_size, (100,)) # 训练模型 for epoch in range(epochs): # 前向传播和计算损失 logits = model(X) loss = loss_fn(logits, y) # 反向传播和更新参数 optimizer.zero_grad() loss.backward() optimizer.step() # 打印训练信息 if epoch % 1 == 0: print("Epoch [{}/{}], Loss: {:.4f}".format(epoch+1, epochs, loss.item())) ``` 在这个例子中,我们将L2正则化的超参数设为0.001,即weight_decay=0.001。在优化器中使用weight_decay参数即可实现L2正则化

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ad_m1n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值