如何理解Python中的pyTorch权重衰减与L2范数正则化
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍"如何理解Python中的pyTorch权重衰减与L2范数正则化",在日常操作中,相信很多人在如何理解Python中的pyTorch权重衰减与L2范数正则化问题上存在疑惑,小编查阅了各
千家信息网最后更新 2025年01月31日如何理解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安全错误
数据库的锁怎样保障安全
闪电王服务器连接不上
社保管理客户端服务器异常
美团商品数据库
node数据库设置
服务器一年电费
北京易诚互动网络技术
开发一个系统需要服务器吗
杨浦区创新数据库销售
数据库什么情况下使用单用户
网贷是网络安全
手机显示服务器不可用
北京兆物网络技术有限公司
岳阳市教育网络安全网
滑块和爬虫数据库
数据库系统的数据管理能力
国内外软件开发发展现状
二道区网络技术服务质量保证
2018三级数据库激活码
个人信息数据库核心
节假日网络安全保障制度
数据库强关联
江西联通网络安全部
如何改善酒店数据库
江苏军工时间同步服务器
超狼网络技术有限公司招聘
赣州稳定服务器要多少费用
软件开发流程面试题
北京大数据库安全
开启数据库的cmd命令行
网络安全是否应该被建议学习