千家信息网

如何理解Python中的pyTorch权重衰减与L2范数正则化

发表于:2024-10-26 作者:千家信息网编辑
千家信息网最后更新 2024年10月26日,这篇文章主要介绍"如何理解Python中的pyTorch权重衰减与L2范数正则化",在日常操作中,相信很多人在如何理解Python中的pyTorch权重衰减与L2范数正则化问题上存在疑惑,小编查阅了各
千家信息网最后更新 2024年10月26日如何理解Python中的pyTorch权重衰减与L2范数正则化

这篇文章主要介绍"如何理解Python中的pyTorch权重衰减与L2范数正则化",在日常操作中,相信很多人在如何理解Python中的pyTorch权重衰减与L2范数正则化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何理解Python中的pyTorch权重衰减与L2范数正则化"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

下面进行一个高维线性实验

假设我们的真实方程是:

假设feature数200,训练样本和测试样本各20个

模拟数据集

num_train,num_test = 10,10num_features = 200true_w = torch.ones((num_features,1),dtype=torch.float32) * 0.01true_b = torch.tensor(0.5)samples = torch.normal(0,1,(num_train+num_test,num_features))noise = torch.normal(0,0.01,(num_train+num_test,1))labels = samples.matmul(true_w) + true_b + noisetrain_samples, train_labels= samples[:num_train],labels[:num_train]test_samples, test_labels = samples[num_train:],labels[num_train:]

定义带正则项的loss function

def loss_function(predict,label,w,lambd):    loss = (predict - label) ** 2    loss = loss.mean() + lambd * (w**2).mean()    return loss

画图的方法

def semilogy(x_val,y_val,x_label,y_label,x2_val,y2_val,legend):    plt.figure(figsize=(3,3))    plt.xlabel(x_label)    plt.ylabel(y_label)    plt.semilogy(x_val,y_val)    if x2_val and y2_val:        plt.semilogy(x2_val,y2_val)        plt.legend(legend)    plt.show()

拟合和画图

def fit_and_plot(train_samples,train_labels,test_samples,test_labels,num_epoch,lambd):    w = torch.normal(0,1,(train_samples.shape[-1],1),requires_grad=True)    b = torch.tensor(0.,requires_grad=True)    optimizer = torch.optim.Adam([w,b],lr=0.05)    train_loss = []    test_loss = []    for epoch in range(num_epoch):        predict = train_samples.matmul(w) + b        epoch_train_loss = loss_function(predict,train_labels,w,lambd)        optimizer.zero_grad()        epoch_train_loss.backward()        optimizer.step()        test_predict = test_sapmles.matmul(w) + b        epoch_test_loss = loss_function(test_predict,test_labels,w,lambd)        train_loss.append(epoch_train_loss.item())        test_loss.append(epoch_test_loss.item())    semilogy(range(1,num_epoch+1),train_loss,'epoch','loss',range(1,num_epoch+1),test_loss,['train','test'])


可以发现加了正则项的模型,在测试集上的loss确实下降了

到此,关于"如何理解Python中的pyTorch权重衰减与L2范数正则化"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

正则 权重 学习 方法 更多 样本 帮助 测试 实用 接下来 数据 文章 方程 模型 理论 知识 篇文章 线性 网站 资料 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 大庆几软件开发 阿姆斯特丹超级数据库 网络安全文明上网手抄报字 数据库表名有一样的吗 在网页中显示数据库记录条数 29服务器 数据库技术在生活中应用的例子 微软软件开发语言 统筹管理网络安全工作 有线电视网络技术 软件开发 瀑布式 灵敏型 韩国服务器租用多少钱一年 我的世界服务器日志在哪个文件夹 分离一个单元格两行数据库 有其屋厦门互联网科技有限公司 可以测速的ip服务器 上海安卓软件开发收费报价表 服务器管理信息平台 怎么判定网络安全 农安智能化网络技术咨询有哪些 服务器桌面不显示驱动 达梦数据库安装镜像挂载失败 以网络安全为主题的议论文题目 select数据库啥意思 三星1066服务器内存能超频吗 五年制大专软件开发好找工作吗 服务器管理控制台叫什么用 金山区创新软件开发厂家资格 郑州导航软件开发 数据库怎么改utf-8
0