首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则化-a与-l2-正则化

正则化-a与-l2-正则化
EN

Stack Overflow用户
提问于 2022-07-17 09:07:16
回答 1查看 68关注 0票数 0

对于CONV2D L2惩罚计算,代码使用p参数。l2_penalty = l2_lambda * sum([(p**2).sum() for p in conv_layer.parameters()])

这里的p变量是什么,并为什么迭代?根据我的发现,conv_layer.parameters()返回p的2个张量。迭代中的第一个p是输出张量.But,迭代中的第二个p张量是什么?

守则如下:

代码语言:javascript
复制
import torch.nn as nn

loss_func = nn.BCELoss()

loss = loss_func(torch.tensor([0.9]), torch.tensor([1.0]))

l2_lambda = 0.001

conv_layer = nn.Conv2d(in_channels=3,out_channels=5,kernel_size=5)

l2_penalty = l2_lambda * sum([(p**2).sum() for p in conv_layer.parameters()])

loss_with_penalty = loss + l2_penalty

linear_layer = nn.Linear(10, 16)

l2_penalty = l2_lambda * sum([(p**2).sum() for p in linear_layer.parameters()])

loss_with_penalty = loss + l2_penalty
EN

回答 1

Stack Overflow用户

发布于 2022-07-17 10:03:29

首先,在PyTorch中正则化的首选方法是在优化器中使用weight_decay参数,重量衰减和L2正则化之间可能有一些小的差异,但是应该会得到类似的效果。

conv_layer.parameters()通常会输出超过2个conv层张量参数的迭代器-权重和偏差.您还可以运行conv_layer.named_parameters()来获得一个具有名称和键的dict,这将有助于您理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73010521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档